16 #define O_DIRECTORY 0x0200000
19 #define AT_REMOVEDIR 0x200
21 #define MAX_NAME_LEN 256
117 #define RING_BUFFER_SIZE 4095
154 static inline int ring_buffer_used(
struct ring_buffer *rbuf) {
158 static inline int ring_buffer_free(
struct ring_buffer *rbuf) {
160 return rbuf->
size - ring_buffer_used(rbuf) - 1;
163 static inline int ring_buffer_empty(
struct ring_buffer *rbuf) {
164 return ring_buffer_used(rbuf) == 0;
167 static inline int ring_buffer_full(
struct ring_buffer *rbuf) {
168 return ring_buffer_free(rbuf) == 0;
172 #define min(x, y) ((x) < (y) ? (x) : (y))
int64_t off_t
Definition: file.h:31
uint64_t ino_t
Definition: file.h:26
int fd_alloc()
Definition: fd.c:26
fd_t * get_fd(int fd)
Definition: fd.c:90
uint64_t dev_t
Definition: file.h:25
uint32_t pipe_num_t
Definition: file.h:24
int pipe_alloc(int *fd)
Definition: fd.c:38
fd_t fd_table[MAX_FD]
Definition: fd.c:7
void ring_buffer_init(struct ring_buffer *rbuf)
Definition: fd.c:97
int fd_table_init()
Definition: fd.c:11
pipe_t pipe_table[PIPE_NUM]
Definition: fd.c:8
fd_t * fd_alloc_spec(int fd)
Definition: fd.c:70
uint32_t nlink_t
Definition: file.h:28
#define PIPE_NUM
Definition: file.h:138
uint32_t gid_t
Definition: file.h:30
uint32_t fd_num_t
Definition: file.h:23
int fd_free(int fd)
Definition: fd.c:78
size_t write_ring_buffer(struct ring_buffer *rbuf, uint8_t *buf, size_t size)
Definition: fd.c:126
#define MAX_FD
Definition: file.h:108
size_t read_ring_buffer(struct ring_buffer *rbuf, uint8_t *buf, size_t size)
Definition: fd.c:108
uint32_t uid_t
Definition: file.h:29
uint32_t mode_t
Definition: file.h:27
#define MAX_NAME_LEN
Definition: file.h:21
uint32_t size
Definition: file.h:50
void * start
Definition: file.h:73
uint32_t mode
Definition: file.h:43
uint8_t file
Definition: file.h:35
uint8 redirected_fd_index
Definition: file.h:62
long ctime_sec
Definition: file.h:96
long atime_sec
Definition: file.h:92
uint32_t flags
Definition: file.h:45
int flags
Definition: file.h:76
int mailbox
Definition: file.h:99
long mtime_sec
Definition: file.h:94
dev_t rdev
Definition: file.h:88
uint8 nlink
Definition: file.h:82
uint8 used
Definition: file.h:59
uint32_t cur_clus_num
Definition: file.h:48
uint8 is_pipe_read
Definition: file.h:66
uint8 redirected
Definition: file.h:61
off_t off
Definition: file.h:77
int prot
Definition: file.h:75
size_t len
Definition: file.h:74
uint8 is_pipe_write
Definition: file.h:67
long mtime_nsec
Definition: file.h:95
int used
Definition: file.h:72
pipe_num_t pip_num
Definition: file.h:65
char name[MAX_NAME_LEN]
Definition: file.h:37
uint8_t dev
Definition: file.h:39
gid_t gid
Definition: file.h:86
uid_t uid
Definition: file.h:85
long ctime_nsec
Definition: file.h:97
uint32_t first_cluster
Definition: file.h:41
long atime_nsec
Definition: file.h:93
uint64_t pos
Definition: file.h:47
fd_num_t fd_num
Definition: file.h:56
uint8 sock_num
Definition: file.h:69
int mailbox
Definition: file.h:131
uint8 w_valid
Definition: file.h:136
list_head w_list
Definition: file.h:134
list_head r_list
Definition: file.h:133
pid_t pid
Definition: file.h:132
uint8 r_valid
Definition: file.h:135
int32_t tail
Definition: file.h:123
int32_t head
Definition: file.h:122
size_t size
Definition: file.h:121
spin_lock_t lock
Definition: file.h:120
uint8_t * buf
Definition: file.h:125
int pid_t
Definition: types.h:42
unsigned char uint8
Definition: types.h:33