diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-12-19 08:41:52 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-12-19 08:41:52 +0000 |
commit | 7d092b69a0cd07e17a14027c9b544c9b6caac190 (patch) | |
tree | 5a748841ee2168442d8d5ff213ada95262b89935 /sysdeps/unix | |
parent | df45b31e8150087fad9ff5889fe1a95054e26730 (diff) | |
download | glibc-7d092b69a0cd07e17a14027c9b544c9b6caac190.tar.gz glibc-7d092b69a0cd07e17a14027c9b544c9b6caac190.tar.xz glibc-7d092b69a0cd07e17a14027c9b544c9b6caac190.zip |
Update.
2002-12-19 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/system.c: Define FORK only if __ASSUME_CLONE_THREAD_FLAGS is defined. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_CLONE_THREAD_FLAGS): Define for x86 and kernel >= 2.5.50. * sysdeps/unix/sysv/linux/i386/brk.c: Use INTERNAL_SYSCALL instead of asm. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/system.c | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/system.c b/sysdeps/unix/sysv/linux/i386/system.c index 1107fd6668..aa33471fa4 100644 --- a/sysdeps/unix/sysv/linux/i386/system.c +++ b/sysdeps/unix/sysv/linux/i386/system.c @@ -22,6 +22,7 @@ #include <unistd.h> #include <sys/wait.h> #include <bits/libc-lock.h> +#include <kernel-features.h> /* We have to and actually can handle cancelable system(). The big problem: we have to kill the child process if necessary. To do @@ -31,8 +32,10 @@ return. It might still be in the kernel when the cancellation request comes. Therefore we have to use the clone() calls ability to have the kernel write the PID into the user-level variable. */ -#define FORK() \ +#ifdef __ASSUME_CLONE_THREAD_FLAGS +# define FORK() \ INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid) +#endif static void cancel_handler (void *arg); diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 0796a8a1fd..c84305c583 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -232,3 +232,11 @@ # define __ASSUME_FCNTL64 1 # define __ASSUME_GETDENTS64_SYSCALL 1 #endif + +/* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize + their availability with one define. The changes were made first + for i386 and the have to be done separately for the other archs. + For i386 we pick 2.5.50 as the first version with support. */ +#if __LINUX_KERNEL_VERSION >= 132432 +# define __ASSUME_CLONE_THREAD_FLAGS 1 +#endif |