]> sourceware.org Git - glibc.git/commit
posix: Use posix_spawn on system
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 24 Oct 2018 19:29:38 +0000 (16:29 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 30 Nov 2018 20:42:05 +0000 (18:42 -0200)
commit5fb7fc96350575c9adb1316833e48ca11553be49
tree36acfe25d03b995273b95bdb16f6534b810db3e4
parent14d0e87d9b8caaa2eca7ca81f1189596671fe4fb
posix: Use posix_spawn on system

This patch uses posix_spawn on system implementation.  On Linux this has
the advantage of much lower memory consumption (usually 32 Kb minimum for
the mmap stack area).

Although POSIX does not require, glibc system implementation aims to be
thread and cancellation safe.  The cancellation code is moved to generic
implementation and enabled iff SIGCANCEL is defined (similar on how the
cancellation handler is enabled on nptl-init.c).

Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
arm-linux-gnueabihf, and powerpc64le-linux-gnu.

* sysdeps/unix/sysv/linux/spawni.c (__spawni_child): Use
__sigismember instead of sigismember.
* sysdeps/posix/system.c [SIGCANCEL] (cancel_handler_args,
cancel_handler): New definitions.
(CLEANUP_HANDLER, CLEANUP_RESET): Likewise.
(DO_LOCK, DO_UNLOCK, INIT_LOCK, ADD_REF, SUB_REF): Remove.
(do_system): Use posix_spawn instead of fork and execl and remove
reentracy code.
* sysdeps/generic/not-errno.h (__kill_noerrno): New prototype.
* sysdeps/unix/sysv/linux/not-errno.h (__kill_noerrno): Likewise.
* sysdeps/unix/sysv/linux/ia64/system.c: Remove file.
* sysdeps/unix/sysv/linux/s390/system.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/system.c: Likewise.
* sysdeps/unix/sysv/linux/system.c: Likewise.
ChangeLog
sysdeps/generic/not-errno.h
sysdeps/posix/system.c
sysdeps/unix/sysv/linux/ia64/system.c [deleted file]
sysdeps/unix/sysv/linux/not-errno.h
sysdeps/unix/sysv/linux/s390/system.c [deleted file]
sysdeps/unix/sysv/linux/sparc/system.c [deleted file]
sysdeps/unix/sysv/linux/spawni.c
sysdeps/unix/sysv/linux/system.c [deleted file]
This page took 0.046395 seconds and 5 git commands to generate.