libc_fcntl.h 1.8 KB
Newer Older
B
bernard 已提交
1
/*
2
 * Copyright (c) 2006-2018, RT-Thread Development Team
3
 *
4 5 6 7 8
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * File      : libc_fcntl.h
9 10 11 12
 *
 * Change Logs:
 * Date           Author       Notes
 * 2018-02-07     Bernard      Add O_DIRECTORY definition in NEWLIB mode.
B
Bernard Xiong 已提交
13
 * 2018-02-09     Bernard      Add O_BINARY definition
14 15
 */

B
bernard 已提交
16 17 18
#ifndef LIBC_FCNTL_H__
#define LIBC_FCNTL_H__

B
bernard 已提交
19
#if defined(RT_USING_NEWLIB) || defined(_WIN32)
20 21 22
#include <fcntl.h>

#ifndef O_NONBLOCK
23
#define O_NONBLOCK   0x4000
24 25
#endif

B
bernard 已提交
26 27 28 29
#if defined(_WIN32)
#define O_ACCMODE   (_O_RDONLY | _O_WRONLY | _O_RDWR)
#endif

30 31 32 33 34 35 36
#ifndef F_GETFL
#define F_GETFL  3
#endif
#ifndef F_SETFL
#define F_SETFL  4
#endif

37
#ifndef O_DIRECTORY
38
#define O_DIRECTORY 0x200000
39 40
#endif

B
Bernard Xiong 已提交
41 42 43 44 45 46 47 48
#ifndef O_BINARY
#ifdef  _O_BINARY
#define O_BINARY _O_BINARY
#else
#define O_BINARY	     0
#endif
#endif

49
#else
B
bernard 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62
#define O_RDONLY         00
#define O_WRONLY         01
#define O_RDWR           02

#define O_CREAT        0100
#define O_EXCL         0200
#define O_NOCTTY       0400
#define O_TRUNC       01000
#define O_APPEND      02000
#define O_NONBLOCK    04000
#define O_DSYNC      010000
#define O_SYNC     04010000
#define O_RSYNC    04010000
Y
yygg_you 已提交
63
#define O_BINARY    0100000
B
bernard 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#define O_DIRECTORY 0200000
#define O_NOFOLLOW  0400000
#define O_CLOEXEC  02000000

#define O_ASYNC      020000
#define O_DIRECT     040000
#define O_LARGEFILE 0100000
#define O_NOATIME  01000000
#define O_PATH    010000000
#define O_TMPFILE 020200000
#define O_NDELAY O_NONBLOCK

#define O_SEARCH  O_PATH
#define O_EXEC    O_PATH

#define O_ACCMODE (03|O_SEARCH)

#define F_DUPFD  0
#define F_GETFD  1
#define F_SETFD  2
#define F_GETFL  3
#define F_SETFL  4

#define F_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11

#define F_GETLK 12
#define F_SETLK 13
#define F_SETLKW 14

#define F_SETOWN_EX 15
#define F_GETOWN_EX 16

#define F_GETOWNER_UIDS 17
100
#endif
B
bernard 已提交
101 102

#endif