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

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