unistd.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:15k
源码类别:

嵌入式Linux

开发平台:

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. /* user-visible error numbers are in the range -1 - -122: see <asm-s390/errno.h> */
  212. #define __syscall_return(type, res)                          
  213. do {                                                         
  214.         if ((unsigned long)(res) >= (unsigned long)(-125)) { 
  215.                 errno = -(res);                              
  216.                 res = -1;                                    
  217.         }                                                    
  218.         return (type) (res);                                 
  219. } while (0)
  220. #define _svc_clobber "2", "cc", "memory"
  221. #define _syscall0(type,name)                                 
  222. type name(void) {                                            
  223.         long __res;                                          
  224.         __asm__ __volatile__ (                               
  225.                 "    svc %b1n"                              
  226.                 "    lr  %0,2"                               
  227.                 : "=d" (__res)                               
  228.                 : "i" (__NR_##name)                          
  229.                 : _svc_clobber );                            
  230.         __syscall_return(type,__res);                        
  231. }
  232. #define _syscall1(type,name,type1,arg1)                      
  233. type name(type1 arg1) {                                      
  234.         register type1 __arg1 asm("2") = arg1;               
  235.         long __res;                                          
  236.         __asm__ __volatile__ (                               
  237.                 "    svc %b1n"                              
  238.                 "    lr  %0,2"                               
  239.                 : "=d" (__res)                               
  240.                 : "i" (__NR_##name),                         
  241.                   "d" (__arg1)                               
  242.                 : _svc_clobber );                            
  243.         __syscall_return(type,__res);                        
  244. }
  245. #define _syscall2(type,name,type1,arg1,type2,arg2)           
  246. type name(type1 arg1, type2 arg2) {                          
  247.         register type1 __arg1 asm("2") = arg1;               
  248.         register type2 __arg2 asm("3") = arg2;               
  249.         long __res;                                          
  250.         __asm__ __volatile__ (                               
  251.                 "    svc %b1n"                              
  252.                 "    lr  %0,2"                               
  253.                 : "=d" (__res)                               
  254.                 : "i" (__NR_##name),                         
  255.                   "d" (__arg1),                              
  256.                   "d" (__arg2)                               
  257.                 : _svc_clobber );                            
  258.         __syscall_return(type,__res);                        
  259. }
  260. #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)
  261. type name(type1 arg1, type2 arg2, type3 arg3) {              
  262.         register type1 __arg1 asm("2") = arg1;               
  263.         register type2 __arg2 asm("3") = arg2;               
  264.         register type3 __arg3 asm("4") = arg3;               
  265.         long __res;                                          
  266.         __asm__ __volatile__ (                               
  267.                 "    svc %b1n"                              
  268.                 "    lr  %0,2"                               
  269.                 : "=d" (__res)                               
  270.                 : "i" (__NR_##name),                         
  271.                   "d" (__arg1),                              
  272.                   "d" (__arg2),                              
  273.                   "d" (__arg3)                               
  274.                 : _svc_clobber );                            
  275.         __syscall_return(type,__res);                        
  276. }
  277. #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,
  278.                   type4,name4)                               
  279. type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {  
  280.         register type1 __arg1 asm("2") = arg1;               
  281.         register type2 __arg2 asm("3") = arg2;               
  282.         register type3 __arg3 asm("4") = arg3;               
  283.         register type4 __arg4 asm("5") = arg4;               
  284.         long __res;                                          
  285.         __asm__ __volatile__ (                               
  286.                 "    svc %b1n"                              
  287.                 "    lr  %0,2"                               
  288.                 : "=d" (__res)                               
  289.                 : "i" (__NR_##name),                         
  290.                   "d" (__arg1),                              
  291.                   "d" (__arg2),                              
  292.                   "d" (__arg3),                              
  293.                   "d" (__arg4)                               
  294.                 : _svc_clobber );                            
  295.         __syscall_return(type,__res);                        
  296. }
  297. #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,
  298.                   type4,name4,type5,name5)                   
  299. type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    
  300.           type5 arg5) {                                      
  301.         register type1 __arg1 asm("2") = arg1;               
  302.         register type2 __arg2 asm("3") = arg2;               
  303.         register type3 __arg3 asm("4") = arg3;               
  304.         register type4 __arg4 asm("5") = arg4;               
  305.         register type5 __arg5 asm("6") = arg5;               
  306.         long __res;                                          
  307.         __asm__ __volatile__ (                               
  308.                 "    svc %b1n"                              
  309.                 "    lr  %0,2"                               
  310.                 : "=d" (__res)                               
  311.                 : "i" (__NR_##name),                         
  312.                   "d" (__arg1),                              
  313.                   "d" (__arg2),                              
  314.                   "d" (__arg3),                              
  315.                   "d" (__arg4),                              
  316.                   "d" (__arg5)                               
  317.                 : _svc_clobber );                            
  318.         __syscall_return(type,__res);                        
  319. }
  320. #ifdef __KERNEL_SYSCALLS__
  321. /*
  322.  * we need this inline - forking from kernel space will result
  323.  * in NO COPY ON WRITE (!!!), until an execve is executed. This
  324.  * is no problem, but for the stack. This is handled by not letting
  325.  * main() use the stack at all after fork(). Thus, no function
  326.  * calls - which means inline code for fork too, as otherwise we
  327.  * would use the stack upon exit from 'fork()'.
  328.  *
  329.  * Actually only pause and fork are needed inline, so that there
  330.  * won't be any messing with the stack from main(), but we define
  331.  * some others too.
  332.  */
  333. #define __NR__exit __NR_exit
  334. static inline _syscall0(int,idle)
  335. static inline _syscall0(int,pause)
  336. static inline _syscall0(int,sync)
  337. static inline _syscall0(pid_t,setsid)
  338. static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
  339. static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
  340. static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
  341. static inline _syscall1(int,dup,int,fd)
  342. static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
  343. static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
  344. static inline _syscall1(int,close,int,fd)
  345. static inline _syscall1(int,_exit,int,exitcode)
  346. static inline _syscall1(int,delete_module,const char *,name)
  347. static inline _syscall2(long,stat,char *,filename,struct stat *,statbuf)
  348. static inline pid_t waitpid(int pid, int * wait_stat, int flags)
  349. {
  350.         return sys_wait4(pid, wait_stat, flags, NULL);
  351. }
  352. static inline pid_t wait(int * wait_stat)
  353. {
  354.         return waitpid(-1,wait_stat,0);
  355. }
  356. #endif
  357. #endif /* _ASM_S390_UNISTD_H_ */