question about prctl return value type

Yang Xu
Wed Jul 24 10:01:00 GMT 2019

Hi All

Since kernel syscall use long value for return, why we set int in sys/prctl.h(glibc). as below:


   1 #ifndef _SYS_PRCTL_H
   2 #include_next <sys/prctl.h>
   4 # ifndef _ISOMAC
   6 extern int __prctl (int __option, ...);
   8 # endif /* !_ISOMAC */
   9 #endif

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?

ps:After kernel commit da8b44d5a9f ("timer: convert timer_slack_ns from unsigned long to u64"),
we limit under ULONG_MAX when calling PR_GET_TIMERSLACK. I think we can use long instead of int in sys/prctl.h.

Yang Xu 

More information about the Libc-help mailing list