This is the mail archive of the libc-alpha@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: [RFC v2 09/20] sysdeps/getrlimit: Use prlimit64 if avaliable


* Alistair Francis:

> If the prlimit64 syscall is avaliable let's use that instead of
> ugetrlimit as it isn't always avaliable (they aren't avaliable
> on RV32).

> diff --git a/sysdeps/unix/sysv/linux/getrlimit.c b/sysdeps/unix/sysv/linux/getrlimit.c
> index 10c0176619..741b065b25 100644
> --- a/sysdeps/unix/sysv/linux/getrlimit.c
> +++ b/sysdeps/unix/sysv/linux/getrlimit.c
> @@ -35,7 +35,16 @@
>  int
>  __new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlim)
>  {
> +#ifdef __ASSUME_RLIM64_SYSCALLS
> +  return INLINE_SYSCALL_CALL (prlimit64, 0, resource, rlim, NULL);
> +#else
> +# ifdef __NR_prlimit64
> +  long int ret = INLINE_SYSCALL_CALL (prlimit64, 0, resource, rlim, NULL);
> +  if (ret == 0 || errno != ENOSYS)
> +    return ret;
> +# endif
>    return INLINE_SYSCALL_CALL (ugetrlimit, resource, rlim);
> +#endif

I think that's not correct because with this change, defining
__ASSUME_RLIM64_SYSCALLS changes the struct expected by getrlimit.
I believe the expectation is that such definitions only alter the set of
system calls glibc assumes to be present.  They should not affect the
external glibc ABI exposed on its function call interface.

Thanks,
Florian


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