shim_table.c 11 KB

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