mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-03 02:11:08 +00:00
ce2bfb8569
These functions allow to posix_spawn and posix_spawnp to use CLONE_INTO_CGROUP with clone3, allowing the child process to be created in a different cgroup version 2. These are GNU extensions that are available only for Linux, and also only for the architectures that implement clone3 wrapper (HAVE_CLONE3_WRAPPER). To create a process on a different cgroupv2, one can use the: posix_spawnattr_t attr; posix_spawnattr_init (&attr); posix_spawnattr_setflags (&attr, POSIX_SPAWN_SETCGROUP); posix_spawnattr_setcgroup_np (&attr, cgroup); posix_spawn (...) Similar to other posix_spawn flags, POSIX_SPAWN_SETCGROUP control whether the cgroup file descriptor will be used or not with clone3. There is no fallback if either clone3 does not support the flag or if the architecture does not provide the clone3 wrapper, in this case posix_spawn returns EOPNOTSUPP. Checked on x86_64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
360 lines
6.4 KiB
Plaintext
360 lines
6.4 KiB
Plaintext
%include <time64-compat.h>
|
|
libc {
|
|
GLIBC_2.0 {
|
|
# functions used in inline functions or macros
|
|
__cmsg_nxthdr;
|
|
|
|
# functions used in other libraries
|
|
__clone;
|
|
|
|
# helper functions
|
|
__errno_location;
|
|
|
|
# b*
|
|
bdflush;
|
|
|
|
# c*
|
|
clone; create_module;
|
|
|
|
# d*
|
|
delete_module;
|
|
|
|
# g*
|
|
get_kernel_syms; getresgid; getresuid;
|
|
|
|
# i*
|
|
init_module;
|
|
|
|
# k*
|
|
klogctl;
|
|
|
|
# l*
|
|
llseek;
|
|
|
|
# m*
|
|
mremap;
|
|
|
|
# n*
|
|
nfsservctl;
|
|
|
|
# p*
|
|
personality; prctl;
|
|
|
|
# q*
|
|
query_module; quotactl;
|
|
|
|
# s*
|
|
setfsgid; setfsuid;
|
|
|
|
# s*
|
|
setresgid; setresuid; swapoff; swapon; sysctl; sysinfo;
|
|
|
|
# u*
|
|
umount; uselib;
|
|
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in inline functions or macros
|
|
__libc_sa_len;
|
|
|
|
# Since we have new signals this structure changed.
|
|
_sys_siglist; sys_siglist; sys_sigabbrev;
|
|
|
|
# New errlist.
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
|
|
# chown interface change.
|
|
chown;
|
|
|
|
# Change in pthread_attr_t.
|
|
pthread_attr_init;
|
|
|
|
# c*
|
|
capget; capset;
|
|
|
|
# n*
|
|
ntp_adjtime; ntp_gettime;
|
|
|
|
# u*
|
|
umount2;
|
|
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
}
|
|
GLIBC_2.2 {
|
|
# needed in other libraries.
|
|
__endmntent; __getmntent_r; __setmntent; __statfs; __sysctl;
|
|
|
|
# ipc ctl interface change.
|
|
semctl; shmctl; msgctl;
|
|
|
|
# Old symbol versions from libpthread.
|
|
__pread64;
|
|
__pwrite64;
|
|
lseek64;
|
|
open64;
|
|
pread;
|
|
pread64;
|
|
pwrite;
|
|
pwrite64;
|
|
}
|
|
GLIBC_2.2.1 {
|
|
# p*
|
|
pivot_root;
|
|
}
|
|
GLIBC_2.3 {
|
|
# r*
|
|
readahead;
|
|
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
}
|
|
GLIBC_2.3.2 {
|
|
# New kernel interfaces.
|
|
epoll_create; epoll_ctl; epoll_wait;
|
|
}
|
|
GLIBC_2.3.3 {
|
|
_sys_siglist;
|
|
gnu_dev_major;
|
|
gnu_dev_makedev;
|
|
gnu_dev_minor;
|
|
posix_fadvise64;
|
|
posix_fallocate64;
|
|
sys_sigabbrev;
|
|
sys_siglist;
|
|
|
|
# Changed timer_t. Only used by some 64-bit targets.
|
|
timer_create;
|
|
timer_delete;
|
|
timer_getoverrun;
|
|
timer_gettime;
|
|
timer_settime;
|
|
}
|
|
GLIBC_2.3.4 {
|
|
sched_getaffinity; sched_setaffinity;
|
|
}
|
|
GLIBC_2.4 {
|
|
inotify_init; inotify_add_watch; inotify_rm_watch;
|
|
|
|
unshare;
|
|
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
}
|
|
GLIBC_2.5 {
|
|
splice; tee; vmsplice;
|
|
}
|
|
GLIBC_2.6 {
|
|
epoll_pwait; sync_file_range; sched_getcpu;
|
|
}
|
|
GLIBC_2.7 {
|
|
eventfd; eventfd_read; eventfd_write; signalfd;
|
|
}
|
|
GLIBC_2.8 {
|
|
timerfd_create; timerfd_settime; timerfd_gettime;
|
|
}
|
|
GLIBC_2.9 {
|
|
epoll_create1; inotify_init1;
|
|
}
|
|
GLIBC_2.10 {
|
|
fallocate;
|
|
}
|
|
GLIBC_2.11 {
|
|
fallocate64;
|
|
}
|
|
GLIBC_2.12 {
|
|
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
|
|
|
|
ntp_gettimex;
|
|
|
|
recvmmsg;
|
|
}
|
|
GLIBC_2.13 {
|
|
prlimit; prlimit64;
|
|
|
|
fanotify_init; fanotify_mark;
|
|
}
|
|
GLIBC_2.14 {
|
|
clock_adjtime;
|
|
|
|
name_to_handle_at; open_by_handle_at;
|
|
|
|
setns;
|
|
|
|
sendmmsg;
|
|
}
|
|
GLIBC_2.15 {
|
|
process_vm_readv; process_vm_writev;
|
|
}
|
|
GLIBC_2.27 {
|
|
memfd_create;
|
|
mlock2;
|
|
pkey_alloc; pkey_free; pkey_set; pkey_get; pkey_mprotect;
|
|
}
|
|
GLIBC_2.29 {
|
|
getcpu;
|
|
}
|
|
GLIBC_2.30 {
|
|
getdents64; gettid; tgkill;
|
|
}
|
|
GLIBC_2.32 {
|
|
}
|
|
GLIBC_2.34 {
|
|
%ifdef TIME64_NON_DEFAULT
|
|
# 64-bit time_t support
|
|
__adjtime64;
|
|
___adjtimex64;
|
|
__aio_suspend_time64;
|
|
__clock_adjtime64;
|
|
__clock_getres64;
|
|
__clock_gettime64;
|
|
__clock_nanosleep_time64;
|
|
__clock_settime64;
|
|
__cnd_timedwait64;
|
|
__ctime64;
|
|
__ctime64_r;
|
|
__difftime64;
|
|
__fcntl_time64;
|
|
__fstat64_time64;
|
|
__fstatat64_time64;
|
|
__futimens64;
|
|
__futimes64;
|
|
__futimesat64;
|
|
__fts64_open_time64;
|
|
__fts64_close_time64;
|
|
__fts64_read_time64;
|
|
__fts64_set_time64;
|
|
__fts64_children_time64;
|
|
__ftw64_time64;
|
|
__nftw64_time64;
|
|
__gai_suspend_time64;
|
|
__getitimer64;
|
|
__getrusage64;
|
|
__getsockopt64;
|
|
__gettimeofday64;
|
|
__glob64_time64;
|
|
__globfree64_time64;
|
|
__gmtime64;
|
|
__gmtime64_r;
|
|
__ioctl_time64;
|
|
__localtime64;
|
|
__localtime64_r;
|
|
__lstat64_time64;
|
|
__lutimes64;
|
|
__mktime64;
|
|
__mq_timedreceive_time64;
|
|
__mq_timedsend_time64;
|
|
__msgctl64;
|
|
__mtx_timedlock64;
|
|
__nanosleep64;
|
|
__nanosleep64;
|
|
__ntp_gettime64;
|
|
__ntp_gettimex64;
|
|
__ppoll64;
|
|
__prctl_time64;
|
|
__pselec64;
|
|
__pselect64;
|
|
__pthread_clockjoin_np64;
|
|
__pthread_cond_clockwait64;
|
|
__pthread_cond_timedwait64;
|
|
__pthread_mutex_clocklock64;
|
|
__pthread_mutex_timedlock64;
|
|
__pthread_rwlock_clockrdlock64;
|
|
__pthread_rwlock_clockwrlock64;
|
|
__pthread_rwlock_timedrdlock64;
|
|
__pthread_rwlock_timedwrlock64;
|
|
__pthread_timedjoin_np64;
|
|
__recvmmsg64;
|
|
__recvmsg64;
|
|
__sched_rr_get_interval64;
|
|
__select64;
|
|
__sem_clockwait64;
|
|
__semctl64;
|
|
__semtimedop64;
|
|
__sem_timedwait64;
|
|
__sendmmsg64;
|
|
__sendmsg64;
|
|
__setitimer64;
|
|
__setsockopt64;
|
|
__settimeofday64;
|
|
__shmctl64;
|
|
__sigtimedwait64;
|
|
__stat64_time64;
|
|
__thrd_sleep64;
|
|
__time64;
|
|
__timegm64;
|
|
__timer_gettime64;
|
|
__timer_settime64;
|
|
__timerfd_gettime64;
|
|
__timerfd_settime64;
|
|
__timespec_get64;
|
|
__timespec_getres64;
|
|
__utime64;
|
|
__utimensat64;
|
|
__utimes64;
|
|
__utimes64;
|
|
__wait3_time64;
|
|
__wait4_time64;
|
|
%endif
|
|
close_range;
|
|
}
|
|
GLIBC_2.35 {
|
|
%ifdef TIME64_NON_DEFAULT
|
|
__epoll_pwait2_time64;
|
|
%endif
|
|
epoll_pwait2;
|
|
}
|
|
GLIBC_2.36 {
|
|
fsconfig;
|
|
fsmount;
|
|
fsopen;
|
|
fspick;
|
|
move_mount;
|
|
mount_setattr;
|
|
open_tree;
|
|
pidfd_open;
|
|
pidfd_getfd;
|
|
pidfd_send_signal;
|
|
process_madvise;
|
|
process_mrelease;
|
|
}
|
|
GLIBC_2.37 {
|
|
%ifdef TIME64_NON_DEFAULT
|
|
__ppoll64_chk;
|
|
%endif
|
|
}
|
|
GLIBC_2.39 {
|
|
posix_spawnattr_getcgroup_np;
|
|
posix_spawnattr_setcgroup_np;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
# functions used in other libraries
|
|
__syscall_rt_sigqueueinfo;
|
|
__open_nocancel;
|
|
__read_nocancel;
|
|
__pread64_nocancel;
|
|
__close_nocancel;
|
|
__sigtimedwait;
|
|
# functions used by nscd
|
|
__netlink_assert_response;
|
|
}
|
|
}
|
|
|
|
librt {
|
|
GLIBC_2.3.3 {
|
|
# Leftover from the int -> timer_t transition. For ABIs that came later
|
|
# and do not have the symbol version, this version node is merged with
|
|
# the baseline version.
|
|
__librt_version_placeholder;
|
|
}
|
|
}
|
|
|
|
ld {
|
|
GLIBC_2.35 {
|
|
__rseq_flags;
|
|
__rseq_offset;
|
|
__rseq_size;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
__nptl_change_stack_perm;
|
|
}
|
|
}
|