|  | #pragma once | 
|  |  | 
|  | /* system call numbers.  need to #def them for use in assembly.  Removing | 
|  | * useless ones is okay, but if we change a number, we'll need to rebuild | 
|  | * userspace (which is why we have holes). */ | 
|  | #define SYS_null		 1 | 
|  | #define SYS_block		 2 | 
|  | #define SYS_cache_invalidate	 3 | 
|  | #define SYS_reboot		 4 | 
|  | /* was SYS_cputs		 5 */ | 
|  | /* was SYS_cgetc		 6 */ | 
|  | #define SYS_getpcoreid		 7 | 
|  | #define SYS_getvcoreid		 8 | 
|  | /* was #define SYS_getpid	 9 */ | 
|  | #define SYS_proc_create		10 | 
|  | #define SYS_proc_run		11 | 
|  | #define SYS_proc_destroy	12 | 
|  | #define SYS_proc_yield		13 | 
|  | #define SYS_change_vcore	14 | 
|  | #define SYS_fork		15 | 
|  | #define SYS_exec		16 | 
|  | #define SYS_waitpid		17 | 
|  | #define SYS_mmap		18 | 
|  | #define SYS_munmap		19 | 
|  | #define SYS_mprotect		20 | 
|  | /* was SYS_brk			21 */ | 
|  | #define SYS_shared_page_alloc	22 | 
|  | #define SYS_shared_page_free	23 | 
|  | #define SYS_provision		24 | 
|  | #define SYS_notify		25 | 
|  | #define SYS_self_notify		26 | 
|  | #define SYS_halt_core		27 | 
|  | #define SYS_init_arsc		28 | 
|  | #define SYS_change_to_m		29 | 
|  | #define SYS_poke_ksched		30 | 
|  | #define SYS_abort_sysc		31 | 
|  | #define SYS_populate_va		32 | 
|  | #define SYS_abort_sysc_fd	33 | 
|  | #define SYS_vmm_add_gpcs	34 | 
|  | #define SYS_vc_entry		35 | 
|  | #define SYS_nanosleep		36 | 
|  | #define SYS_pop_ctx		37 | 
|  | #define SYS_vmm_poke_guest	38 | 
|  | #define SYS_send_event		39 | 
|  | #define SYS_vmm_ctl		40 | 
|  |  | 
|  | /* FS Syscalls */ | 
|  | #define SYS_read		100 | 
|  | #define SYS_write		101 | 
|  | #define SYS_openat		102 | 
|  | #define SYS_close		103 | 
|  | #define SYS_fstat		104 | 
|  | #define SYS_stat		105 | 
|  | #define SYS_lstat		106 | 
|  | #define SYS_fcntl		107 | 
|  | #define SYS_access		108 | 
|  | #define SYS_umask		109 | 
|  | /* was SYS_chmod		110 */ | 
|  | #define SYS_llseek		111 | 
|  | #define SYS_link		112 | 
|  | #define SYS_unlink		113 | 
|  | #define SYS_symlink		114 | 
|  | #define SYS_readlink		115 | 
|  | #define SYS_chdir		116 | 
|  | #define SYS_getcwd		117 | 
|  | #define SYS_mkdir		118 | 
|  | #define SYS_rmdir		119 | 
|  | /* was SYS_pipe			120 */ | 
|  |  | 
|  | #define SYS_wstat		121 | 
|  | #define SYS_fwstat		122 | 
|  | #define SYS_rename		123 | 
|  | #define SYS_fchdir		124 | 
|  | #define SYS_dup_fds_to		125 | 
|  | #define SYS_tap_fds		126 | 
|  |  | 
|  | /* Misc syscalls */ | 
|  | /* was #define SYS_gettimeofday	140 */ | 
|  | #define SYS_tcgetattr		141 | 
|  | #define SYS_tcsetattr		142 | 
|  | #define SYS_setuid		143 | 
|  | #define SYS_setgid		144 | 
|  |  | 
|  | /* hotness! */ | 
|  | #define SYS_nbind		145 | 
|  | #define SYS_nmount		146 | 
|  | #define SYS_nunmount		147 | 
|  | /* was SYS_something		148 */ | 
|  | #define SYS_fd2path		149 | 
|  |  | 
|  | #define MAX_SYSCALL_NR		200 | 
|  |  | 
|  | // for system calls that pass filenames | 
|  | #define MAX_PATH_LEN 256 | 
|  |  | 
|  | /* wstat flags, so the kernel knows what M fields to look at */ | 
|  | #define WSTAT_MODE		0x001 | 
|  | #define WSTAT_ATIME		0x002 | 
|  | #define WSTAT_MTIME		0x004 | 
|  | #define WSTAT_LENGTH		0x008 | 
|  | #define WSTAT_NAME		0x010 | 
|  | #define WSTAT_UID		0x020 | 
|  | #define WSTAT_GID		0x040 | 
|  | #define WSTAT_MUID		0x080 |