unistd.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:14k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  include/asm-s390/unistd.h
  3.  *
  4.  *  S390 version
  5.  *
  6.  *  Derived from "include/asm-i386/unistd.h"
  7.  */
  8. #ifndef _ASM_S390_UNISTD_H_
  9. #define _ASM_S390_UNISTD_H_
  10. /*
  11.  * This file contains the system call numbers.
  12.  */
  13. #define __NR_exit                 1
  14. #define __NR_fork                 2
  15. #define __NR_read                 3
  16. #define __NR_write                4
  17. #define __NR_open                 5
  18. #define __NR_close                6
  19. #define __NR_creat                8
  20. #define __NR_link                 9
  21. #define __NR_unlink              10
  22. #define __NR_execve              11
  23. #define __NR_chdir               12
  24. #define __NR_mknod               14
  25. #define __NR_chmod               15
  26. #define __NR_lseek               19
  27. #define __NR_getpid              20
  28. #define __NR_mount               21
  29. #define __NR_umount              22
  30. #define __NR_ptrace              26
  31. #define __NR_alarm               27
  32. #define __NR_pause               29
  33. #define __NR_utime               30
  34. #define __NR_access              33
  35. #define __NR_nice                34
  36. #define __NR_sync                36
  37. #define __NR_kill                37
  38. #define __NR_rename              38
  39. #define __NR_mkdir               39
  40. #define __NR_rmdir               40
  41. #define __NR_dup                 41
  42. #define __NR_pipe                42
  43. #define __NR_times               43
  44. #define __NR_brk                 45
  45. #define __NR_signal              48
  46. #define __NR_acct                51
  47. #define __NR_umount2             52
  48. #define __NR_ioctl               54
  49. #define __NR_fcntl               55
  50. #define __NR_setpgid             57
  51. #define __NR_umask               60
  52. #define __NR_chroot              61
  53. #define __NR_ustat               62
  54. #define __NR_dup2                63
  55. #define __NR_getppid             64
  56. #define __NR_getpgrp             65
  57. #define __NR_setsid              66
  58. #define __NR_sigaction           67
  59. #define __NR_sigsuspend          72
  60. #define __NR_sigpending          73
  61. #define __NR_sethostname         74
  62. #define __NR_setrlimit           75
  63. #define __NR_getrusage           77
  64. #define __NR_gettimeofday        78
  65. #define __NR_settimeofday        79
  66. #define __NR_symlink             83
  67. #define __NR_readlink            85
  68. #define __NR_uselib              86
  69. #define __NR_swapon              87
  70. #define __NR_reboot              88
  71. #define __NR_readdir             89
  72. #define __NR_mmap                90
  73. #define __NR_munmap              91
  74. #define __NR_truncate            92
  75. #define __NR_ftruncate           93
  76. #define __NR_fchmod              94
  77. #define __NR_getpriority         96
  78. #define __NR_setpriority         97
  79. #define __NR_statfs              99
  80. #define __NR_fstatfs            100
  81. #define __NR_socketcall         102
  82. #define __NR_syslog             103
  83. #define __NR_setitimer          104
  84. #define __NR_getitimer          105
  85. #define __NR_stat               106
  86. #define __NR_lstat              107
  87. #define __NR_fstat              108
  88. #define __NR_vhangup            111
  89. #define __NR_idle               112
  90. #define __NR_wait4              114
  91. #define __NR_swapoff            115
  92. #define __NR_sysinfo            116
  93. #define __NR_ipc                117
  94. #define __NR_fsync              118
  95. #define __NR_sigreturn          119
  96. #define __NR_clone              120
  97. #define __NR_setdomainname      121
  98. #define __NR_uname              122
  99. #define __NR_adjtimex           124
  100. #define __NR_mprotect           125
  101. #define __NR_sigprocmask        126
  102. #define __NR_create_module      127
  103. #define __NR_init_module        128
  104. #define __NR_delete_module      129
  105. #define __NR_get_kernel_syms    130
  106. #define __NR_quotactl           131
  107. #define __NR_getpgid            132
  108. #define __NR_fchdir             133
  109. #define __NR_bdflush            134
  110. #define __NR_sysfs              135
  111. #define __NR_personality        136
  112. #define __NR_afs_syscall        137 /* Syscall for Andrew File System */
  113. #define __NR_getdents           141
  114. #define __NR_select             142
  115. #define __NR_flock              143
  116. #define __NR_msync              144
  117. #define __NR_readv              145
  118. #define __NR_writev             146
  119. #define __NR_getsid             147
  120. #define __NR_fdatasync          148
  121. #define __NR__sysctl            149
  122. #define __NR_mlock              150
  123. #define __NR_munlock            151
  124. #define __NR_mlockall           152
  125. #define __NR_munlockall         153
  126. #define __NR_sched_setparam             154
  127. #define __NR_sched_getparam             155
  128. #define __NR_sched_setscheduler         156
  129. #define __NR_sched_getscheduler         157
  130. #define __NR_sched_yield                158
  131. #define __NR_sched_get_priority_max     159
  132. #define __NR_sched_get_priority_min     160
  133. #define __NR_sched_rr_get_interval      161
  134. #define __NR_nanosleep          162
  135. #define __NR_mremap             163
  136. #define __NR_query_module       167
  137. #define __NR_poll               168
  138. #define __NR_nfsservctl         169
  139. #define __NR_prctl              172
  140. #define __NR_rt_sigreturn       173
  141. #define __NR_rt_sigaction       174
  142. #define __NR_rt_sigprocmask     175
  143. #define __NR_rt_sigpending      176
  144. #define __NR_rt_sigtimedwait    177
  145. #define __NR_rt_sigqueueinfo    178
  146. #define __NR_rt_sigsuspend      179
  147. #define __NR_pread              180
  148. #define __NR_pwrite             181
  149. #define __NR_getcwd             183
  150. #define __NR_capget             184
  151. #define __NR_capset             185
  152. #define __NR_sigaltstack        186
  153. #define __NR_sendfile           187
  154. #define __NR_getpmsg 188
  155. #define __NR_putpmsg 189
  156. #define __NR_vfork 190
  157. #define __NR_getrlimit 191 /* SuS compliant getrlimit */
  158. #define __NR_lchown   198
  159. #define __NR_getuid   199
  160. #define __NR_getgid   200
  161. #define __NR_geteuid   201
  162. #define __NR_getegid   202
  163. #define __NR_setreuid   203
  164. #define __NR_setregid   204
  165. #define __NR_getgroups   205
  166. #define __NR_setgroups   206
  167. #define __NR_fchown   207
  168. #define __NR_setresuid   208
  169. #define __NR_getresuid   209
  170. #define __NR_setresgid   210
  171. #define __NR_getresgid   211
  172. #define __NR_chown   212
  173. #define __NR_setuid   213
  174. #define __NR_setgid   214
  175. #define __NR_setfsuid   215
  176. #define __NR_setfsgid   216
  177. #define __NR_pivot_root         217
  178. #define __NR_mincore            218
  179. #define __NR_madvise            219
  180. /*
  181.  * Numbers 224-235 are reserved for posix acl
  182.  */
  183. #define __NR_gettid 236
  184. #define __NR_tkill 237
  185. /* user-visible error numbers are in the range -1 - -122: see <asm-s390/errno.h> */
  186. #define __syscall_return(type, res)                          
  187. do {                                                         
  188.         if ((unsigned long)(res) >= (unsigned long)(-125)) { 
  189.                 errno = -(res);                              
  190.                 res = -1;                                    
  191.         }                                                    
  192.         return (type) (res);                                 
  193. } while (0)
  194. #define _svc_clobber "2", "cc", "memory"
  195. #define _syscall0(type,name)                                 
  196. type name(void) {                                            
  197.         long __res;                                          
  198.         __asm__ __volatile__ (                               
  199.                 "    svc %b1n"                              
  200.                 "    lgr  %0,2"                              
  201.                 : "=d" (__res)                               
  202.                 : "i" (__NR_##name)                          
  203.                 : _svc_clobber );                            
  204.         __syscall_return(type,__res);                        
  205. }
  206. #define _syscall1(type,name,type1,arg1)                      
  207. type name(type1 arg1) {                                      
  208.         register type1 __arg1 asm("2") = arg1;               
  209.         long __res;                                          
  210.         __asm__ __volatile__ (                               
  211.                 "    svc %b1n"                              
  212.                 "    lgr  %0,2"                              
  213.                 : "=d" (__res)                               
  214.                 : "i" (__NR_##name),                         
  215.                   "d" (__arg1)                               
  216.                 : _svc_clobber );                            
  217.         __syscall_return(type,__res);                        
  218. }
  219. #define _syscall2(type,name,type1,arg1,type2,arg2)           
  220. type name(type1 arg1, type2 arg2) {                          
  221.         register type1 __arg1 asm("2") = arg1;               
  222.         register type2 __arg2 asm("3") = arg2;               
  223.         long __res;                                          
  224.         __asm__ __volatile__ (                               
  225.                 "    svc %b1n"                              
  226.                 "    lgr  %0,2"                              
  227.                 : "=d" (__res)                               
  228.                 : "i" (__NR_##name),                         
  229.                   "d" (__arg1),                              
  230.                   "d" (__arg2)                               
  231.                 : _svc_clobber );                            
  232.         __syscall_return(type,__res);                        
  233. }
  234. #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)
  235. type name(type1 arg1, type2 arg2, type3 arg3) {              
  236.         register type1 __arg1 asm("2") = arg1;               
  237.         register type2 __arg2 asm("3") = arg2;               
  238.         register type3 __arg3 asm("4") = arg3;               
  239.         long __res;                                          
  240.         __asm__ __volatile__ (                               
  241.                 "    svc %b1n"                              
  242.                 "    lgr  %0,2"                              
  243.                 : "=d" (__res)                               
  244.                 : "i" (__NR_##name),                         
  245.                   "d" (__arg1),                              
  246.                   "d" (__arg2),                              
  247.                   "d" (__arg3)                               
  248.                 : _svc_clobber );                            
  249.         __syscall_return(type,__res);                        
  250. }
  251. #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,
  252.                   type4,name4)                               
  253. type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {  
  254.         register type1 __arg1 asm("2") = arg1;               
  255.         register type2 __arg2 asm("3") = arg2;               
  256.         register type3 __arg3 asm("4") = arg3;               
  257.         register type4 __arg4 asm("5") = arg4;               
  258.         long __res;                                          
  259.         __asm__ __volatile__ (                               
  260.                 "    svc %b1n"                              
  261.                 "    lgr  %0,2"                              
  262.                 : "=d" (__res)                               
  263.                 : "i" (__NR_##name),                         
  264.                   "d" (__arg1),                              
  265.                   "d" (__arg2),                              
  266.                   "d" (__arg3),                              
  267.                   "d" (__arg4)                               
  268.                 : _svc_clobber );                            
  269.         __syscall_return(type,__res);                        
  270. }
  271. #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,
  272.                   type4,name4,type5,name5)                   
  273. type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    
  274.           type5 arg5) {                                      
  275.         register type1 __arg1 asm("2") = arg1;               
  276.         register type2 __arg2 asm("3") = arg2;               
  277.         register type3 __arg3 asm("4") = arg3;               
  278.         register type4 __arg4 asm("5") = arg4;               
  279.         register type5 __arg5 asm("6") = arg5;               
  280.         long __res;                                          
  281.         __asm__ __volatile__ (                               
  282.                 "    svc %b1n"                              
  283.                 "    lgr  %0,2"                              
  284.                 : "=d" (__res)                               
  285.                 : "i" (__NR_##name),                         
  286.                   "d" (__arg1),                              
  287.                   "d" (__arg2),                              
  288.                   "d" (__arg3),                              
  289.                   "d" (__arg4),                              
  290.                   "d" (__arg5)                               
  291.                 : _svc_clobber );                            
  292.         __syscall_return(type,__res);                        
  293. }
  294. #ifdef __KERNEL_SYSCALLS__
  295. /*
  296.  * we need this inline - forking from kernel space will result
  297.  * in NO COPY ON WRITE (!!!), until an execve is executed. This
  298.  * is no problem, but for the stack. This is handled by not letting
  299.  * main() use the stack at all after fork(). Thus, no function
  300.  * calls - which means inline code for fork too, as otherwise we
  301.  * would use the stack upon exit from 'fork()'.
  302.  *
  303.  * Actually only pause and fork are needed inline, so that there
  304.  * won't be any messing with the stack from main(), but we define
  305.  * some others too.
  306.  */
  307. #define __NR__exit __NR_exit
  308. static inline _syscall0(int,idle)
  309. static inline _syscall0(int,pause)
  310. static inline _syscall0(int,sync)
  311. static inline _syscall0(pid_t,setsid)
  312. static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
  313. static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
  314. static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
  315. static inline _syscall1(int,dup,int,fd)
  316. static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
  317. static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
  318. static inline _syscall1(int,close,int,fd)
  319. static inline _syscall1(int,_exit,int,exitcode)
  320. static inline _syscall1(int,delete_module,const char *,name)
  321. static inline _syscall2(long,stat,char *,filename,struct stat *,statbuf)
  322. static inline pid_t waitpid(int pid, int * wait_stat, int flags)
  323. {
  324.         return sys_wait4(pid, wait_stat, flags, NULL);
  325. }
  326. static inline pid_t wait(int * wait_stat)
  327. {
  328.         return waitpid(-1,wait_stat,0);
  329. }
  330. #endif
  331. #endif /* _ASM_S390_UNISTD_H_ */