From: "Alejandro Colomar (man-pages)" <alx.manpages@gmail.com>
To: mtk.manpages@gmail.com
Cc: linux-man@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Zack Weinberg <zackw@panix.com>,
LKML <linux-kernel@vger.kernel.org>,
glibc <libc-alpha@sourceware.org>, GCC <gcc-patches@gcc.gnu.org>,
bpf <bpf@vger.kernel.org>, David Laight <David.Laight@ACULAB.COM>,
Joseph Myers <joseph@codesourcery.com>,
Florian Weimer <fweimer@redhat.com>,
Daniel Borkmann <daniel@iogearbox.net>
Subject: Re: [PATCH v3] bpf.2: Use standard types and attributes
Date: Sun, 16 May 2021 11:16:24 +0200 [thread overview]
Message-ID: <9df36138-f622-49a6-8310-85ff0470ccd6@gmail.com> (raw)
In-Reply-To: <20210515190116.188362-1-alx.manpages@gmail.com>
On 5/15/21 9:01 PM, Alejandro Colomar wrote:
> Some manual pages are already using C99 syntax for integral
> types 'uint32_t', but some aren't. There are some using kernel
> syntax '__u32'. Fix those.
>
> Both the kernel and the standard types are 100% binary compatible,
> and the source code differences between them are very small, and
> not important in a manual page:
>
> - Some of them are implemented with different underlying types
> (e.g., s64 is always long long, while int64_t may be long long
> or long, depending on the arch). This causes the following
> differences.
>
> - length modifiers required by printf are different, resulting in
> a warning ('-Wformat=').
>
> - pointer assignment causes a warning:
> ('-Wincompatible-pointer-types'), but there aren't any pointers
> in this page.
>
> But, AFAIK, all of those warnings can be safely ignored, due to
> the binary compatibility between the types.
>
> ...
>
> Some pages also document attributes, using GNU syntax
> '__attribute__((xxx))'. Update those to use the shorter and more
> portable C11 keywords such as 'alignas()' when possible, and C2x
> syntax '[[gnu::xxx]]' elsewhere, which hasn't been standardized
> yet, but is already implemented in GCC, and available through
> either --std=c2x or any of the --std=gnu... options.
>
> The standard isn't very clear on how to use alignas() or
> [[]]-style attributes, and the GNU documentation isn't better, so
> the following link is a useful experiment about the different
> alignment syntaxes:
> __attribute__((aligned())), alignas(), and [[gnu::aligned()]]:
> <https://stackoverflow.com/q/67271825/6872717>
>
> Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Discussion:
<https://lore.kernel.org/linux-man/6740a229-842e-b368-86eb-defc786b3658@gmail.com/T/>
> Nacked-by: Alexei Starovoitov <ast@kernel.org>
> Nacked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Acked-by: Zack Weinberg <zackw@panix.com>
> Cc: LKML <linux-kernel@vger.kernel.org>
> Cc: glibc <libc-alpha@sourceware.org>
> Cc: GCC <gcc-patches@gcc.gnu.org>
> Cc: bpf <bpf@vger.kernel.org>
> Cc: David Laight <David.Laight@ACULAB.COM>
> Cc: Joseph Myers <joseph@codesourcery.com>
> Cc: Florian Weimer <fweimer@redhat.com>
> Cc: Daniel Borkmann <daniel@iogearbox.net>
> ---
> man2/bpf.2 | 49 ++++++++++++++++++++++++-------------------------
> 1 file changed, 24 insertions(+), 25 deletions(-)
>
> diff --git a/man2/bpf.2 b/man2/bpf.2
> index 6e1ffa198..04b8fbcef 100644
> --- a/man2/bpf.2
> +++ b/man2/bpf.2
> @@ -186,41 +186,40 @@ commands:
> .PP
> .in +4n
> .EX
> -union bpf_attr {
> +union [[gnu::aligned(8)]] bpf_attr {
> struct { /* Used by BPF_MAP_CREATE */
> - __u32 map_type;
> - __u32 key_size; /* size of key in bytes */
> - __u32 value_size; /* size of value in bytes */
> - __u32 max_entries; /* maximum number of entries
> - in a map */
> + uint32_t map_type;
> + uint32_t key_size; /* size of key in bytes */
> + uint32_t value_size; /* size of value in bytes */
> + uint32_t max_entries; /* maximum number of entries
> + in a map */
> };
>
> - struct { /* Used by BPF_MAP_*_ELEM and BPF_MAP_GET_NEXT_KEY
> - commands */
> - __u32 map_fd;
> - __aligned_u64 key;
> + struct { /* Used by BPF_MAP_*_ELEM and BPF_MAP_GET_NEXT_KEY commands */
> + uint32_t map_fd;
> + uint64_t alignas(8) key;
> union {
> - __aligned_u64 value;
> - __aligned_u64 next_key;
> + uint64_t alignas(8) value;
> + uint64_t alignas(8) next_key;
> };
> - __u64 flags;
> + uint64_t flags;
> };
>
> struct { /* Used by BPF_PROG_LOAD */
> - __u32 prog_type;
> - __u32 insn_cnt;
> - __aligned_u64 insns; /* \(aqconst struct bpf_insn *\(aq */
> - __aligned_u64 license; /* \(aqconst char *\(aq */
> - __u32 log_level; /* verbosity level of verifier */
> - __u32 log_size; /* size of user buffer */
> - __aligned_u64 log_buf; /* user supplied \(aqchar *\(aq
> - buffer */
> - __u32 kern_version;
> - /* checked when prog_type=kprobe
> - (since Linux 4.1) */
> + uint32_t prog_type;
> + uint32_t insn_cnt;
> + uint64_t alignas(8) insns; /* \(aqconst struct bpf_insn *\(aq */
> + uint64_t alignas(8) license; /* \(aqconst char *\(aq */
> + uint32_t log_level; /* verbosity level of verifier */
> + uint32_t log_size; /* size of user buffer */
> + uint64_t alignas(8) log_buf; /* user supplied \(aqchar *\(aq
> + buffer */
> + uint32_t kern_version;
> + /* checked when prog_type=kprobe
> + (since Linux 4.1) */
> .\" commit 2541517c32be2531e0da59dfd7efc1ce844644f5
> };
> -} __attribute__((aligned(8)));
> +};
> .EE
> .in
> .\"
>
--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/
next prev parent reply other threads:[~2021-05-16 9:16 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-23 23:06 [RFC] bpf.2: Use standard types and attributes Alejandro Colomar
2021-04-23 23:20 ` Alexei Starovoitov
2021-04-24 17:56 ` Alejandro Colomar (man-pages)
2021-04-25 16:52 ` Alexei Starovoitov
2021-04-25 19:12 ` Zack Weinberg
2021-04-24 20:43 ` David Laight
2021-04-25 19:16 ` Zack Weinberg
2021-04-25 21:09 ` David Laight
2021-04-26 17:19 ` Joseph Myers
2021-04-26 17:46 ` Alejandro Colomar (man-pages)
2021-05-04 11:05 ` [RFC v2] " Alejandro Colomar
2021-05-04 14:12 ` Alexei Starovoitov
2021-05-04 14:24 ` Greg KH
2021-05-04 15:53 ` Alejandro Colomar (man-pages)
2021-05-04 16:06 ` Greg KH
2021-05-04 18:37 ` Zack Weinberg
2021-05-04 18:54 ` Alejandro Colomar (man-pages)
2021-05-04 19:45 ` Florian Weimer
2021-05-04 19:59 ` Alejandro Colomar (man-pages)
2021-05-05 8:23 ` David Laight
2021-05-05 22:22 ` Joseph Myers
2021-05-04 20:06 ` Daniel Borkmann
2021-05-04 20:16 ` Alejandro Colomar (man-pages)
2021-05-04 20:33 ` Zack Weinberg
2021-05-04 21:23 ` Alexei Starovoitov
2021-05-15 19:01 ` [PATCH v3] " Alejandro Colomar
2021-05-16 9:16 ` Alejandro Colomar (man-pages) [this message]
2021-05-17 18:56 ` Daniel Borkmann
2021-05-21 11:12 ` Alejandro Colomar
2021-05-04 16:08 ` [RFC v2] " Daniel Borkmann
2022-08-24 18:55 ` [PATCH v3] Many pages: Document fixed-width types with ISO C naming Alejandro Colomar
2022-08-24 22:40 ` Alexei Starovoitov
2022-08-24 23:36 ` Alejandro Colomar
2022-08-25 0:52 ` Linus Torvalds
2022-08-25 7:20 ` Alejandro Colomar
2022-08-25 7:28 ` Xi Ruoyao
2022-08-25 7:48 ` Alejandro Colomar
2022-08-25 8:09 ` Xi Ruoyao
2022-08-25 7:42 ` Linus Torvalds
2022-08-25 7:59 ` Alejandro Colomar
2022-08-25 5:57 ` Greg Kroah-Hartman
2022-08-25 6:41 ` Florian Weimer
2022-08-25 7:27 ` Linus Torvalds
2022-08-25 14:38 ` Joseph Myers
2022-08-25 15:01 ` David Laight
2022-08-25 15:37 ` Joseph Myers
2022-08-25 16:43 ` Linus Torvalds
2022-08-25 7:44 ` Alejandro Colomar
2022-08-25 8:04 ` Alejandro Colomar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9df36138-f622-49a6-8310-85ff0470ccd6@gmail.com \
--to=alx.manpages@gmail.com \
--cc=David.Laight@ACULAB.COM \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=fweimer@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=gregkh@linuxfoundation.org \
--cc=joseph@codesourcery.com \
--cc=libc-alpha@sourceware.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=zackw@panix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).