This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: question about prctl return value type


* Yang Xu:

> Since kernel syscall use long value for return, why we set int in
> sys/prctl.h(glibc). as below:
>
> /include/sys/prctl.h
>
>    1 #ifndef _SYS_PRCTL_H
>    2 #include_next <sys/prctl.h>
>    3 
>    4 # ifndef _ISOMAC
>    5 
>    6 extern int __prctl (int __option, ...);
>    7 
>    8 # endif /* !_ISOMAC */
>    9 #endif

Note that the actual user-visible header is
sysdeps/unix/sysv/linux/sys/prctl.h, but it has the same issue.

> If we calling prctl(PR_SET_TIMERSLACK, ULONG_MAX) and then calling prctl(PR_GET_TIMERSLACK), the value
> will be truncated into INT_MAX(or convered into unsinged,it is UINT_MAX) on 64bit machine. Or, this is a 
> glibc limitation for prctl interfaces?

I think this is a glibc limitation/bug.  The return type should probably
be __register_t (a type that is currently woefully underused).  We
cannot simply change the return time because once applications are built
against the new prototype, we need to ensure that they also use the new
glibc.

Would you please file a bug for this?
<https://sourceware.org/bugzilla/> is our bug tracker.

Thanks,
Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]