Know How - Linux

Leider hört folgende Liste bei Nummer 190 auf da sie für Kernel 2.2 ist: docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

Meine Liste ist leider auch noch auf dem stand der neuesten Kernelversion. ;(

Letzter Update:
2008-05-23 Inhaltlich unverändert, nur Link erfasst und Text ist nun politisch korrekter ;)

Syscalls i386 basierend auf kernel 2.4

Folgende Liste ist aus i386/kernel/entry.S geklaut. Da ich nicht weiß, wie man bei Bamboo ab 0 zählt, beginnt die Liste mit syscall 1. (syscall 0 erwähne ich am Anfang.)

Alle Angaben ergänze ich hin und wieder wenn ich die Not dazu empfinde. Insgesamt empfinde ich die Liste der Syscalls als viel zu lang. Warum ist es notwendig, dass ein modernes Kernel so viele verschiedene Funktionen den Userspace-Programmen zur Verfügung stellen muss? Ich mag Dinge die einfach sind, aber über 256 SysCalls überschreitet eindeutig die Schwelle jeglichen Grades, die man noch als irgendwie einfach bezeichnen könnte.

Ich suche die Syscalls wie folgt:
cd /usr/src/linux
while echo "=========="
      read c
do
  find * -type f -name '*.c' |
  xargs fgrep sys_$c\( |
  grep asmlink
done

Syscall 0 nennt sich setup und wird nicht mehr verwendet.

  1. kernel/exit.c:asmlinkage void sys_exit(int error_code):
    exit-Funktion von Programmen

  2. arch/i386/kernel/process.c:asmlinkage int sys_fork(struct pt_regs regs):
    fork() call, momentan habe ich keine Erklärung für die Parameter

  3. fs/read_write.c:asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count):

  4. fs/read_write.c:asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count):

  5. fs/open.c:asmlinkage long sys_open(const char * filename, int flags, int mode):

  6. fs/open.c:asmlinkage long sys_close(unsigned int fd):

  7. kernel/exit.c:asmlinkage long sys_waitpid(pid_t pid,unsigned int * stat_addr, int options):

  8. fs/open.c:asmlinkage long sys_creat(const char * pathname, int mode):

  9. fs/namei.c:asmlinkage long sys_link(const char * oldname, const char * newname):

  10. fs/namei.c:asmlinkage long sys_unlink(const char * pathname):



  11. arch/i386/kernel/process.c:asmlinkage int sys_execve(struct pt_regs regs):
    hier fehlen noch infos

  12. fs/open.c:asmlinkage long sys_chdir(const char * filename):

  13. kernel/time.c:asmlinkage long sys_time(int * tloc):

  14. fs/namei.c:asmlinkage long sys_mknod(const char * filename, int mode, dev_t dev):

  15. fs/open.c:asmlinkage long sys_chmod(const char * filename, mode_t mode):

  16. kernel/uid16.c:asmlinkage long sys_lchown16(const char * filename, old_uid_t user, old_gid_t group):
    Alte chown()-Version für IDs mit 16 Bit

  17. not used: old break syscall holder

  18. fs/stat.c:asmlinkage long sys_stat(char * filename, struct _old_kernel_stat * statbuf):

  19. fs/read_write.c:asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin):

  20. kernel/timer.c:asmlinkage long sys_getpid(void):



  21. fs/namespace.c:asmlinkage long sys_mount(char * dev_name, char * dir_name, char * type, unsigned long flags, void * data):

  22. fs/namespace.c:asmlinkage long sys_oldumount(char * name):

  23. kernel/uid16.c:asmlinkage long sys_setuid16(old_uid_t uid):

  24. kernel/uid16.c:asmlinkage long sys_getuid16(void):

  25. kernel/time.c:asmlinkage long sys_stime(int * tptr):

  26. arch/i386/kernel/ptrace.c:asmlinkage int sys_ptrace(long request, long pid, long addr, long data):

  27. kernel/timer.c:asmlinkage unsigned long sys_alarm(unsigned int seconds):

  28. fstat
  29. pause
  30. utime /* 30 */




  31. ni_syscall /* old stty syscall holder */
  32. ni_syscall /* old gtty syscall holder */
  33. access
  34. nice
  35. ni_syscall /* 35 / / old ftime syscall holder */
  36. sync
  37. kill
  38. rename
  39. mkdir
  40. rmdir /* 40 */




  41. dup
  42. pipe
  43. times
  44. ni_syscall /* old prof syscall holder */
  45. brk /* 45 */
  46. setgid16
  47. getgid16
  48. signal
  49. geteuid16
  50. getegid16 /* 50 */




  51. acct
  52. fs/namespace.c:asmlinkage long sys_umount(char * name, int flags): formerly was phys which was not used
  53. ni_syscall /* old lock syscall holder */
  54. ioctl
  55. fcntl /* 55 */
  56. ni_syscall /* old mpx syscall holder */
  57. setpgid
  58. ni_syscall /* old ulimit syscall holder */
  59. olduname
  60. umask /* 60 */




  61. chroot
  62. ustat
  63. dup2
  64. getppid
  65. getpgrp /* 65 */
  66. setsid
  67. sigaction
  68. sgetmask
  69. ssetmask
  70. setreuid16 /* 70 */




  71. setregid16
  72. sigsuspend
  73. sigpending
  74. sethostname
  75. setrlimit /* 75 */
  76. old_getrlimit
  77. getrusage
  78. gettimeofday
  79. settimeofday
  80. getgroups16 /* 80 */




  81. setgroups16
  82. old_select
  83. symlink
  84. lstat
  85. readlink /* 85 */
  86. uselib
  87. swapon
  88. reboot
  89. old_readdir
  90. old_mmap /* 90 */




  91. munmap
  92. truncate
  93. ftruncate
  94. fchmod
  95. fchown16 /* 95 */
  96. getpriority
  97. setpriority
  98. ni_syscall /* old profil syscall holder */
  99. statfs
  100. fstatfs /* 100 */




  101. ioperm
  102. socketcall
  103. syslog
  104. setitimer
  105. getitimer /* 105 */
  106. newstat
  107. newlstat
  108. newfstat
  109. uname
  110. iopl /* 110 */




  111. vhangup
  112. ni_syscall /* old "idle" system call */
  113. vm86old
  114. wait4
  115. swapoff /* 115 */
  116. sysinfo
  117. ipc
  118. fsync
  119. sigreturn
  120. clone /* 120 */




  121. setdomainname
  122. newuname
  123. modify_ldt
  124. adjtimex
  125. mprotect /* 125 */
  126. sigprocmask
  127. create_module
  128. init_module
  129. delete_module
  130. get_kernel_syms /* 130 */




  131. quotactl
  132. getpgid
  133. fchdir
  134. bdflush
  135. sysfs /* 135 */
  136. personality
  137. ni_syscall /* for afs_syscall */
  138. setfsuid16
  139. setfsgid16
  140. llseek /* 140 */




  141. getdents
  142. select
  143. flock
  144. msync
  145. readv /* 145 */
  146. writev
  147. getsid
  148. fdatasync
  149. sysctl
  150. mlock /* 150 */




  151. munlock
  152. mlockall
  153. munlockall
  154. sched_setparam
  155. sched_getparam /* 155 */
  156. sched_setscheduler
  157. sched_getscheduler
  158. sched_yield
  159. sched_get_priority_max
  160. sched_get_priority_min /* 160 */




  161. sched_rr_get_interval
  162. nanosleep
  163. mremap
  164. setresuid16
  165. getresuid16 /* 165 */
  166. vm86
  167. query_module
  168. poll
  169. nfsservctl
  170. setresgid16 /* 170 */




  171. getresgid16
  172. prctl
  173. rt_sigreturn
  174. rt_sigaction
  175. rt_sigprocmask /* 175 */
  176. rt_sigpending
  177. rt_sigtimedwait
  178. rt_sigqueueinfo
  179. rt_sigsuspend
  180. pread /* 180 */




  181. pwrite
  182. chown16
  183. getcwd
  184. capget
  185. capset /* 185 */
  186. sigaltstack
  187. sendfile
  188. ni_syscall /* streams1 */
  189. ni_syscall /* streams2 */
  190. vfork /* 190 */




  191. getrlimit
  192. mmap2
  193. truncate64
  194. ftruncate64
  195. stat64 /* 195 */
  196. lstat64
  197. fstat64
  198. lchown
  199. getuid
  200. getgid /* 200 */




  201. geteuid
  202. getegid
  203. setreuid
  204. setregid
  205. getgroups /* 205 */
  206. setgroups
  207. fchown
  208. setresuid
  209. getresuid
  210. setresgid /* 210 */




  211. getresgid
  212. chown
  213. setuid
  214. setgid
  215. setfsuid /* 215 */
  216. setfsgid
  217. pivot_root
  218. mincore
  219. madvise
  220. getdents64 /* 220 */




  221. fcntl64
  222. tux
  223. ni_syscall /* Reserved for Security */
  224. gettid
  225. readahead /* 225 */
  226. setxattr
  227. lsetxattr
  228. fsetxattr
  229. getxattr
  230. lgetxattr /* 230 */




  231. fgetxattr
  232. listxattr
  233. llistxattr
  234. flistxattr
  235. removexattr /* 235 */
  236. lremovexattr
  237. fremovexattr
  238. tkill
  239. sendfile64 /* reserved for sendfile64 */
  240. futex /* 240 */




  241. sched_setaffinity
  242. sched_getaffinity
  243. set_thread_area
  244. get_thread_area
  245. ni_syscall /* 245 sys_io_setup */
  246. ni_syscall /* sys_io_destroy */
  247. ni_syscall /* sys_io_getevents */
  248. ni_syscall /* sys_io_submit */
  249. ni_syscall /* sys_io_cancel */
  250. ni_syscall /* 250 sys_alloc_hugepages */




  251. ni_syscall /* sys_free_hugepages */
  252. exit_group
  253. lookup_dcookie
  254. ni_syscall
  255. ni_syscall /* 255 sys_epoll_ctl */
  256. ni_syscall /* sys_epoll_wait */
  257. ni_syscall /* sys_remap_file_pages */
  258. set_tid_address
  259. ni_syscall
  260. ni_syscall /* 260 */




  261. ni_syscall
  262. ni_syscall
  263. ni_syscall
  264. ni_syscall
  265. ni_syscall /* 265 */
  266. ni_syscall
  267. ni_syscall
  268. ni_syscall
  269. ni_syscall
  270. ni_syscall /* 270 */




  271. ni_syscall
  272. ni_syscall
  273. vserver: used for linux-vserver.org/