shim_table.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. /* Copyright (C) 2014 Stony Brook University
  2. This file is part of Graphene Library OS.
  3. Graphene Library OS is free software: you can redistribute it and/or
  4. modify it under the terms of the GNU Lesser General Public License
  5. as published by the Free Software Foundation, either version 3 of the
  6. License, or (at your option) any later version.
  7. Graphene Library OS is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Lesser General Public License for more details.
  11. You should have received a copy of the GNU Lesser General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  13. /*
  14. * shim_table.c
  15. *
  16. * This file contains the system call table used by application libraries.
  17. */
  18. #include <shim_internal.h>
  19. #include <shim_table.h>
  20. void debug_unsupp(int num) {
  21. debug("Unsupported system call %d\n", num);
  22. }
  23. shim_fp shim_table[LIBOS_SYSCALL_BOUND] = {
  24. (shim_fp)__shim_read,
  25. (shim_fp)__shim_write,
  26. (shim_fp)__shim_open,
  27. (shim_fp)__shim_close,
  28. (shim_fp)__shim_stat,
  29. (shim_fp)__shim_fstat,
  30. (shim_fp)__shim_lstat,
  31. (shim_fp)__shim_poll,
  32. (shim_fp)__shim_lseek,
  33. (shim_fp)__shim_mmap,
  34. (shim_fp)__shim_mprotect,
  35. (shim_fp)__shim_munmap,
  36. (shim_fp)__shim_brk,
  37. (shim_fp)__shim_rt_sigaction,
  38. (shim_fp)__shim_rt_sigprocmask,
  39. (shim_fp)__shim_rt_sigreturn,
  40. (shim_fp)__shim_ioctl,
  41. (shim_fp)__shim_pread64,
  42. (shim_fp)__shim_pwrite64,
  43. (shim_fp)__shim_readv,
  44. (shim_fp)__shim_writev,
  45. (shim_fp)__shim_access,
  46. (shim_fp)__shim_pipe,
  47. (shim_fp)__shim_select,
  48. (shim_fp)__shim_sched_yield,
  49. (shim_fp)__shim_mremap,
  50. (shim_fp)__shim_msync,
  51. (shim_fp)__shim_mincore,
  52. (shim_fp)__shim_madvise,
  53. (shim_fp)__shim_shmget,
  54. (shim_fp)__shim_shmat,
  55. (shim_fp)__shim_shmctl,
  56. (shim_fp)__shim_dup,
  57. (shim_fp)__shim_dup2,
  58. (shim_fp)__shim_pause,
  59. (shim_fp)__shim_nanosleep,
  60. (shim_fp)__shim_getitimer,
  61. (shim_fp)__shim_alarm,
  62. (shim_fp)__shim_setitimer,
  63. (shim_fp)__shim_getpid,
  64. (shim_fp)__shim_sendfile,
  65. (shim_fp)__shim_socket,
  66. (shim_fp)__shim_connect,
  67. (shim_fp)__shim_accept,
  68. (shim_fp)__shim_sendto,
  69. (shim_fp)__shim_recvfrom,
  70. (shim_fp)__shim_sendmsg,
  71. (shim_fp)__shim_recvmsg,
  72. (shim_fp)__shim_shutdown,
  73. (shim_fp)__shim_bind,
  74. (shim_fp)__shim_listen,
  75. (shim_fp)__shim_getsockname,
  76. (shim_fp)__shim_getpeername,
  77. (shim_fp)__shim_socketpair,
  78. (shim_fp)__shim_setsockopt,
  79. (shim_fp)__shim_getsockopt,
  80. (shim_fp)__shim_clone,
  81. (shim_fp)__shim_fork,
  82. (shim_fp)__shim_vfork,
  83. (shim_fp)__shim_execve,
  84. (shim_fp)__shim_exit,
  85. (shim_fp)__shim_wait4,
  86. (shim_fp)__shim_kill,
  87. (shim_fp)__shim_uname,
  88. (shim_fp)__shim_semget,
  89. (shim_fp)__shim_semop,
  90. (shim_fp)__shim_semctl,
  91. (shim_fp)__shim_shmdt,
  92. (shim_fp)__shim_msgget,
  93. (shim_fp)__shim_msgsnd,
  94. (shim_fp)__shim_msgrcv,
  95. (shim_fp)__shim_msgctl,
  96. (shim_fp)__shim_fcntl,
  97. (shim_fp)__shim_flock,
  98. (shim_fp)__shim_fsync,
  99. (shim_fp)__shim_fdatasync,
  100. (shim_fp)__shim_truncate,
  101. (shim_fp)__shim_ftruncate,
  102. (shim_fp)__shim_getdents,
  103. (shim_fp)__shim_getcwd,
  104. (shim_fp)__shim_chdir,
  105. (shim_fp)__shim_fchdir,
  106. (shim_fp)__shim_rename,
  107. (shim_fp)__shim_mkdir,
  108. (shim_fp)__shim_rmdir,
  109. (shim_fp)__shim_creat,
  110. (shim_fp)__shim_link,
  111. (shim_fp)__shim_unlink,
  112. (shim_fp)__shim_symlink,
  113. (shim_fp)__shim_readlink,
  114. (shim_fp)__shim_chmod,
  115. (shim_fp)__shim_fchmod,
  116. (shim_fp)__shim_chown,
  117. (shim_fp)__shim_fchown,
  118. (shim_fp)__shim_lchown,
  119. (shim_fp)__shim_umask,
  120. (shim_fp)__shim_gettimeofday,
  121. (shim_fp)__shim_getrlimit,
  122. (shim_fp)__shim_getrusage,
  123. (shim_fp)__shim_sysinfo,
  124. (shim_fp)__shim_times,
  125. (shim_fp)__shim_ptrace,
  126. (shim_fp)__shim_getuid,
  127. (shim_fp)__shim_syslog,
  128. (shim_fp)__shim_getgid,
  129. (shim_fp)__shim_setuid,
  130. (shim_fp)__shim_setgid,
  131. (shim_fp)__shim_geteuid,
  132. (shim_fp)__shim_getegid,
  133. (shim_fp)__shim_setpgid,
  134. (shim_fp)__shim_getppid,
  135. (shim_fp)__shim_getpgrp,
  136. (shim_fp)__shim_setsid,
  137. (shim_fp)__shim_setreuid,
  138. (shim_fp)__shim_setregid,
  139. (shim_fp)__shim_getgroups,
  140. (shim_fp)__shim_setgroups,
  141. (shim_fp)__shim_setresuid,
  142. (shim_fp)__shim_getresuid,
  143. (shim_fp)__shim_setresgid,
  144. (shim_fp)__shim_getresgid,
  145. (shim_fp)__shim_getpgid,
  146. (shim_fp)__shim_setfsuid,
  147. (shim_fp)__shim_setfsgid,
  148. (shim_fp)__shim_getsid,
  149. (shim_fp)__shim_capget,
  150. (shim_fp)__shim_capset,
  151. (shim_fp)__shim_rt_sigpending,
  152. (shim_fp)__shim_rt_sigtimedwait,
  153. (shim_fp)__shim_rt_sigqueueinfo,
  154. (shim_fp)__shim_rt_sigsuspend,
  155. (shim_fp)__shim_sigaltstack,
  156. (shim_fp)__shim_utime,
  157. (shim_fp)__shim_mknod,
  158. (shim_fp)__shim_uselib,
  159. (shim_fp)__shim_personality,
  160. (shim_fp)__shim_ustat,
  161. (shim_fp)__shim_statfs,
  162. (shim_fp)__shim_fstatfs,
  163. (shim_fp)__shim_sysfs,
  164. (shim_fp)__shim_getpriority,
  165. (shim_fp)__shim_setpriority,
  166. (shim_fp)__shim_sched_setparam,
  167. (shim_fp)__shim_sched_getparam,
  168. (shim_fp)__shim_sched_setscheduler,
  169. (shim_fp)__shim_sched_getscheduler,
  170. (shim_fp)__shim_sched_get_priority_max,
  171. (shim_fp)__shim_sched_get_priority_min,
  172. (shim_fp)__shim_sched_rr_get_interval,
  173. (shim_fp)__shim_mlock,
  174. (shim_fp)__shim_munlock,
  175. (shim_fp)__shim_mlockall,
  176. (shim_fp)__shim_munlockall,
  177. (shim_fp)__shim_vhangup,
  178. (shim_fp)__shim_modify_ldt,
  179. (shim_fp)__shim_pivot_root,
  180. (shim_fp)__shim__sysctl,
  181. (shim_fp)__shim_prctl,
  182. (shim_fp)__shim_arch_prctl,
  183. (shim_fp)__shim_adjtimex,
  184. (shim_fp)__shim_setrlimit,
  185. (shim_fp)__shim_chroot,
  186. (shim_fp)__shim_sync,
  187. (shim_fp)__shim_acct,
  188. (shim_fp)__shim_settimeofday,
  189. (shim_fp)__shim_mount,
  190. (shim_fp)__shim_umount2,
  191. (shim_fp)__shim_swapon,
  192. (shim_fp)__shim_swapoff,
  193. (shim_fp)__shim_reboot,
  194. (shim_fp)__shim_sethostname,
  195. (shim_fp)__shim_setdomainname,
  196. (shim_fp)__shim_iopl,
  197. (shim_fp)__shim_ioperm,
  198. (shim_fp)__shim_create_module,
  199. (shim_fp)__shim_init_module,
  200. (shim_fp)__shim_delete_module,
  201. (shim_fp)0, // shim_get_kernel_syms,
  202. (shim_fp)__shim_query_module,
  203. (shim_fp)__shim_quotactl,
  204. (shim_fp)0, // shim_nfsservctl,
  205. (shim_fp)0, // shim_getpmsg,
  206. (shim_fp)0, // shim_putpmsg,
  207. (shim_fp)0, // shim_afs_syscall,
  208. (shim_fp)0, // shim_tuxcall,
  209. (shim_fp)0, // shim_security,
  210. (shim_fp)__shim_gettid,
  211. (shim_fp)__shim_readahead,
  212. (shim_fp)__shim_setxattr,
  213. (shim_fp)__shim_lsetxattr,
  214. (shim_fp)__shim_fsetxattr,
  215. (shim_fp)__shim_getxattr,
  216. (shim_fp)__shim_lgetxattr,
  217. (shim_fp)__shim_fgetxattr,
  218. (shim_fp)__shim_listxattr,
  219. (shim_fp)__shim_llistxattr,
  220. (shim_fp)__shim_flistxattr,
  221. (shim_fp)__shim_removexattr,
  222. (shim_fp)__shim_lremovexattr,
  223. (shim_fp)__shim_fremovexattr,
  224. (shim_fp)__shim_tkill,
  225. (shim_fp)__shim_time,
  226. (shim_fp)__shim_futex,
  227. (shim_fp)__shim_sched_setaffinity,
  228. (shim_fp)__shim_sched_getaffinity,
  229. (shim_fp)__shim_set_thread_area,
  230. (shim_fp)__shim_io_setup,
  231. (shim_fp)__shim_io_destroy,
  232. (shim_fp)__shim_io_getevents,
  233. (shim_fp)__shim_io_submit,
  234. (shim_fp)__shim_io_cancel,
  235. (shim_fp)__shim_get_thread_area,
  236. (shim_fp)__shim_lookup_dcookie,
  237. (shim_fp)__shim_epoll_create,
  238. (shim_fp)0, // shim_epoll_ctl_old,
  239. (shim_fp)0, // shim_epoll_wait_old,
  240. (shim_fp)__shim_remap_file_pages,
  241. (shim_fp)__shim_getdents64,
  242. (shim_fp)__shim_set_tid_address,
  243. (shim_fp)__shim_restart_syscall,
  244. (shim_fp)__shim_semtimedop,
  245. (shim_fp)__shim_fadvise64,
  246. (shim_fp)__shim_timer_create,
  247. (shim_fp)__shim_timer_settime,
  248. (shim_fp)__shim_timer_gettime,
  249. (shim_fp)__shim_timer_getoverrun,
  250. (shim_fp)__shim_timer_delete,
  251. (shim_fp)__shim_clock_settime,
  252. (shim_fp)__shim_clock_gettime,
  253. (shim_fp)__shim_clock_getres,
  254. (shim_fp)__shim_clock_nanosleep,
  255. (shim_fp)__shim_exit_group,
  256. (shim_fp)__shim_epoll_wait,
  257. (shim_fp)__shim_epoll_ctl,
  258. (shim_fp)__shim_tgkill,
  259. (shim_fp)__shim_utimes,
  260. (shim_fp)0, // shim_vserver,
  261. (shim_fp)__shim_mbind,
  262. (shim_fp)__shim_set_mempolicy,
  263. (shim_fp)__shim_get_mempolicy,
  264. (shim_fp)__shim_mq_open,
  265. (shim_fp)__shim_mq_unlink,
  266. (shim_fp)__shim_mq_timedsend,
  267. (shim_fp)__shim_mq_timedreceive,
  268. (shim_fp)__shim_mq_notify,
  269. (shim_fp)__shim_mq_getsetattr,
  270. (shim_fp)0, // shim_kexec_load,
  271. (shim_fp)__shim_waitid,
  272. (shim_fp)0, // shim_add_key,
  273. (shim_fp)0, // shim_request_key,
  274. (shim_fp)0, // shim_keyctl,
  275. (shim_fp)__shim_ioprio_set,
  276. (shim_fp)__shim_ioprio_get,
  277. (shim_fp)__shim_inotify_init,
  278. (shim_fp)__shim_inotify_add_watch,
  279. (shim_fp)__shim_inotify_rm_watch,
  280. (shim_fp)__shim_migrate_pages,
  281. (shim_fp)__shim_openat,
  282. (shim_fp)__shim_mkdirat,
  283. (shim_fp)__shim_mknodat,
  284. (shim_fp)__shim_fchownat,
  285. (shim_fp)__shim_futimesat,
  286. (shim_fp)__shim_newfstatat,
  287. (shim_fp)__shim_unlinkat,
  288. (shim_fp)__shim_renameat,
  289. (shim_fp)__shim_linkat,
  290. (shim_fp)__shim_symlinkat,
  291. (shim_fp)__shim_readlinkat,
  292. (shim_fp)__shim_fchmodat,
  293. (shim_fp)__shim_faccessat,
  294. (shim_fp)__shim_pselect6,
  295. (shim_fp)__shim_ppoll,
  296. (shim_fp)__shim_unshare,
  297. (shim_fp)__shim_set_robust_list,
  298. (shim_fp)__shim_get_robust_list,
  299. (shim_fp)__shim_splice,
  300. (shim_fp)__shim_tee,
  301. (shim_fp)__shim_sync_file_range,
  302. (shim_fp)__shim_vmsplice,
  303. (shim_fp)__shim_move_pages,
  304. (shim_fp)__shim_utimensat,
  305. (shim_fp)__shim_epoll_pwait,
  306. (shim_fp)__shim_signalfd,
  307. (shim_fp)__shim_timerfd_create,
  308. (shim_fp)__shim_eventfd,
  309. (shim_fp)__shim_fallocate,
  310. (shim_fp)__shim_timerfd_settime,
  311. (shim_fp)__shim_timerfd_gettime,
  312. (shim_fp)__shim_accept4,
  313. (shim_fp)__shim_signalfd4,
  314. (shim_fp)__shim_eventfd2,
  315. (shim_fp)__shim_epoll_create1,
  316. (shim_fp)__shim_dup3,
  317. (shim_fp)__shim_pipe2,
  318. (shim_fp)__shim_inotify_init1,
  319. (shim_fp)__shim_preadv,
  320. (shim_fp)__shim_pwritev,
  321. (shim_fp)__shim_rt_tgsigqueueinfo,
  322. (shim_fp)__shim_perf_event_open,
  323. (shim_fp)__shim_recvmmsg,
  324. (shim_fp)__shim_fanotify_init,
  325. (shim_fp)__shim_fanotify_mark,
  326. (shim_fp)__shim_prlimit64,
  327. (shim_fp)__shim_name_to_handle_at,
  328. (shim_fp)__shim_open_by_handle_at,
  329. (shim_fp)__shim_clock_adjtime,
  330. (shim_fp)__shim_syncfs,
  331. (shim_fp)__shim_sendmmsg,
  332. (shim_fp)__shim_setns,
  333. (shim_fp)__shim_getcpu,
  334. [LIBOS_SYSCALL_BASE] = (shim_fp)NULL,
  335. (shim_fp)__shim_msgpersist,
  336. (shim_fp)__shim_benchmark_rpc,
  337. (shim_fp)__shim_send_rpc,
  338. (shim_fp)__shim_recv_rpc,
  339. (shim_fp)__shim_checkpoint,
  340. };