📄 fs.h
字号:
#ifndef _FS_H
#define _FS_H
#define FMODE_READ 1
#define FMODE_WRITE 2
#if !defined (FD_SETSIZE)
#define FD_SETSIZE 256
typedef struct _fd_set
{
unsigned long bits[(FD_SETSIZE+31) / 32];
} fd_set;
#define fd_index(c) ((c) >> 5)
#define fd_mask(c) (1 << ((c) & 31))
#define FD_SET(fd, map) ((map)->bits[fd_index(fd)] |= fd_mask(fd))
#define FD_CLR(fd, map) ((map)->bits[fd_index(fd)] &= ~(fd_mask(fd)))
#define FD_ISSET(fd, map) ((map)->bits[fd_index(fd)] & fd_mask(fd))
#define FD_ZERO(s) (void)memset(s, 0, sizeof (*(s)))
#endif
typedef struct
{
unsigned long bits[N_FD];
} p_fdset;
struct pipe_info {
unsigned long memhandle;
unsigned long memaddress;
long pos;
long len;
long size;
unsigned int rd_openers;
unsigned int wr_openers;
unsigned int readers;
unsigned int writers;
unsigned int sel;
} ;
union file_info {
struct pipe_info pipe_i;
/* others */
};
struct file {
unsigned short f_mode; /* 1=RD, 2=WR */
unsigned short f_flags; /* NDELAY etc */
unsigned short f_count; /* no processes */
short f_doshandle; /* real dos handle or -1 */
unsigned long f_offset; /* seek pos */
struct file_operations *f_op; /* file ops */
union file_info * f_info; /* extra information */
};
typedef long ARGUSER;
struct file_operations {
long (*lseek) (struct file *, long, int);
ARGUSER (*read) (struct file *, ARGUSER, ARGUSER);
ARGUSER (*write) (struct file *, ARGUSER, ARGUSER);
int (*select) (struct file *, DWORD);
int (*ioctl) (struct file *, ARGUSER, ARGUSER);
int (*open) (struct file *, ARGUSER);
void (*release) (struct file *);
};
extern struct file rsx_filetab[RSX_NFILES];
struct _select {
DWORD nfds;
DWORD readfds;
DWORD writefds;
DWORD excepfds;
DWORD time;
};
void init_rsx_filetab(void);
int get_empty_proc_filp(void);
int get_dos_handle(int);
int sys_close(int);
int sys_dup2(unsigned int, unsigned int);
int sys_dup(unsigned int);
ARGUSER sys_read(int fd, ARGUSER buf, ARGUSER bytes);
ARGUSER sys_write(int fd, ARGUSER buf, ARGUSER bytes);
long sys_lseek(int fd, long off, int orgin);
int sys_select(ARGUSER select);
int sys_ioctl(int fd, ARGUSER request, ARGUSER arg);
int sys_pipe(ARGUSER size, ARGUSER arg);
extern struct file_operations msdos_fop;
extern struct file_operations pipe_fop;
#endif /* _FS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -