《操作系统》的实验代码。
 
 
 
 
 

68 lines
2.3 KiB

#ifndef __LIBS_UNISTD_H__
#define __LIBS_UNISTD_H__
#define T_SYSCALL 0x80
/* syscall number */
#define SYS_exit 1
#define SYS_fork 2
#define SYS_wait 3
#define SYS_exec 4
#define SYS_clone 5
#define SYS_yield 10
#define SYS_sleep 11
#define SYS_kill 12
#define SYS_gettime 17
#define SYS_getpid 18
#define SYS_mmap 20
#define SYS_munmap 21
#define SYS_shmem 22
#define SYS_putc 30
#define SYS_pgdir 31
#define SYS_open 100
#define SYS_close 101
#define SYS_read 102
#define SYS_write 103
#define SYS_seek 104
#define SYS_fstat 110
#define SYS_fsync 111
#define SYS_getcwd 121
#define SYS_getdirentry 128
#define SYS_dup 130
/* OLNY FOR LAB6 */
#define SYS_lab6_set_priority 255
/* SYS_fork flags */
#define CLONE_VM 0x00000100 // set if VM shared between processes
#define CLONE_THREAD 0x00000200 // thread group
#define CLONE_FS 0x00000800 // set if shared between processes
/* VFS flags */
// flags for open: choose one of these
#define O_RDONLY 0 // open for reading only
#define O_WRONLY 1 // open for writing only
#define O_RDWR 2 // open for reading and writing
// then or in any of these:
#define O_CREAT 0x00000004 // create file if it does not exist
#define O_EXCL 0x00000008 // error if O_CREAT and the file exists
#define O_TRUNC 0x00000010 // truncate file upon open
#define O_APPEND 0x00000020 // append on each write
// additonal related definition
#define O_ACCMODE 3 // mask for O_RDONLY / O_WRONLY / O_RDWR
#define NO_FD -0x9527 // invalid fd
/* lseek codes */
#define LSEEK_SET 0 // seek relative to beginning of file
#define LSEEK_CUR 1 // seek relative to current position in file
#define LSEEK_END 2 // seek relative to end of file
#define FS_MAX_DNAME_LEN 31
#define FS_MAX_FNAME_LEN 255
#define FS_MAX_FPATH_LEN 4095
#define EXEC_MAX_ARG_NUM 32
#define EXEC_MAX_ARG_LEN 4095
#endif /* !__LIBS_UNISTD_H__ */