1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero */ 6*10465441SEvalZero 7*10465441SEvalZero /* 8*10465441SEvalZero * File : libc_fcntl.h 9*10465441SEvalZero * 10*10465441SEvalZero * Change Logs: 11*10465441SEvalZero * Date Author Notes 12*10465441SEvalZero * 2018-02-07 Bernard Add O_DIRECTORY definition in NEWLIB mode. 13*10465441SEvalZero * 2018-02-09 Bernard Add O_BINARY definition 14*10465441SEvalZero */ 15*10465441SEvalZero 16*10465441SEvalZero #ifndef LIBC_FCNTL_H__ 17*10465441SEvalZero #define LIBC_FCNTL_H__ 18*10465441SEvalZero 19*10465441SEvalZero #if defined(RT_USING_NEWLIB) || defined(_WIN32) 20*10465441SEvalZero #include <fcntl.h> 21*10465441SEvalZero 22*10465441SEvalZero #ifndef O_NONBLOCK 23*10465441SEvalZero #define O_NONBLOCK 0x4000 24*10465441SEvalZero #endif 25*10465441SEvalZero 26*10465441SEvalZero #if defined(_WIN32) 27*10465441SEvalZero #define O_ACCMODE (_O_RDONLY | _O_WRONLY | _O_RDWR) 28*10465441SEvalZero #endif 29*10465441SEvalZero 30*10465441SEvalZero #ifndef F_GETFL 31*10465441SEvalZero #define F_GETFL 3 32*10465441SEvalZero #endif 33*10465441SEvalZero #ifndef F_SETFL 34*10465441SEvalZero #define F_SETFL 4 35*10465441SEvalZero #endif 36*10465441SEvalZero 37*10465441SEvalZero #ifndef O_DIRECTORY 38*10465441SEvalZero #define O_DIRECTORY 0x200000 39*10465441SEvalZero #endif 40*10465441SEvalZero 41*10465441SEvalZero #ifndef O_BINARY 42*10465441SEvalZero #ifdef _O_BINARY 43*10465441SEvalZero #define O_BINARY _O_BINARY 44*10465441SEvalZero #else 45*10465441SEvalZero #define O_BINARY 0 46*10465441SEvalZero #endif 47*10465441SEvalZero #endif 48*10465441SEvalZero 49*10465441SEvalZero #else 50*10465441SEvalZero #define O_RDONLY 00 51*10465441SEvalZero #define O_WRONLY 01 52*10465441SEvalZero #define O_RDWR 02 53*10465441SEvalZero 54*10465441SEvalZero #define O_CREAT 0100 55*10465441SEvalZero #define O_EXCL 0200 56*10465441SEvalZero #define O_NOCTTY 0400 57*10465441SEvalZero #define O_TRUNC 01000 58*10465441SEvalZero #define O_APPEND 02000 59*10465441SEvalZero #define O_NONBLOCK 04000 60*10465441SEvalZero #define O_DSYNC 010000 61*10465441SEvalZero #define O_SYNC 04010000 62*10465441SEvalZero #define O_RSYNC 04010000 63*10465441SEvalZero #define O_BINARY 0100000 64*10465441SEvalZero #define O_DIRECTORY 0200000 65*10465441SEvalZero #define O_NOFOLLOW 0400000 66*10465441SEvalZero #define O_CLOEXEC 02000000 67*10465441SEvalZero 68*10465441SEvalZero #define O_ASYNC 020000 69*10465441SEvalZero #define O_DIRECT 040000 70*10465441SEvalZero #define O_LARGEFILE 0100000 71*10465441SEvalZero #define O_NOATIME 01000000 72*10465441SEvalZero #define O_PATH 010000000 73*10465441SEvalZero #define O_TMPFILE 020200000 74*10465441SEvalZero #define O_NDELAY O_NONBLOCK 75*10465441SEvalZero 76*10465441SEvalZero #define O_SEARCH O_PATH 77*10465441SEvalZero #define O_EXEC O_PATH 78*10465441SEvalZero 79*10465441SEvalZero #define O_ACCMODE (03|O_SEARCH) 80*10465441SEvalZero 81*10465441SEvalZero #define F_DUPFD 0 82*10465441SEvalZero #define F_GETFD 1 83*10465441SEvalZero #define F_SETFD 2 84*10465441SEvalZero #define F_GETFL 3 85*10465441SEvalZero #define F_SETFL 4 86*10465441SEvalZero 87*10465441SEvalZero #define F_SETOWN 8 88*10465441SEvalZero #define F_GETOWN 9 89*10465441SEvalZero #define F_SETSIG 10 90*10465441SEvalZero #define F_GETSIG 11 91*10465441SEvalZero 92*10465441SEvalZero #define F_GETLK 12 93*10465441SEvalZero #define F_SETLK 13 94*10465441SEvalZero #define F_SETLKW 14 95*10465441SEvalZero 96*10465441SEvalZero #define F_SETOWN_EX 15 97*10465441SEvalZero #define F_GETOWN_EX 16 98*10465441SEvalZero 99*10465441SEvalZero #define F_GETOWNER_UIDS 17 100*10465441SEvalZero #endif 101*10465441SEvalZero 102*10465441SEvalZero #endif 103