glibc/sysdeps/unix/sysv/linux/Versions
H.J. Lu a092ca9453 Add getcpu
Add

  #include <sched.h>

  int getcpu (unsigned int *cpu, unsigned int *node);

to return currently used CPU and NUMA node.

Tested on x86-64, x32 and i686 as well as with build-many-glibcs.py.

	* NEWS: Mention getcpu.
	* include/sched.h (__getcpu): New libc_hidden_proto.
	* manual/resource.texi: Document getcpu.
	* sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add getcpu.
	* sysdeps/unix/sysv/linux/Versions (GLIBC_2.29): Add getcpu.
	* sysdeps/unix/sysv/linux/aarch64/libc.abilist: Add getcpu.
	* sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/bits/sched.h (getcpu): New prototype.
	* sysdeps/unix/sysv/linux/getcpu.c: New file.
	* sysdeps/unix/sysv/linux/tst-skeleton-affinity.c (test_size):
	Also check getcpu.
2018-12-07 09:17:50 -08:00

188 lines
3.3 KiB
Plaintext

libc {
# The comment lines with "#errlist-compat" are magic; see errlist-compat.awk.
# When you get an error from errlist-compat.awk, you need to add a new
# version here. Don't do this blindly, since this means changing the ABI
# for all GNU/Linux configurations.
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;
#errlist-compat 123
_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;
#errlist-compat 125
_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;
}
GLIBC_2.2.1 {
# p*
pivot_root;
}
GLIBC_2.3 {
# r*
readahead;
#errlist-compat 126
_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 {
gnu_dev_major; gnu_dev_minor; gnu_dev_makedev;
}
GLIBC_2.3.4 {
sched_getaffinity; sched_setaffinity;
}
GLIBC_2.4 {
inotify_init; inotify_add_watch; inotify_rm_watch;
unshare;
#errlist-compat 132
_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.12 {
#errlist-compat 135
_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_PRIVATE {
# functions used in other libraries
__syscall_rt_sigqueueinfo;
__open_nocancel;
__read_nocancel;
__close_nocancel;
__sigtimedwait;
# functions used by nscd
__netlink_assert_response;
}
}