| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- /*
- * Copyright (C) 2019 Intel Corporation. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
- #ifndef _SGX_FILE_H
- #define _SGX_FILE_H
- #include "sgx_time.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define F_DUPFD 0
- #define F_GETFD 1
- #define F_SETFD 2
- #define F_GETFL 3
- #define F_SETFL 4
- #define FD_CLOEXEC 1
- #define O_PATH 010000000
- #define O_SEARCH O_PATH
- #define O_EXEC O_PATH
- #define O_ACCMODE (03|O_SEARCH)
- #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
- #define O_DIRECTORY 0200000
- #define O_NOFOLLOW 0400000
- #define O_CLOEXEC 02000000
- #define O_ASYNC 020000
- #define O_DIRECT 040000
- #define O_LARGEFILE 0
- #define O_NOATIME 01000000
- #define O_PATH 010000000
- #define O_TMPFILE 020200000
- #define O_NDELAY O_NONBLOCK
- #define S_IFMT 0170000
- #define S_IFDIR 0040000
- #define S_IFCHR 0020000
- #define S_IFBLK 0060000
- #define S_IFREG 0100000
- #define S_IFIFO 0010000
- #define S_IFLNK 0120000
- #define S_IFSOCK 0140000
- #define SEEK_SET 0
- #define SEEK_CUR 1
- #define SEEK_END 2
- #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
- #define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
- #define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
- #define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
- #define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
- #define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
- #define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
- #define DT_UNKNOWN 0
- #define DT_FIFO 1
- #define DT_CHR 2
- #define DT_DIR 4
- #define DT_BLK 6
- #define DT_REG 8
- #define DT_LNK 10
- #define DT_SOCK 12
- #define DT_WHT 14
- #define AT_SYMLINK_NOFOLLOW 0x100
- #define AT_REMOVEDIR 0x200
- #define AT_SYMLINK_FOLLOW 0x400
- #define POLLIN 0x001
- #define POLLPRI 0x002
- #define POLLOUT 0x004
- #define POLLERR 0x008
- #define POLLHUP 0x010
- #define POLLNVAL 0x020
- #define POLLRDNORM 0x040
- #define POLLRDBAND 0x080
- #define POLLWRNORM 0x100
- #define POLLWRBAND 0x200
- #define FIONREAD 0x541B
- #define PATH_MAX 4096
- /* Special value used to indicate openat should use the current
- working directory. */
- #define AT_FDCWD -100
- typedef long __syscall_slong_t;
- typedef unsigned long dev_t;
- typedef unsigned long ino_t;
- typedef unsigned mode_t;
- typedef unsigned long nlink_t;
- typedef unsigned socklen_t;
- typedef long blksize_t;
- typedef long blkcnt_t;
- typedef int pid_t;
- typedef unsigned gid_t;
- typedef unsigned uid_t;
- typedef unsigned long nfds_t;
- typedef uintptr_t DIR;
- struct dirent {
- ino_t d_ino;
- off_t d_off;
- unsigned short d_reclen;
- unsigned char d_type;
- char d_name[256];
- };
- struct stat {
- dev_t st_dev;
- ino_t st_ino;
- nlink_t st_nlink;
- mode_t st_mode;
- uid_t st_uid;
- gid_t st_gid;
- unsigned int __pad0;
- dev_t st_rdev;
- off_t st_size;
- blksize_t st_blksize;
- blkcnt_t st_blocks;
- struct timespec st_atim;
- struct timespec st_mtim;
- struct timespec st_ctim;
- long __unused[3];
- };
- struct iovec {
- void *iov_base;
- size_t iov_len;
- };
- struct pollfd {
- int fd;
- short events;
- short revents;
- };
- int open(const char *pathname, int flags, ...);
- int openat(int dirfd, const char *pathname, int flags, ...);
- int close(int fd);
- DIR *fdopendir(int fd);
- int closedir(DIR *dirp);
- void rewinddir(DIR *dirp);
- void seekdir(DIR *dirp, long loc);
- struct dirent *readdir(DIR *dirp);
- long telldir(DIR *dirp);
- ssize_t read(int fd, void *buf, size_t count);
- ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
- ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
- ssize_t preadv(int fd, const struct iovec *iov, int iovcnt,
- off_t offset);
- ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt,
- off_t offset);
- off_t lseek(int fd, off_t offset, int whence);
- int ftruncate(int fd, off_t length);
- int fstat(int fd, struct stat *statbuf);
- int fstatat(int dirfd, const char *pathname, struct stat *statbuf,
- int flags);
- int fsync(int fd);
- int fdatasync(int fd);
- int mkdirat(int dirfd, const char *pathname, mode_t mode);
- int link(const char *oldpath, const char *newpath);
- int linkat(int olddirfd, const char *oldpath,
- int newdirfd, const char *newpath, int flags);
- int unlinkat(int dirfd, const char *pathname, int flags);
- ssize_t readlinkat(int dirfd, const char *pathname,
- char *buf, size_t bufsiz);
- int symlinkat(const char *target, int newdirfd, const char *linkpath);
- int renameat(int olddirfd, const char *oldpath,
- int newdirfd, const char *newpath);
- int ioctl(int fd, unsigned long request, ...);
- int fcntl(int fd, int cmd, ... /* arg */ );
- int isatty(int fd);
- char *realpath(const char *path, char *resolved_path);
- int posix_fallocate(int fd, off_t offset, off_t len);
- int poll(struct pollfd *fds, nfds_t nfds, int timeout);
- int getopt(int argc, char * const argv[],
- const char *optstring);
- int sched_yield(void);
- ssize_t getrandom(void *buf, size_t buflen, unsigned int flags);
- int get_errno(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* end of _SGX_FILE_H */
|