glibc/sysdeps/unix/sysv/linux/generic
Adhemerval Zanella c6bb095eb5 nptl: Rewrite cancellation macros
This patch changes the way cancellation entrypoints are defined to
instead call the macro SYSCALL_CANCEL.  An usual cnacellation definition
is defined as:

  if (SINGLE_THREAD_P)
    return INLINE_SYSCALL (syscall, NARGS, args...)

  int oldtype = LIBC_CANCEL_ASYNC ();

  return INLINE_SYSCALL (syscall, NARGS, args...)

  LIBC_CANCEL_RESET (oldtype);

And it is rewrited as just:

  SYSCALL_CANCEL (syscall, args...)

The idea is to remove LIBC_CANCEL_ASYNC/LIBC_CANCEL_RESET explicit
usage.

Tested on i386, x86_64, powerpc32, powerpc64le, arm, and aarch64.

	* sysdeps/unix/sysdep.h [SYSCALL_CANCEL]: New macro: define
	cancellable syscalls.
	(SYS_ify): Add guard to no redefine it.
	(INLINE_SYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/accept4.c (accept4): Remove
	LIBC_CANCEL_ASYNC/INLINE_SYSCALL/LIBC_CANCEL_RESET and use
	SYSCALL_CANCEL instead.
	* sysdeps/unix/sysv/linux/alpha/fdatasync.c (__fdatasync): Likewise.
	* sysdeps/unix/sysv/linux/arm/pread.c (__libc_pread): Likewise.
	* sysdeps/unix/sysv/linux/arm/pread64.c (__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/arm/pwrite.c (__libc_pwrite): Likewise.
	* sysdeps/unix/sysv/linux/arm/pwrite64.c (__libc_pwrite64): Likewise.
	* sysdeps/unix/sysv/linux/epoll_pwait.c (epoll_pwait): Likewise.
	* sysdeps/unix/sysv/linux/fallocate.c (fallocate): Likewise.
	* sysdeps/unix/sysv/linux/fallocate64.c (fallocate64): Likewise.
	* sysdeps/unix/sysv/linux/generic/open.c (__libc_open): Likewise.
	* sysdeps/unix/sysv/linux/generic/open64.c (__libc_open64): Likewise.
	* sysdeps/unix/sysv/linux/generic/pause.c (__libc_pause): Likewise.
	* sysdeps/unix/sysv/linux/generic/poll.c (__poll): Likewise.
	* sysdeps/unix/sysv/linux/generic/recv.c (__libc_recv): Likewise.
	* sysdeps/unix/sysv/linux/generic/select.c (__select): Likewise.
	* sysdeps/unix/sysv/linux/generic/send.c (__libc_send): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c (__libc_pread):
	Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
	(__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c
	(__libc_preadv): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c
	(__libc_readv64): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
	(__libc_pwrite): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
	(__libc_pwrite64): Likewise.
	* sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c
	(__libc_pwritev): Likewise.
	* sysdeps/sysv/linux/generic/wordsize-32/pwritev64.c
	(__libc_pwritev64): Likewise.
	* sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/sync_file_range.c
	(sync_file_range): Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/fallocate.c (fallocate):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/fallocate64.c (fallocate64):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise.
	* sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise.
	* sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise.
	* sysdeps/unix/sysv/linux/msgrcv.c (__libc_msgrcv): Likewise.
	* sysdeps/unix/sysv/linux/msgsnd.c (__libc_msgsnd): Likewise.
	* sysdeps/unix/sysv/linux/open64.c (__libc_open64): Likewise.
	* sysdeps/unix/sysv/linux/openat.c (__libc_openat): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c (__libc_pread):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
	(__libc_read64): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c (__libc_write):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c (__libc_write64):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fcntl.c (__libc_fcntl):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c (__libc_pread):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c
	(__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c (__libc_pwrite):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c
	(__libc_pwrite64): Likewise.
	* sysdeps/sysv/linux/powerpc/powerpc64/sync_file_range.c
	(sync_file_range): Likewise.
	* sysdeps/unix/sysv/linux/ppoll.c (ppoll): Likewise.
	* sysdeps/unix/sysv/linux/pread.c (__libc_pread): Likewise.
	* sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/preadv.c (__libc_preadv): Likewise.
	* sysdeps/unix/sysv/linux/pselect.c (__pselect): Likewise.
	* sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise.
	* sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Likewise.
	* sysdeps/unix/sysv/linux/pwritev.c (PWRITEV): Likewise.
	* sysdeps/unix/sysv/linux/readv.c (__libc_readv): Likewise.
	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Likewise.
	* sysdeps/unix/sysv/linux/sendmmsg.c (sendmmsg): Likewise.
	* sysdeps/unix/sysv/linux/sh/pread.c (__libc_pread): Likewise.
	* sysdeps/unix/sysv/linux/sh/pread64.c (__libc_pread64): Likewise.
	* sysdeps/unix/sysv/linux/sh/pwrite.c (__libc_pwrite): Likewise.
	* sysdeps/unix/sysv/linux/sh/pwrite64.c (__libc_pwrite64): Likewise.
	* sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Likewise.
	* sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Likewise.
	* sysdeps/unix/sysv/linux/sigwaitinfo.c (__sigwaitinfo): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c (__libc_msgrcv):
	Likewise.
	* sysdeps/unix/sysv/linux/sync_file_range.c (sync_file_range):
	Likewise.
	* sysdeps/unix/sysv/linux/tcdrain.c (__libc_tcdrain): Likewise.
	* sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
	Likewise.
	* sysdeps/unix/sysv/linux/wait.c (__libc_wait): Likewise.
	* sysdeps/unix/sysv/linux/waitid.c (__waitid): Likewise.
	* sysdeps/unix/sysv/linux/waitpid.c (__libc_waitpid): Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/fallocate.c (fallocate):
	Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/preadv.c (preadv): Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/pwritev.c (pwritev): Likewise.
	* sysdeps/unix/sysv/linux/writev.c (__libc_writev): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/recv.c (__libc_recv): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/send.c (__libc_send): Likewise.
2015-06-04 18:58:36 -03:00
..
bits struct stat is not posix conform 2015-05-26 22:27:24 +05:30
wordsize-32 nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
____longjmp_chk.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
access.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
brk.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
chmod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
chown.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
creat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-origin.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dup2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
epoll_create.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
epoll_wait.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
futimesat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getdents64.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getdents.c Move tilegx, tilepro, and linux-generic from ports to libc. 2014-02-10 11:04:39 -05:00
inotify_init.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
kernel_stat.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lchown.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
link.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lxstat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile Move tilegx, tilepro, and linux-generic from ports to libc. 2014-02-10 11:04:39 -05:00
mkdir.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
open64.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
open.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pause.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
pipe.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
poll.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
readlink_chk.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
readlink.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
README linux-generic: add a README 2015-03-19 13:33:01 -04:00
recv.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
rename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rmdir.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
select.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
send.c nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
symlink.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
syscalls.list Move tilegx, tilepro, and linux-generic from ports to libc. 2014-02-10 11:04:39 -05:00
sysctl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sysdep.h nptl: Rewrite cancellation macros 2015-06-04 18:58:36 -03:00
umount.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
unlink.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ustat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
utimes.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xmknod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xstat.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00

This hierarchy supports Linux systems using the new
asm-generic/unistd.h, which removes many familiar old syscalls.  For
example, to implement open(), newer Linux architectures require glibc
to invoke the __NR_openat syscall with AT_FDCWD.  This hierarchy
provides all those implementations.

It also provides support for 32-bit platforms using the 64-bit kernel
syscall APIs, as the 32-bit ones are no longer provided.  Note that
newer ILP32 environments (x32 or AArch64:ILP32, for example) are
converting to use more 64-bit types in kernel syscalls, so that aspect
of this support is in more flux as of this writing.