[PATCH v5 00/35] SYNOPSIS: Use syscall(SYS_...); and fix '#include's
Alejandro Colomar (man-pages)
alx.manpages@gmail.com
Mon Apr 12 09:09:24 GMT 2021
Hi Florian,
On 4/12/21 8:17 AM, Florian Weimer wrote:
> * Michael Kerrisk via Libc-alpha:
>
>> So, I think I'm okay with the syscall() changes in the SYNOPSIS.
>> It might just take me a moment to get used to them. However, I do
>> wonder if it is worth retaining a comment in the SYSNOPSIS,
>> something like:
>>
>> SYNOPSIS
>> #include <asm/prctl.h> /* Definition of ARCH_* constants */
>> #include <sys/syscall.h> /* Definition of SYS_* constants */
>> #include <unistd.h>
>>
>> int syscall(SYS_arch_prctl, int code, unsigned long addr);
>> int syscall(SYS_arch_prctl, int code, unsigned long *addr);
>>
>> Note: glibc provides no wrapper for arch_prctl(), necessitating
>> the use of syscall(2).
>>
>> Without something like this, the reader may be puzzled at the use of
>> syscall().
>>
>> What do you think?
>
> Would it be possible to use real C syntax?
>
> int code;
> unsigned long addr;
> int result;
> result = syscall (SYS_arch_prctl, code, addr);
> result = syscall (SYS_arch_prctl, code, &addr);
I think that adds too many lines, and doesn't add much value. Yes, it
provides pure C syntax, which might be a bit easier to understand, but
is it worth it?
I followed the syntax already used by some manual pages such as the
ioctl_*(2) pages (see ioctl_fat(2) for example), although I must admit
it was a bit rare the first time I saw it; but I think it's a good
compromise between being short and providing information.
I think the EXAMPLES section can better clarify how to use the function
if there're any doubts.
>
> Or perhaps omit the result variable:
>
> int code;
> unsigned long addr;
> syscall (SYS_arch_prctl, code, addr);
That wouldn't provide the reader with the info about which type should
he expect as return; the most important part being the signedness of the
type.
On 4/12/21 8:39 AM, Jakub Wilk wrote:
>>
>
> Or, more succinctly, put the types in comments:
>
> syscall(SYS_arch_prctl, /* int */ code, /* unsigned long */ addr);
I'm not sure. I see the point in doing this, but I think I prefer my
version, because it has less noise. But I might be a bit biased :)
Thanks,
Alex
--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/
More information about the Libc-alpha
mailing list