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

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