15de7706eSLaurent Vivier /* 25de7706eSLaurent Vivier * This program is free software; you can redistribute it and/or modify 35de7706eSLaurent Vivier * it under the terms of the GNU General Public License version 2 as 45de7706eSLaurent Vivier * published by the Free Software Foundation, or (at your option) any 55de7706eSLaurent Vivier * later version. See the COPYING file in the top-level directory. 65de7706eSLaurent Vivier */ 75de7706eSLaurent Vivier 85de7706eSLaurent Vivier #ifndef GENERIC_FCNTL_H 95de7706eSLaurent Vivier #define GENERIC_FCNTL_H 105de7706eSLaurent Vivier 115de7706eSLaurent Vivier /* <asm-generic/fcntl.h> values follow. */ 125de7706eSLaurent Vivier #define TARGET_O_ACCMODE 0003 135de7706eSLaurent Vivier #define TARGET_O_RDONLY 00 145de7706eSLaurent Vivier #define TARGET_O_WRONLY 01 155de7706eSLaurent Vivier #define TARGET_O_RDWR 02 165de7706eSLaurent Vivier #ifndef TARGET_O_CREAT 175de7706eSLaurent Vivier #define TARGET_O_CREAT 0100 /* not fcntl */ 185de7706eSLaurent Vivier #endif 195de7706eSLaurent Vivier #ifndef TARGET_O_EXCL 205de7706eSLaurent Vivier #define TARGET_O_EXCL 0200 /* not fcntl */ 215de7706eSLaurent Vivier #endif 225de7706eSLaurent Vivier #ifndef TARGET_O_NOCTTY 235de7706eSLaurent Vivier #define TARGET_O_NOCTTY 0400 /* not fcntl */ 245de7706eSLaurent Vivier #endif 255de7706eSLaurent Vivier #ifndef TARGET_O_TRUNC 265de7706eSLaurent Vivier #define TARGET_O_TRUNC 01000 /* not fcntl */ 275de7706eSLaurent Vivier #endif 285de7706eSLaurent Vivier #ifndef TARGET_O_APPEND 295de7706eSLaurent Vivier #define TARGET_O_APPEND 02000 305de7706eSLaurent Vivier #endif 315de7706eSLaurent Vivier #ifndef TARGET_O_NONBLOCK 325de7706eSLaurent Vivier #define TARGET_O_NONBLOCK 04000 335de7706eSLaurent Vivier #endif 345de7706eSLaurent Vivier #ifndef TARGET_O_DSYNC 355de7706eSLaurent Vivier #define TARGET_O_DSYNC 010000 365de7706eSLaurent Vivier #endif 375de7706eSLaurent Vivier #ifndef TARGET_FASYNC 385de7706eSLaurent Vivier #define TARGET_FASYNC 020000 /* fcntl, for BSD compatibility */ 395de7706eSLaurent Vivier #endif 405de7706eSLaurent Vivier #ifndef TARGET_O_DIRECT 415de7706eSLaurent Vivier #define TARGET_O_DIRECT 040000 /* direct disk access hint */ 425de7706eSLaurent Vivier #endif 435de7706eSLaurent Vivier #ifndef TARGET_O_LARGEFILE 445de7706eSLaurent Vivier #define TARGET_O_LARGEFILE 0100000 455de7706eSLaurent Vivier #endif 465de7706eSLaurent Vivier #ifndef TARGET_O_DIRECTORY 475de7706eSLaurent Vivier #define TARGET_O_DIRECTORY 0200000 /* must be a directory */ 485de7706eSLaurent Vivier #endif 495de7706eSLaurent Vivier #ifndef TARGET_O_NOFOLLOW 505de7706eSLaurent Vivier #define TARGET_O_NOFOLLOW 0400000 /* don't follow links */ 515de7706eSLaurent Vivier #endif 525de7706eSLaurent Vivier #ifndef TARGET_O_NOATIME 535de7706eSLaurent Vivier #define TARGET_O_NOATIME 01000000 545de7706eSLaurent Vivier #endif 555de7706eSLaurent Vivier #ifndef TARGET_O_CLOEXEC 565de7706eSLaurent Vivier #define TARGET_O_CLOEXEC 02000000 575de7706eSLaurent Vivier #endif 585de7706eSLaurent Vivier #ifndef TARGET___O_SYNC 595de7706eSLaurent Vivier #define TARGET___O_SYNC 04000000 605de7706eSLaurent Vivier #endif 615de7706eSLaurent Vivier #ifndef TARGET_O_PATH 625de7706eSLaurent Vivier #define TARGET_O_PATH 010000000 635de7706eSLaurent Vivier #endif 645de7706eSLaurent Vivier #ifndef TARGET___O_TMPFILE 655de7706eSLaurent Vivier #define TARGET___O_TMPFILE 020000000 665de7706eSLaurent Vivier #endif 675de7706eSLaurent Vivier #ifndef TARGET_O_TMPFILE 685de7706eSLaurent Vivier #define TARGET_O_TMPFILE (TARGET___O_TMPFILE | TARGET_O_DIRECTORY) 695de7706eSLaurent Vivier #endif 705de7706eSLaurent Vivier #ifndef TARGET_O_NDELAY 715de7706eSLaurent Vivier #define TARGET_O_NDELAY TARGET_O_NONBLOCK 725de7706eSLaurent Vivier #endif 735de7706eSLaurent Vivier #ifndef TARGET_O_SYNC 745de7706eSLaurent Vivier #define TARGET_O_SYNC (TARGET___O_SYNC | TARGET_O_DSYNC) 755de7706eSLaurent Vivier #endif 765de7706eSLaurent Vivier 775de7706eSLaurent Vivier #define TARGET_F_DUPFD 0 /* dup */ 785de7706eSLaurent Vivier #define TARGET_F_GETFD 1 /* get close_on_exec */ 795de7706eSLaurent Vivier #define TARGET_F_SETFD 2 /* set/clear close_on_exec */ 805de7706eSLaurent Vivier #define TARGET_F_GETFL 3 /* get file->f_flags */ 815de7706eSLaurent Vivier #define TARGET_F_SETFL 4 /* set file->f_flags */ 825de7706eSLaurent Vivier #ifndef TARGET_F_GETLK 835de7706eSLaurent Vivier #define TARGET_F_GETLK 5 845de7706eSLaurent Vivier #define TARGET_F_SETLK 6 855de7706eSLaurent Vivier #define TARGET_F_SETLKW 7 865de7706eSLaurent Vivier #endif 875de7706eSLaurent Vivier #ifndef TARGET_F_SETOWN 885de7706eSLaurent Vivier #define TARGET_F_SETOWN 8 /* for sockets. */ 895de7706eSLaurent Vivier #define TARGET_F_GETOWN 9 /* for sockets. */ 905de7706eSLaurent Vivier #endif 915de7706eSLaurent Vivier #ifndef TARGET_F_SETSIG 925de7706eSLaurent Vivier #define TARGET_F_SETSIG 10 /* for sockets. */ 935de7706eSLaurent Vivier #define TARGET_F_GETSIG 11 /* for sockets. */ 945de7706eSLaurent Vivier #endif 955de7706eSLaurent Vivier 965de7706eSLaurent Vivier #ifndef TARGET_F_GETLK64 975de7706eSLaurent Vivier #define TARGET_F_GETLK64 12 /* using 'struct flock64' */ 985de7706eSLaurent Vivier #define TARGET_F_SETLK64 13 995de7706eSLaurent Vivier #define TARGET_F_SETLKW64 14 1005de7706eSLaurent Vivier #endif 1015de7706eSLaurent Vivier 102*2d92c682SAndreas Schwab #define TARGET_F_OFD_GETLK 36 103*2d92c682SAndreas Schwab #define TARGET_F_OFD_SETLK 37 104*2d92c682SAndreas Schwab #define TARGET_F_OFD_SETLKW 38 105*2d92c682SAndreas Schwab 1065de7706eSLaurent Vivier #ifndef TARGET_F_SETOWN_EX 1075de7706eSLaurent Vivier #define TARGET_F_SETOWN_EX 15 1085de7706eSLaurent Vivier #define TARGET_F_GETOWN_EX 16 1095de7706eSLaurent Vivier #endif 1105de7706eSLaurent Vivier 1115de7706eSLaurent Vivier struct target_f_owner_ex { 1125de7706eSLaurent Vivier int type; /* Owner type of ID. */ 1135de7706eSLaurent Vivier int pid; /* ID of owner. */ 1145de7706eSLaurent Vivier }; 1155de7706eSLaurent Vivier 1165de7706eSLaurent Vivier #ifndef TARGET_F_RDLCK 1175de7706eSLaurent Vivier #define TARGET_F_RDLCK 0 1185de7706eSLaurent Vivier #define TARGET_F_WRLCK 1 1195de7706eSLaurent Vivier #define TARGET_F_UNLCK 2 1205de7706eSLaurent Vivier #endif 1215de7706eSLaurent Vivier 1221272a6c4SAleksandar Markovic #ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK 1235de7706eSLaurent Vivier #ifndef TARGET_ARCH_FLOCK_PAD 1245de7706eSLaurent Vivier #define TARGET_ARCH_FLOCK_PAD 1255de7706eSLaurent Vivier #endif 1265de7706eSLaurent Vivier 1275de7706eSLaurent Vivier struct target_flock { 1285de7706eSLaurent Vivier short l_type; 1295de7706eSLaurent Vivier short l_whence; 1305de7706eSLaurent Vivier abi_long l_start; 1315de7706eSLaurent Vivier abi_long l_len; 1325de7706eSLaurent Vivier int l_pid; 1335de7706eSLaurent Vivier TARGET_ARCH_FLOCK_PAD 1345de7706eSLaurent Vivier }; 1351272a6c4SAleksandar Markovic #endif 1365de7706eSLaurent Vivier 1371272a6c4SAleksandar Markovic #ifndef TARGET_HAVE_ARCH_STRUCT_FLOCK64 1385de7706eSLaurent Vivier #ifndef TARGET_ARCH_FLOCK64_PAD 1395de7706eSLaurent Vivier #define TARGET_ARCH_FLOCK64_PAD 1405de7706eSLaurent Vivier #endif 1415de7706eSLaurent Vivier 1425de7706eSLaurent Vivier struct target_flock64 { 1435de7706eSLaurent Vivier abi_short l_type; 1445de7706eSLaurent Vivier abi_short l_whence; 1455de7706eSLaurent Vivier abi_llong l_start; 1465de7706eSLaurent Vivier abi_llong l_len; 1475de7706eSLaurent Vivier abi_int l_pid; 1485de7706eSLaurent Vivier TARGET_ARCH_FLOCK64_PAD 1495de7706eSLaurent Vivier }; 1505de7706eSLaurent Vivier #endif 1511272a6c4SAleksandar Markovic 1521272a6c4SAleksandar Markovic #endif 153