1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-19 22:50:17 +03:00

missing: add quotactl_fd() wrapper

This commit is contained in:
Lennart Poettering 2025-01-10 11:33:03 +01:00
parent f91f1eda08
commit 7adafb0832
4 changed files with 86 additions and 0 deletions

View File

@ -677,6 +677,7 @@ foreach ident : [
['pidfd_spawn', '''#include <spawn.h>'''],
['strerrorname_np', '''#include <string.h>'''],
['getrandom', '''#include <sys/random.h>'''],
['quotactl_fd', '''#include <sys/quota.h>'''],
]
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')

View File

@ -685,3 +685,19 @@ int __clone2(int (*fn)(void *), void *stack_base, size_t stack_size, int flags,
* at build time) and just define it. Once the kernel drops ia64 support, we can drop this too. */
#define HAVE_CLONE 1
#endif
/* ======================================================================= */
#if !HAVE_QUOTACTL_FD
static inline int missing_quotactl_fd(int fd, int cmd, int id, void *addr) {
#if defined __NR_quotactl_fd
return syscall(__NR_quotactl_fd, fd, cmd, id, addr);
#else
errno = ENOSYS;
return -1;
#endif
}
# define quotactl_fd missing_quotactl_fd
#endif

View File

@ -1197,3 +1197,71 @@ assert_cc(__NR_statx == systemd_NR_statx);
# endif
# endif
#endif
#ifndef __IGNORE_quotactl_fd
# if defined(__aarch64__)
# define systemd_NR_quotactl_fd 443
# elif defined(__alpha__)
# define systemd_NR_quotactl_fd 553
# elif defined(__arc__) || defined(__tilegx__)
# define systemd_NR_quotactl_fd 443
# elif defined(__arm__)
# define systemd_NR_quotactl_fd 443
# elif defined(__i386__)
# define systemd_NR_quotactl_fd 443
# elif defined(__ia64__)
# define systemd_NR_quotactl_fd 1467
# elif defined(__loongarch_lp64)
# define systemd_NR_quotactl_fd 443
# elif defined(__m68k__)
# define systemd_NR_quotactl_fd 443
# elif defined(_MIPS_SIM)
# if _MIPS_SIM == _MIPS_SIM_ABI32
# define systemd_NR_quotactl_fd 4443
# elif _MIPS_SIM == _MIPS_SIM_NABI32
# define systemd_NR_quotactl_fd 6443
# elif _MIPS_SIM == _MIPS_SIM_ABI64
# define systemd_NR_quotactl_fd 5443
# else
# error "Unknown MIPS ABI"
# endif
# elif defined(__hppa__)
# define systemd_NR_quotactl_fd 443
# elif defined(__powerpc__)
# define systemd_NR_quotactl_fd 443
# elif defined(__riscv)
# if __riscv_xlen == 32
# define systemd_NR_quotactl_fd 443
# elif __riscv_xlen == 64
# define systemd_NR_quotactl_fd 443
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__)
# define systemd_NR_quotactl_fd 443
# elif defined(__sparc__)
# define systemd_NR_quotactl_fd 443
# elif defined(__x86_64__)
# if defined(__ILP32__)
# define systemd_NR_quotactl_fd (443 | /* __X32_SYSCALL_BIT */ 0x40000000)
# else
# define systemd_NR_quotactl_fd 443
# endif
# elif !defined(missing_arch_template)
# warning "quotactl_fd() syscall number is unknown for your architecture"
# endif
/* may be an (invalid) negative number due to libseccomp, see PR 13319 */
# if defined __NR_quotactl_fd && __NR_quotactl_fd >= 0
# if defined systemd_NR_quotactl_fd
assert_cc(__NR_quotactl_fd == systemd_NR_quotactl_fd);
# endif
# else
# if defined __NR_quotactl_fd
# undef __NR_quotactl_fd
# endif
# if defined systemd_NR_quotactl_fd && systemd_NR_quotactl_fd >= 0
# define __NR_quotactl_fd systemd_NR_quotactl_fd
# endif
# endif
#endif

View File

@ -20,6 +20,7 @@ SYSCALLS = [
'pidfd_open',
'pidfd_send_signal',
'pkey_mprotect',
'quotactl_fd',
'renameat2',
'setns',
'statx',