mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-11 22:00:08 +00:00
8e900969db
Fix the RLIM_INFINITY and RLIM64_INFINITY constants on alpha to match the kernel one and all other architectures. Change the getrlimit, getrlimit64, setrlimit, setrlimit64 into old compat symbols, and provide the Linux generic functions as GLIBC_2_27 version. Changelog: * sysdeps/unix/sysv/linux/getrlimit64.c [USE_VERSIONED_RLIMIT]: Do not define getrlimit and getrlimit64 as weak aliases of __getrlimit64. Define __GI_getrlimit64 as weak alias of __getrlimit64. [__RLIM_T_MATCHES_RLIM64_T]: Do not redefine SHLIB_COMPAT, use #elif instead. * sysdeps/unix/sysv/linux/setrlimit64.c [USE_VERSIONED_RLIMIT]: Do not define setrlimit and setrlimit64 as weak aliases of __setrlimit64. * sysdeps/unix/sysv/linux/alpha/bits/resource.h (RLIM_INFINITY, RLIM64_INFINITY): Fix values to match the kernel ones. * sysdeps/unix/sysv/linux/alpha/getrlimit64.c: Define USE_VERSIONED_RLIMIT. Rename __getrlimit64 into __old_getrlimit64 and provide it as getrlimit@@GLIBC_2_0 and getrlimit64@@GLIBC_2_1. Add a __getrlimit64 function and provide it as getrlimit@@GLIBC_2_27 and getrlimit64@@GLIBC_2_27. * sysdeps/unix/sysv/linux/alpha/setrlimit64.c: Ditto with setrlimit and setrlimit64. * sysdeps/unix/sysv/linux/alpha/libc.abilist (GLIBC_2.27): Add getrlimit, setrlimit, getrlimit64 and setrlimit64. * sysdeps/unix/sysv/linux/alpha/Versions (libc): Add getrlimit, setrlimit, getrlimit64 and setrlimit64.
55 lines
1.9 KiB
C
55 lines
1.9 KiB
C
/* Linux setrlimit64 implementation (64 bits off_t).
|
|
Copyright (C) 2010-2018 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
#include <errno.h>
|
|
#include <sys/types.h>
|
|
#include <shlib-compat.h>
|
|
|
|
/* Add this redirection so the strong_alias for __RLIM_T_MATCHES_RLIM64_T
|
|
linking setrlimit64 to {__}setrlimit does not throw a type error. */
|
|
#undef setrlimit
|
|
#undef __setrlimit
|
|
#define setrlimit setrlimit_redirect
|
|
#define __setrlimit __setrlimit_redirect
|
|
#include <sys/resource.h>
|
|
#undef setrlimit
|
|
#undef __setrlimit
|
|
|
|
/* Set the soft and hard limits for RESOURCE to *RLIMITS.
|
|
Only the super-user can increase hard limits.
|
|
Return 0 if successful, -1 if not (and sets errno). */
|
|
int
|
|
__setrlimit64 (enum __rlimit_resource resource, const struct rlimit64 *rlimits)
|
|
{
|
|
return INLINE_SYSCALL_CALL (prlimit64, 0, resource, rlimits, NULL);
|
|
}
|
|
/* Alpha defines a versioned setrlimit{64}. */
|
|
#ifndef USE_VERSIONED_RLIMIT
|
|
weak_alias (__setrlimit64, setrlimit64)
|
|
#endif
|
|
|
|
#if __RLIM_T_MATCHES_RLIM64_T
|
|
strong_alias (__setrlimit64, __setrlimit)
|
|
# ifndef USE_VERSIONED_RLIMIT
|
|
weak_alias (__setrlimit64, setrlimit)
|
|
# endif
|
|
# ifdef SHARED
|
|
__hidden_ver1 (__setrlimit64, __GI___setrlimit, __setrlimit64);
|
|
# endif
|
|
#endif
|