From 4eeea4f3f12a85ef955ac162c81a153a020cf9d7 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 25 Jul 2012 14:29:31 -0700 Subject: [PATCH] linux-user: Sync fcntl.h bits with the kernel For each target, only define the bits that appear in arch/target/include/asm/fcntl.h. Mirror the kernel's asm-generic layout by handling anything undefined afterward. Signed-off-by: Richard Henderson --- linux-user/syscall_defs.h | 194 ++++++++++++++++++-------------------- 1 file changed, 92 insertions(+), 102 deletions(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 308831f89e..ba9a58c814 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2046,135 +2046,125 @@ struct target_statfs64 { #define TARGET_F_DUPFD_CLOEXEC (TARGET_F_LINUX_SPECIFIC_BASE + 6) #define TARGET_F_NOTIFY (TARGET_F_LINUX_SPECIFIC_BASE+2) -#if defined (TARGET_ARM) -#define TARGET_O_ACCMODE 0003 -#define TARGET_O_RDONLY 00 -#define TARGET_O_WRONLY 01 -#define TARGET_O_RDWR 02 -#define TARGET_O_CREAT 0100 /* not fcntl */ -#define TARGET_O_EXCL 0200 /* not fcntl */ -#define TARGET_O_NOCTTY 0400 /* not fcntl */ -#define TARGET_O_TRUNC 01000 /* not fcntl */ -#define TARGET_O_APPEND 02000 -#define TARGET_O_NONBLOCK 04000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#define TARGET_O_SYNC 010000 -#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ +#if defined(TARGET_ALPHA) +#define TARGET_O_NONBLOCK 04 +#define TARGET_O_APPEND 010 +#define TARGET_O_CREAT 01000 /* not fcntl */ +#define TARGET_O_TRUNC 02000 /* not fcntl */ +#define TARGET_O_EXCL 04000 /* not fcntl */ +#define TARGET_O_NOCTTY 010000 /* not fcntl */ +#define TARGET_O_DSYNC 040000 +#define TARGET_O_LARGEFILE 0 /* not necessary, always 64-bit */ +#define TARGET_O_DIRECTORY 0100000 /* must be a directory */ +#define TARGET_O_NOFOLLOW 0200000 /* don't follow links */ +#define TARGET_O_DIRECT 02000000 /* direct disk access hint */ +#define TARGET_O_NOATIME 04000000 +#define TARGET_O_CLOEXEC 010000000 +#define TARGET___O_SYNC 020000000 +#define TARGET_O_PATH 040000000 +#elif defined(TARGET_ARM) || defined(TARGET_M68K) #define TARGET_O_DIRECTORY 040000 /* must be a directory */ #define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ #define TARGET_O_DIRECT 0200000 /* direct disk access hint */ #define TARGET_O_LARGEFILE 0400000 +#elif defined(TARGET_MIPS) +#define TARGET_O_APPEND 0x0008 +#define TARGET_O_DSYNC 0x0010 +#define TARGET_O_NONBLOCK 0x0080 +#define TARGET_O_CREAT 0x0100 /* not fcntl */ +#define TARGET_O_TRUNC 0x0200 /* not fcntl */ +#define TARGET_O_EXCL 0x0400 /* not fcntl */ +#define TARGET_O_NOCTTY 0x0800 /* not fcntl */ +#define TARGET_FASYNC 0x1000 /* fcntl, for BSD compatibility */ +#define TARGET_O_LARGEFILE 0x2000 /* allow large file opens */ +#define TARGET___O_SYNC 0x4000 +#define TARGET_O_DIRECT 0x8000 /* direct disk access hint */ #elif defined (TARGET_PPC) -#define TARGET_O_ACCMODE 0003 -#define TARGET_O_RDONLY 00 -#define TARGET_O_WRONLY 01 -#define TARGET_O_RDWR 02 -#define TARGET_O_CREAT 0100 /* not fcntl */ -#define TARGET_O_EXCL 0200 /* not fcntl */ -#define TARGET_O_NOCTTY 0400 /* not fcntl */ -#define TARGET_O_TRUNC 01000 /* not fcntl */ -#define TARGET_O_APPEND 02000 -#define TARGET_O_NONBLOCK 04000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#define TARGET_O_SYNC 010000 -#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ -#define TARGET_O_DIRECTORY 040000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ -#define TARGET_O_LARGEFILE 0200000 -#define TARGET_O_DIRECT 0400000 /* direct disk access hint */ -#elif defined (TARGET_MICROBLAZE) -#define TARGET_O_ACCMODE 0003 -#define TARGET_O_RDONLY 00 -#define TARGET_O_WRONLY 01 -#define TARGET_O_RDWR 02 -#define TARGET_O_CREAT 0100 /* not fcntl */ -#define TARGET_O_EXCL 0200 /* not fcntl */ -#define TARGET_O_NOCTTY 0400 /* not fcntl */ -#define TARGET_O_TRUNC 01000 /* not fcntl */ -#define TARGET_O_APPEND 02000 -#define TARGET_O_NONBLOCK 04000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#define TARGET_O_SYNC 010000 -#define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ #define TARGET_O_DIRECTORY 040000 /* must be a directory */ #define TARGET_O_NOFOLLOW 0100000 /* don't follow links */ #define TARGET_O_LARGEFILE 0200000 #define TARGET_O_DIRECT 0400000 /* direct disk access hint */ #elif defined (TARGET_SPARC) -#define TARGET_O_RDONLY 0x0000 -#define TARGET_O_WRONLY 0x0001 -#define TARGET_O_RDWR 0x0002 -#define TARGET_O_ACCMODE 0x0003 -#define TARGET_O_APPEND 0x0008 -#define TARGET_FASYNC 0x0040 /* fcntl, for BSD compatibility */ -#define TARGET_O_CREAT 0x0200 /* not fcntl */ -#define TARGET_O_TRUNC 0x0400 /* not fcntl */ -#define TARGET_O_EXCL 0x0800 /* not fcntl */ -#define TARGET_O_SYNC 0x2000 -#define TARGET_O_NONBLOCK 0x4000 -#define TARGET_O_NDELAY (0x0004 | TARGET_O_NONBLOCK) -#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ -#define TARGET_O_DIRECTORY 0x10000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0x20000 /* don't follow links */ +#define TARGET_O_APPEND 0x0008 +#define TARGET_FASYNC 0x0040 /* fcntl, for BSD compatibility */ +#define TARGET_O_CREAT 0x0200 /* not fcntl */ +#define TARGET_O_TRUNC 0x0400 /* not fcntl */ +#define TARGET_O_EXCL 0x0800 /* not fcntl */ +#define TARGET_O_DSYNC 0x2000 +#define TARGET_O_NONBLOCK 0x4000 +# ifdef TARGET_SPARC64 +# define TARGET_O_NDELAY 0x0004 +# else +# define TARGET_O_NDELAY (0x0004 | TARGET_O_NONBLOCK) +# endif +#define TARGET_O_NOCTTY 0x8000 /* not fcntl */ #define TARGET_O_LARGEFILE 0x40000 -#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ -#elif defined(TARGET_MIPS) -#define TARGET_O_ACCMODE 0x0003 -#define TARGET_O_RDONLY 0x0000 -#define TARGET_O_WRONLY 0x0001 -#define TARGET_O_RDWR 0x0002 -#define TARGET_O_APPEND 0x0008 -#define TARGET_O_SYNC 0x0010 -#define TARGET_O_NONBLOCK 0x0080 -#define TARGET_O_CREAT 0x0100 /* not fcntl */ -#define TARGET_O_TRUNC 0x0200 /* not fcntl */ -#define TARGET_O_EXCL 0x0400 /* not fcntl */ -#define TARGET_O_NOCTTY 0x0800 /* not fcntl */ -#define TARGET_FASYNC 0x1000 /* fcntl, for BSD compatibility */ -#define TARGET_O_LARGEFILE 0x2000 /* allow large file opens */ -#define TARGET_O_DIRECT 0x8000 /* direct disk access hint */ -#define TARGET_O_DIRECTORY 0x10000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0x20000 /* don't follow links */ -#define TARGET_O_NOATIME 0x40000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#elif defined(TARGET_ALPHA) -#define TARGET_O_ACCMODE 0x0003 -#define TARGET_O_RDONLY 0x0000 -#define TARGET_O_WRONLY 0x0001 -#define TARGET_O_RDWR 0x0002 -#define TARGET_O_APPEND 0x0008 -#define TARGET_O_SYNC 0x4000 -#define TARGET_O_NONBLOCK 0x0004 -#define TARGET_O_CREAT 0x0200 /* not fcntl */ -#define TARGET_O_TRUNC 0x0400 /* not fcntl */ -#define TARGET_O_EXCL 0x0800 /* not fcntl */ -#define TARGET_O_NOCTTY 0x1000 /* not fcntl */ -#define TARGET_FASYNC 0x2000 /* fcntl, for BSD compatibility */ -#define TARGET_O_LARGEFILE 0x0000 /* not necessary, always 64-bit */ -#define TARGET_O_DIRECT 0x80000 /* direct disk access hint */ -#define TARGET_O_DIRECTORY 0x8000 /* must be a directory */ -#define TARGET_O_NOFOLLOW 0x10000 /* don't follow links */ -#define TARGET_O_NOATIME 0x100000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#else +#define TARGET_O_DIRECT 0x100000 /* direct disk access hint */ +#define TARGET_O_NOATIME 0x200000 +#define TARGET_O_CLOEXEC 0x400000 +#define TARGET___O_SYNC 0x800000 +#define TARGET_O_PATH 0x1000000 +#endif + +/* values follow. */ #define TARGET_O_ACCMODE 0003 #define TARGET_O_RDONLY 00 #define TARGET_O_WRONLY 01 #define TARGET_O_RDWR 02 +#ifndef TARGET_O_CREAT #define TARGET_O_CREAT 0100 /* not fcntl */ +#endif +#ifndef TARGET_O_EXCL #define TARGET_O_EXCL 0200 /* not fcntl */ +#endif +#ifndef TARGET_O_NOCTTY #define TARGET_O_NOCTTY 0400 /* not fcntl */ +#endif +#ifndef TARGET_O_TRUNC #define TARGET_O_TRUNC 01000 /* not fcntl */ +#endif +#ifndef TARGET_O_APPEND #define TARGET_O_APPEND 02000 +#endif +#ifndef TARGET_O_NONBLOCK #define TARGET_O_NONBLOCK 04000 -#define TARGET_O_NDELAY TARGET_O_NONBLOCK -#define TARGET_O_SYNC 010000 +#endif +#ifndef TARGET_O_DSYNC +#define TARGET_O_DSYNC 010000 +#endif +#ifndef TARGET_FASYNC #define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ +#endif +#ifndef TARGET_O_DIRECT #define TARGET_O_DIRECT 040000 /* direct disk access hint */ +#endif +#ifndef TARGET_O_LARGEFILE #define TARGET_O_LARGEFILE 0100000 +#endif +#ifndef TARGET_O_DIRECTORY #define TARGET_O_DIRECTORY 0200000 /* must be a directory */ +#endif +#ifndef TARGET_O_NOFOLLOW #define TARGET_O_NOFOLLOW 0400000 /* don't follow links */ #endif +#ifndef TARGET_O_NOATIME +#define TARGET_O_NOATIME 01000000 +#endif +#ifndef TARGET_O_CLOEXEC +#define TARGET_O_CLOEXEC 02000000 +#endif +#ifndef TARGET___O_SYNC +#define TARGET___O_SYNC 04000000 +#endif +#ifndef TARGET_O_PATH +#define TARGET_O_PATH 010000000 +#endif +#ifndef TARGET_O_NDELAY +#define TARGET_O_NDELAY TARGET_O_NONBLOCK +#endif +#ifndef TARGET_O_SYNC +#define TARGET_O_SYNC (TARGET___O_SYNC | TARGET_O_DSYNC) +#endif struct target_flock { short l_type;