📄 unistd.h
字号:
#define __NR_getcwd (__NR_Linux + 110)#define __NR_vhangup (__NR_Linux + 111)#define __NR_idle (__NR_Linux + 112)#define __NR_vfork (__NR_Linux + 113)#define __NR_wait4 (__NR_Linux + 114)#define __NR_swapoff (__NR_Linux + 115)#define __NR_sysinfo (__NR_Linux + 116)#define __NR_shutdown (__NR_Linux + 117)#define __NR_fsync (__NR_Linux + 118)#define __NR_madvise (__NR_Linux + 119)#define __NR_clone (__NR_Linux + 120)#define __NR_setdomainname (__NR_Linux + 121)#define __NR_sendfile (__NR_Linux + 122)#define __NR_recvfrom (__NR_Linux + 123)#define __NR_adjtimex (__NR_Linux + 124)#define __NR_mprotect (__NR_Linux + 125)#define __NR_sigprocmask (__NR_Linux + 126)#define __NR_create_module (__NR_Linux + 127)#define __NR_init_module (__NR_Linux + 128)#define __NR_delete_module (__NR_Linux + 129)#define __NR_get_kernel_syms (__NR_Linux + 130)#define __NR_quotactl (__NR_Linux + 131)#define __NR_getpgid (__NR_Linux + 132)#define __NR_fchdir (__NR_Linux + 133)#define __NR_bdflush (__NR_Linux + 134)#define __NR_sysfs (__NR_Linux + 135)#define __NR_personality (__NR_Linux + 136)#define __NR_afs_syscall (__NR_Linux + 137) /* Syscall for Andrew File System */#define __NR_setfsuid (__NR_Linux + 138)#define __NR_setfsgid (__NR_Linux + 139)#define __NR__llseek (__NR_Linux + 140)#define __NR_getdents (__NR_Linux + 141)#define __NR__newselect (__NR_Linux + 142)#define __NR_flock (__NR_Linux + 143)#define __NR_msync (__NR_Linux + 144)#define __NR_readv (__NR_Linux + 145)#define __NR_writev (__NR_Linux + 146)#define __NR_getsid (__NR_Linux + 147)#define __NR_fdatasync (__NR_Linux + 148)#define __NR__sysctl (__NR_Linux + 149)#define __NR_mlock (__NR_Linux + 150)#define __NR_munlock (__NR_Linux + 151)#define __NR_mlockall (__NR_Linux + 152)#define __NR_munlockall (__NR_Linux + 153)#define __NR_sched_setparam (__NR_Linux + 154)#define __NR_sched_getparam (__NR_Linux + 155)#define __NR_sched_setscheduler (__NR_Linux + 156)#define __NR_sched_getscheduler (__NR_Linux + 157)#define __NR_sched_yield (__NR_Linux + 158)#define __NR_sched_get_priority_max (__NR_Linux + 159)#define __NR_sched_get_priority_min (__NR_Linux + 160)#define __NR_sched_rr_get_interval (__NR_Linux + 161)#define __NR_nanosleep (__NR_Linux + 162)#define __NR_mremap (__NR_Linux + 163)#define __NR_setresuid (__NR_Linux + 164)#define __NR_getresuid (__NR_Linux + 165)#define __NR_sigaltstack (__NR_Linux + 166)#define __NR_query_module (__NR_Linux + 167)#define __NR_poll (__NR_Linux + 168)#define __NR_nfsservctl (__NR_Linux + 169)#define __NR_setresgid (__NR_Linux + 170)#define __NR_getresgid (__NR_Linux + 171)#define __NR_prctl (__NR_Linux + 172)#define __NR_rt_sigreturn (__NR_Linux + 173)#define __NR_rt_sigaction (__NR_Linux + 174)#define __NR_rt_sigprocmask (__NR_Linux + 175)#define __NR_rt_sigpending (__NR_Linux + 176)#define __NR_rt_sigtimedwait (__NR_Linux + 177)#define __NR_rt_sigqueueinfo (__NR_Linux + 178)#define __NR_rt_sigsuspend (__NR_Linux + 179)#define __NR_chown (__NR_Linux + 180)#define __NR_setsockopt (__NR_Linux + 181)#define __NR_getsockopt (__NR_Linux + 182)#define __NR_sendmsg (__NR_Linux + 183)#define __NR_recvmsg (__NR_Linux + 184)#define __NR_semop (__NR_Linux + 185)#define __NR_semget (__NR_Linux + 186)#define __NR_semctl (__NR_Linux + 187)#define __NR_msgsnd (__NR_Linux + 188)#define __NR_msgrcv (__NR_Linux + 189)#define __NR_msgget (__NR_Linux + 190)#define __NR_msgctl (__NR_Linux + 191)#define __NR_shmat (__NR_Linux + 192)#define __NR_shmdt (__NR_Linux + 193)#define __NR_shmget (__NR_Linux + 194)#define __NR_shmctl (__NR_Linux + 195)#define __NR_getpmsg (__NR_Linux + 196) /* some people actually want streams */#define __NR_putpmsg (__NR_Linux + 197) /* some people actually want streams */#define __NR_Linux_syscalls 197#define HPUX_GATEWAY_ADDR 0xC0000004#define LINUX_GATEWAY_ADDR 0x100#define LINUX_GATEWAY_STR "0x100"/* The old syscall code here didn't work, and it looks like it's only used * by applications such as fdisk which for some reason need to produce * their own syscall instead of using same from libc. The code below * is leveraged from glibc/sysdeps/unix/sysv/linux/hppa/sysdep.h where * it is essentially duplicated -- which sucks. -PB */#define SYS_ify(syscall_name) __NR_##syscall_name/* The system call number MUST ALWAYS be loaded in the delay slot of the ble instruction, or restarting system calls WILL NOT WORK. See arch/parisc/kernel/signal.c - dhd, 2000-07-26 */#define K_INLINE_SYSCALL(name, nr, args...) ({ \ unsigned long __sys_res; \ { \ register unsigned long __res asm("r28"); \ K_LOAD_ARGS_##nr(args) \ asm volatile( \ "ble 0x100(%%sr2, %%r0)\n\t" \ " ldi %1, %%r20" \ : "=r" (__res) \ : "i" (SYS_ify(name)) K_ASM_ARGS_##nr \ ); \ __sys_res = __res; \ } \ if (__sys_res >= (unsigned long)-4095) { \ errno = -__sys_res; \ __sys_res == (unsigned long)-1; \ } \ __sys_res; \})#define K_LOAD_ARGS_0()#define K_LOAD_ARGS_1(r26) \ register unsigned long __r26 __asm__("r26") = (unsigned long)r26; \ K_LOAD_ARGS_0()#define K_LOAD_ARGS_2(r26,r25) \ register unsigned long __r25 __asm__("r25") = (unsigned long)r25; \ K_LOAD_ARGS_1(r26)#define K_LOAD_ARGS_3(r26,r25,r24) \ register unsigned long __r24 __asm__("r24") = (unsigned long)r24; \ K_LOAD_ARGS_2(r26,r25)#define K_LOAD_ARGS_4(r26,r25,r24,r23) \ register unsigned long __r23 __asm__("r23") = (unsigned long)r23; \ K_LOAD_ARGS_3(r26,r25,r24)#define K_LOAD_ARGS_5(r26,r25,r24,r23,r22) \ register unsigned long __r22 __asm__("r22") = (unsigned long)r22; \ K_LOAD_ARGS_4(r26,r25,r24,r23)#define K_LOAD_ARGS_6(r26,r25,r24,r23,r22,r21) \ register unsigned long __r21 __asm__("r21") = (unsigned long)r21; \ K_LOAD_ARGS_5(r26,r25,r24,r23,r22)#define K_ASM_ARGS_0#define K_ASM_ARGS_1 , "r" (__r26)#define K_ASM_ARGS_2 , "r" (__r26), "r" (__r25)#define K_ASM_ARGS_3 , "r" (__r26), "r" (__r25), "r" (__r24)#define K_ASM_ARGS_4 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23)#define K_ASM_ARGS_5 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22)#define K_ASM_ARGS_6 , "r" (__r26), "r" (__r25), "r" (__r24), "r" (__r23), "r" (__r22), "r" (__r21)#define _syscall0(type,name) \type name(void) \{ \ return K_INLINE_SYSCALL(name, 0); \}#define _syscall1(type,name,type1,arg1) \type name(type1 arg1) \{ \ return K_INLINE_SYSCALL(name, 1, arg1); \}#define _syscall2(type,name,type1,arg1,type2,arg2) \type name(type1 arg1, type2 arg2) \{ \ return K_INLINE_SYSCALL(name, 2, arg1, arg2); \}#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \type name(type1 arg1, type2 arg2, type3 arg3) \{ \ return K_INLINE_SYSCALL(name, 3, arg1, arg2, arg3); \}#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \{ \ return K_INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4); \}/* select takes 5 arguments */#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \{ \ return K_INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5); \}/* mmap takes 6 arguments */#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \{ \ return K_INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6); \}#ifdef __KERNEL_SYSCALLS__static inline int idle(void){ extern int sys_idle(void); return sys_idle();}static inline int pause(void){ extern int sys_pause(void); return sys_pause();}static inline int sync(void){ extern int sys_sync(void); return sys_sync();}static inline pid_t setsid(void){ extern int sys_setsid(void); return sys_setsid();}static inline int write(int fd, const char *buf, off_t count){ extern int sys_write(int, const char *, int); return sys_write(fd, buf, count);}static inline int read(int fd, char *buf, off_t count){ extern int sys_read(int, char *, int); return sys_read(fd, buf, count);}static inline off_t lseek(int fd, off_t offset, int count){ extern off_t sys_lseek(int, off_t, int); return sys_lseek(fd, offset, count);}static inline int dup(int fd){ extern int sys_dup(int); return sys_dup(fd);}static inline int open(const char *file, int flag, int mode){ extern long sys_open(const char *, int, int); return sys_open(file, flag, mode);}static inline int close(int fd){ return sys_close(fd);}static inline int _exit(int exitcode){ extern int sys_exit(int) __attribute__((noreturn)); return sys_exit(exitcode);}static inline pid_t waitpid(pid_t pid, int *wait_stat, int options){ extern int sys_wait4(int, int *, int, struct rusage *); return sys_wait4((int)pid, wait_stat, options, NULL);}static inline int delete_module(const char *name){ extern int sys_delete_module(const char *name); return sys_delete_module(name);}static inline pid_t wait(int * wait_stat){ extern int sys_wait4(int, int *, int, struct rusage *); return sys_wait4(-1, wait_stat, 0, NULL);}static inline int execve(char *filename, char * argv [], char * envp[]){ extern int __execve(char *, char **, char **, struct task_struct *); return __execve(filename, argv, envp, current);}#endif#undef STR#endif /* _ASM_PARISC_UNISTD_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -