From b8f1f91cc6d7b579fdb2370ab046565f9930aa09 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 7 Oct 2009 22:51:55 -0400 Subject: clean up O_CLOEXEC handling Drop the "#ifndef O_CLOEXEC" cruft, enable O_CLOEXEC in most fcntl.h headers, and import __ASSUME_O_CLOEXEC from glibc. Signed-off-by: Mike Frysinger --- libc/sysdeps/linux/alpha/bits/fcntl.h | 2 -- libc/sysdeps/linux/arm/bits/fcntl.h | 2 -- libc/sysdeps/linux/avr32/bits/fcntl.h | 1 + libc/sysdeps/linux/bfin/bits/fcntl.h | 2 ++ libc/sysdeps/linux/common/bits/kernel-features.h | 8 ++++++++ libc/sysdeps/linux/cris/bits/fcntl.h | 1 + libc/sysdeps/linux/frv/bits/fcntl.h | 2 ++ libc/sysdeps/linux/hppa/bits/fcntl.h | 1 + libc/sysdeps/linux/i386/bits/fcntl.h | 2 -- libc/sysdeps/linux/ia64/bits/fcntl.h | 2 -- libc/sysdeps/linux/m68k/bits/fcntl.h | 1 + libc/sysdeps/linux/microblaze/bits/fcntl.h | 2 ++ libc/sysdeps/linux/mips/bits/fcntl.h | 1 + libc/sysdeps/linux/powerpc/bits/fcntl.h | 2 -- libc/sysdeps/linux/sh/bits/fcntl.h | 2 -- libc/sysdeps/linux/sh64/bits/fcntl.h | 2 ++ libc/sysdeps/linux/sparc/bits/fcntl.h | 2 -- libc/sysdeps/linux/x86_64/bits/fcntl.h | 2 -- libc/sysdeps/linux/xtensa/bits/fcntl.h | 1 + 19 files changed, 22 insertions(+), 16 deletions(-) (limited to 'libc/sysdeps/linux') diff --git a/libc/sysdeps/linux/alpha/bits/fcntl.h b/libc/sysdeps/linux/alpha/bits/fcntl.h index 2a6b9eadc..649c5633e 100644 --- a/libc/sysdeps/linux/alpha/bits/fcntl.h +++ b/libc/sysdeps/linux/alpha/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_NOFOLLOW 0200000 /* Do not follow links. */ # define O_DIRECT 02000000 /* Direct disk access. */ # define O_NOATIME 04000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 010000000 /* Set close_on_exec. */ -# endif #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h index 86cea4b7f..7cc5a9dc0 100644 --- a/libc/sysdeps/linux/arm/bits/fcntl.h +++ b/libc/sysdeps/linux/arm/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_NOFOLLOW 0100000 /* Do not follow links. */ # define O_DIRECT 0200000 /* Direct disk access. */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/avr32/bits/fcntl.h b/libc/sysdeps/linux/avr32/bits/fcntl.h index 2301e2241..767243ee5 100644 --- a/libc/sysdeps/linux/avr32/bits/fcntl.h +++ b/libc/sysdeps/linux/avr32/bits/fcntl.h @@ -30,6 +30,7 @@ # define O_DIRECTORY 00200000 /* direct disk access */ # define O_NOFOLLOW 00400000 /* don't follow links */ # define O_NOATIME 01000000 /* don't set atime */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/bfin/bits/fcntl.h b/libc/sysdeps/linux/bfin/bits/fcntl.h index 7d0bcf946..f019b71d3 100644 --- a/libc/sysdeps/linux/bfin/bits/fcntl.h +++ b/libc/sysdeps/linux/bfin/bits/fcntl.h @@ -48,6 +48,8 @@ # define O_DIRECTORY 040000 /* Must be a directory. */ # define O_NOFOLLOW 0100000 /* Do not follow links. */ # define O_DIRECT 0200000 /* Direct disk access. */ +# define O_NOATIME 01000000 /* don't set atime */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/common/bits/kernel-features.h b/libc/sysdeps/linux/common/bits/kernel-features.h index 5216d7bed..88297349a 100644 --- a/libc/sysdeps/linux/common/bits/kernel-features.h +++ b/libc/sysdeps/linux/common/bits/kernel-features.h @@ -70,6 +70,14 @@ # define __ASSUME_GETDENTS32_D_TYPE 1 #endif +/* Support for various CLOEXEC and NONBLOCK flags was added for x86, + x86-64, PPC, IA-64, SPARC< and S390 in 2.6.23. */ +#if __LINUX_KERNEL_VERSION >= 0x020617 \ + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \ + || defined __ia64__ || defined __sparc__ || defined __s390__) +# define __ASSUME_O_CLOEXEC 1 +#endif + /* These features were surely available with 2.4.12. */ #if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__ # define __ASSUME_MMAP2_SYSCALL 1 diff --git a/libc/sysdeps/linux/cris/bits/fcntl.h b/libc/sysdeps/linux/cris/bits/fcntl.h index a2106ef9a..29443ba01 100644 --- a/libc/sysdeps/linux/cris/bits/fcntl.h +++ b/libc/sysdeps/linux/cris/bits/fcntl.h @@ -50,6 +50,7 @@ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/frv/bits/fcntl.h b/libc/sysdeps/linux/frv/bits/fcntl.h index 06e886009..d437175ca 100644 --- a/libc/sysdeps/linux/frv/bits/fcntl.h +++ b/libc/sysdeps/linux/frv/bits/fcntl.h @@ -45,6 +45,8 @@ # define O_DIRECT 040000 /* Direct disk access. */ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ +# define O_NOATIME 01000000 /* don't set atime */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/hppa/bits/fcntl.h b/libc/sysdeps/linux/hppa/bits/fcntl.h index cc23bf81b..86e3b6f4a 100644 --- a/libc/sysdeps/linux/hppa/bits/fcntl.h +++ b/libc/sysdeps/linux/hppa/bits/fcntl.h @@ -50,6 +50,7 @@ # define O_DIRECTORY 00010000 /* Must be a directory. */ # define O_NOFOLLOW 00000200 /* Do not follow links. */ # define O_NOATIME 04000000 /* Do not set atime. */ +# define O_CLOEXEC 010000000 /* set close_on_exec */ #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/i386/bits/fcntl.h b/libc/sysdeps/linux/i386/bits/fcntl.h index 7f0b552fd..22e073bb1 100644 --- a/libc/sysdeps/linux/i386/bits/fcntl.h +++ b/libc/sysdeps/linux/i386/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/ia64/bits/fcntl.h b/libc/sysdeps/linux/ia64/bits/fcntl.h index d134c4b4f..85a55f6a7 100644 --- a/libc/sysdeps/linux/ia64/bits/fcntl.h +++ b/libc/sysdeps/linux/ia64/bits/fcntl.h @@ -49,9 +49,7 @@ # define O_DIRECTORY 0200000 /* must be a directory */ # define O_NOFOLLOW 0400000 /* don't follow links */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/m68k/bits/fcntl.h b/libc/sysdeps/linux/m68k/bits/fcntl.h index d36198d7a..e564b4217 100644 --- a/libc/sysdeps/linux/m68k/bits/fcntl.h +++ b/libc/sysdeps/linux/m68k/bits/fcntl.h @@ -49,6 +49,7 @@ # define O_NOFOLLOW 0100000 /* Do not follow links. */ # define O_DIRECT 0200000 /* Direct disk access. */ # define O_NOATIME 01000000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/microblaze/bits/fcntl.h b/libc/sysdeps/linux/microblaze/bits/fcntl.h index c8aeb919a..bb6727ad8 100644 --- a/libc/sysdeps/linux/microblaze/bits/fcntl.h +++ b/libc/sysdeps/linux/microblaze/bits/fcntl.h @@ -45,6 +45,8 @@ # define O_DIRECTORY 040000 /* Must be a directory. */ # define O_NOFOLLOW 0100000 /* Do not follow links. */ # define O_DIRECT 0200000 /* Direct disk access. */ +# define O_NOATIME 01000000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/mips/bits/fcntl.h b/libc/sysdeps/linux/mips/bits/fcntl.h index ef015a4b0..f0072fd77 100644 --- a/libc/sysdeps/linux/mips/bits/fcntl.h +++ b/libc/sysdeps/linux/mips/bits/fcntl.h @@ -51,6 +51,7 @@ # define O_DIRECT 0x8000 /* Direct disk access hint. */ # define O_DIRECTORY 0x10000 /* Must be a directory. */ # define O_NOATIME 0x40000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has no synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/powerpc/bits/fcntl.h b/libc/sysdeps/linux/powerpc/bits/fcntl.h index ceb75b4f1..0759c6a71 100644 --- a/libc/sysdeps/linux/powerpc/bits/fcntl.h +++ b/libc/sysdeps/linux/powerpc/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_DIRECTORY 040000 /* Must be a directory. */ # define O_NOFOLLOW 0100000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/sh/bits/fcntl.h b/libc/sysdeps/linux/sh/bits/fcntl.h index 570484c2f..adb737766 100644 --- a/libc/sysdeps/linux/sh/bits/fcntl.h +++ b/libc/sysdeps/linux/sh/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/sh64/bits/fcntl.h b/libc/sysdeps/linux/sh64/bits/fcntl.h index 06e886009..156df9752 100644 --- a/libc/sysdeps/linux/sh64/bits/fcntl.h +++ b/libc/sysdeps/linux/sh64/bits/fcntl.h @@ -45,6 +45,8 @@ # define O_DIRECT 040000 /* Direct disk access. */ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ +# define O_NOATIME 01000000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/sparc/bits/fcntl.h b/libc/sysdeps/linux/sparc/bits/fcntl.h index 29c09a957..31a6d9bda 100644 --- a/libc/sysdeps/linux/sparc/bits/fcntl.h +++ b/libc/sysdeps/linux/sparc/bits/fcntl.h @@ -49,9 +49,7 @@ # define O_NOFOLLOW 0x20000 /* don't follow links */ # define O_DIRECT 0x100000 /* direct disk access hint */ # define O_NOATIME 0x200000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 0x400000 /* Set close_on_exit. */ -# endif #endif #ifdef __USE_LARGEFILE64 diff --git a/libc/sysdeps/linux/x86_64/bits/fcntl.h b/libc/sysdeps/linux/x86_64/bits/fcntl.h index be00e4ac7..f1cf38866 100644 --- a/libc/sysdeps/linux/x86_64/bits/fcntl.h +++ b/libc/sysdeps/linux/x86_64/bits/fcntl.h @@ -50,9 +50,7 @@ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ -# if 0 # define O_CLOEXEC 02000000 /* Set close_on_exec. */ -# endif #endif /* For now Linux has synchronisity options for data and read operations. diff --git a/libc/sysdeps/linux/xtensa/bits/fcntl.h b/libc/sysdeps/linux/xtensa/bits/fcntl.h index a89362e46..921a62679 100644 --- a/libc/sysdeps/linux/xtensa/bits/fcntl.h +++ b/libc/sysdeps/linux/xtensa/bits/fcntl.h @@ -50,6 +50,7 @@ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ +# define O_CLOEXEC 02000000 /* set close_on_exec */ #endif /* For now Linux has synchronisity options for data and read operations. -- cgit v1.2.3