syscall_lookup.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. /****************************************************************************
  2. * syscall/syscall_lookup.h
  3. *
  4. * Copyright (C) 2011, 2013-2019 Gregory Nutt. All rights reserved.
  5. * Author: Gregory Nutt <gnutt@nuttx.org>
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in
  15. * the documentation and/or other materials provided with the
  16. * distribution.
  17. * 3. Neither the name NuttX nor the names of its contributors may be
  18. * used to endorse or promote products derived from this software
  19. * without specific prior written permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  26. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  27. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  28. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  29. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  31. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  32. * POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ****************************************************************************/
  35. /****************************************************************************
  36. * Pre-processor Definitions
  37. ****************************************************************************/
  38. /* SYSCALL_LOOKUP must be defined before including this file.
  39. *
  40. * These first system calls are supported regardless of the NuttX
  41. * configuration
  42. */
  43. SYSCALL_LOOKUP1(_exit, 1, STUB__exit)
  44. SYSCALL_LOOKUP(exit, 1, STUB_exit)
  45. SYSCALL_LOOKUP(get_errno, 0, STUB_get_errno)
  46. SYSCALL_LOOKUP(getpid, 0, STUB_getpid)
  47. SYSCALL_LOOKUP(sched_getparam, 2, STUB_sched_getparam)
  48. SYSCALL_LOOKUP(sched_getscheduler, 1, STUB_sched_getscheduler)
  49. SYSCALL_LOOKUP(sched_lock, 0, STUB_sched_lock)
  50. SYSCALL_LOOKUP(sched_lockcount, 0, STUB_sched_lockcount)
  51. SYSCALL_LOOKUP(sched_rr_get_interval, 2, STUB_sched_rr_get_interval)
  52. SYSCALL_LOOKUP(sched_setparam, 2, STUB_sched_setparam)
  53. SYSCALL_LOOKUP(sched_setscheduler, 3, STUB_sched_setscheduler)
  54. SYSCALL_LOOKUP(sched_unlock, 0, STUB_sched_unlock)
  55. SYSCALL_LOOKUP(sched_yield, 0, STUB_sched_yield)
  56. SYSCALL_LOOKUP(set_errno, 1, STUB_set_errno)
  57. SYSCALL_LOOKUP(uname, 1, STUB_uname)
  58. /* Semaphores */
  59. SYSCALL_LOOKUP(sem_destroy, 1, STUB_sem_destroy)
  60. SYSCALL_LOOKUP(sem_post, 1, STUB_sem_post)
  61. SYSCALL_LOOKUP(sem_timedwait, 2, STUB_sem_timedwait)
  62. SYSCALL_LOOKUP(sem_trywait, 1, STUB_sem_trywait)
  63. SYSCALL_LOOKUP(sem_wait, 1, STUB_sem_wait)
  64. #ifdef CONFIG_PRIORITY_INHERITANCE
  65. SYSCALL_LOOKUP(sem_setprotocol, 2, STUB_sem_setprotocol)
  66. #endif
  67. /* Named semaphores */
  68. #ifdef CONFIG_FS_NAMED_SEMAPHORES
  69. SYSCALL_LOOKUP(sem_open, 6, STUB_sem_open)
  70. SYSCALL_LOOKUP(sem_close, 1, STUB_sem_close)
  71. SYSCALL_LOOKUP(sem_unlink, 1, STUB_sem_unlink)
  72. #endif
  73. #ifndef CONFIG_BUILD_KERNEL
  74. SYSCALL_LOOKUP(task_create, 5, STUB_task_create)
  75. #else
  76. SYSCALL_LOOKUP(pgalloc, 2, STUB_pgalloc)
  77. #endif
  78. SYSCALL_LOOKUP(task_delete, 1, STUB_task_delete)
  79. SYSCALL_LOOKUP(task_restart, 1, STUB_task_restart)
  80. SYSCALL_LOOKUP(task_setcancelstate, 2, STUB_task_setcancelstate)
  81. SYSCALL_LOOKUP(up_assert, 2, STUB_up_assert)
  82. # ifdef CONFIG_CANCELLATION_POINTS
  83. SYSCALL_LOOKUP(task_setcanceltype, 2, STUB_task_setcanceltype)
  84. SYSCALL_LOOKUP(task_testcancel, 0, STUB_task_testcancel)
  85. # endif
  86. /* The following can be individually enabled */
  87. #ifdef CONFIG_ARCH_HAVE_VFORK
  88. SYSCALL_LOOKUP(vfork, 0, STUB_vfork)
  89. #endif
  90. #ifdef CONFIG_SCHED_ATEXIT
  91. SYSCALL_LOOKUP(atexit, 1, STUB_atexit)
  92. #endif
  93. #ifdef CONFIG_SCHED_ONEXIT
  94. SYSCALL_LOOKUP(on_exit, 2, STUB_on_exit)
  95. #endif
  96. #ifdef CONFIG_SCHED_WAITPID
  97. SYSCALL_LOOKUP(waitpid, 3, STUB_waitpid)
  98. # ifdef CONFIG_SCHED_HAVE_PARENT
  99. SYSCALL_LOOKUP(wait, 1, STUB_wait)
  100. SYSCALL_LOOKUP(waitid, 4, STUB_waitid)
  101. # endif
  102. #endif
  103. /* The following can only be defined if we are configured to load
  104. * OS modules from a file system.
  105. */
  106. #ifdef CONFIG_MODULE
  107. SYSCALL_LOOKUP(insmod, 2, STUB_insmod)
  108. SYSCALL_LOOKUP(rmmod, 1, STUB_rmmod)
  109. SYSCALL_LOOKUP(modhandle, 1, STUB_modhandle)
  110. #endif
  111. /* The following can only be defined if we are configured to execute
  112. * programs from a file system.
  113. */
  114. #ifndef CONFIG_BINFMT_DISABLE
  115. #ifndef CONFIG_BUILD_KERNEL
  116. SYSCALL_LOOKUP(exec, 4, STUB_exec)
  117. #endif
  118. #ifdef CONFIG_LIBC_EXECFUNCS
  119. #ifdef CONFIG_LIB_ENVPATH
  120. SYSCALL_LOOKUP(posix_spawnp, 6, STUB_posix_spawnp)
  121. #else
  122. SYSCALL_LOOKUP(posix_spawn, 6, STUB_posix_spawn)
  123. #endif
  124. SYSCALL_LOOKUP(execv, 2, STUB_execv)
  125. #endif
  126. #endif
  127. /* The following are only defined is signals are supported in the NuttX
  128. * configuration.
  129. */
  130. SYSCALL_LOOKUP(kill, 2, STUB_kill)
  131. SYSCALL_LOOKUP(sigaction, 3, STUB_sigaction)
  132. SYSCALL_LOOKUP(sigpending, 1, STUB_sigpending)
  133. SYSCALL_LOOKUP(sigprocmask, 3, STUB_sigprocmask)
  134. SYSCALL_LOOKUP(sigqueue, 3, STUB_sigqueue)
  135. SYSCALL_LOOKUP(sigsuspend, 1, STUB_sigsuspend)
  136. SYSCALL_LOOKUP(sigtimedwait, 3, STUB_sigtimedwait)
  137. SYSCALL_LOOKUP(sigwaitinfo, 2, STUB_sigwaitinfo)
  138. SYSCALL_LOOKUP(clock_nanosleep, 4, STUB_clock_nanosleep)
  139. /* The following are only defined if the system clock is enabled in the
  140. * NuttX configuration.
  141. */
  142. SYSCALL_LOOKUP(syscall_clock, 0, STUB_clock)
  143. SYSCALL_LOOKUP(clock_getres, 2, STUB_clock_getres)
  144. SYSCALL_LOOKUP(clock_gettime, 2, STUB_clock_gettime)
  145. SYSCALL_LOOKUP(clock_settime, 2, STUB_clock_settime)
  146. #ifdef CONFIG_CLOCK_TIMEKEEPING
  147. SYSCALL_LOOKUP(adjtime, 2, STUB_adjtime)
  148. #endif
  149. /* The following are defined only if POSIX timers are supported */
  150. #ifndef CONFIG_DISABLE_POSIX_TIMERS
  151. SYSCALL_LOOKUP(timer_create, 3, STUB_timer_create)
  152. SYSCALL_LOOKUP(timer_delete, 1, STUB_timer_delete)
  153. SYSCALL_LOOKUP(timer_getoverrun, 1, STUB_timer_getoverrun)
  154. SYSCALL_LOOKUP(timer_gettime, 2, STUB_timer_gettime)
  155. SYSCALL_LOOKUP(timer_settime, 4, STUB_timer_settime)
  156. #endif
  157. /* System logging */
  158. SYSCALL_LOOKUP(nx_vsyslog, 3, STUB_nx_vsyslog)
  159. /* The following are defined if either file or socket descriptor are
  160. * enabled.
  161. */
  162. SYSCALL_LOOKUP(close, 1, STUB_close)
  163. #ifdef CONFIG_LIBC_IOCTL_VARIADIC
  164. SYSCALL_LOOKUP(fs_ioctl, 3, STUB_fs_ioctl)
  165. #else
  166. SYSCALL_LOOKUP(ioctl, 3, STUB_ioctl)
  167. #endif
  168. SYSCALL_LOOKUP(read, 3, STUB_read)
  169. SYSCALL_LOOKUP(write, 3, STUB_write)
  170. SYSCALL_LOOKUP(pread, 4, STUB_pread)
  171. SYSCALL_LOOKUP(pwrite, 4, STUB_pwrite)
  172. #ifdef CONFIG_FS_AIO
  173. SYSCALL_LOOKUP(aio_read, 1, STUB_aio_read)
  174. SYSCALL_LOOKUP(aio_write, 1, STUB_aio_write)
  175. SYSCALL_LOOKUP(aio_fsync, 2, STUB_aio_fsync)
  176. SYSCALL_LOOKUP(aio_cancel, 2, STUB_aio_cancel)
  177. #endif
  178. #ifndef CONFIG_DISABLE_POLL
  179. SYSCALL_LOOKUP(poll, 3, STUB_poll)
  180. SYSCALL_LOOKUP(select, 5, STUB_select)
  181. SYSCALL_LOOKUP(ppoll, 4, STUB_ppoll)
  182. SYSCALL_LOOKUP(pselect, 6, STUB_pselect)
  183. #endif
  184. #ifdef CONFIG_NETDEV_IFINDEX
  185. SYSCALL_LOOKUP(if_indextoname, 2, STUB_if_indextoname)
  186. SYSCALL_LOOKUP(if_nametoindex, 1, STUB_if_nametoindex)
  187. #endif
  188. #ifdef CONFIG_SERIAL_TERMIOS
  189. SYSCALL_LOOKUP(tcdrain, 1, STUB_tcdrain)
  190. #endif
  191. /* Board support */
  192. #ifdef CONFIG_LIB_BOARDCTL
  193. SYSCALL_LOOKUP(boardctl, 2, STUB_boardctl)
  194. #endif
  195. /* The following are defined if file descriptors are enabled */
  196. SYSCALL_LOOKUP(closedir, 1, STUB_closedir)
  197. SYSCALL_LOOKUP(dup, 1, STUB_dup)
  198. SYSCALL_LOOKUP(dup2, 2, STUB_dup2)
  199. SYSCALL_LOOKUP(fcntl, 6, STUB_fcntl)
  200. SYSCALL_LOOKUP(lseek, 3, STUB_lseek)
  201. SYSCALL_LOOKUP(mmap, 6, STUB_mmap)
  202. SYSCALL_LOOKUP(open, 6, STUB_open)
  203. SYSCALL_LOOKUP(opendir, 1, STUB_opendir)
  204. SYSCALL_LOOKUP(readdir, 1, STUB_readdir)
  205. SYSCALL_LOOKUP(rewinddir, 1, STUB_rewinddir)
  206. SYSCALL_LOOKUP(seekdir, 2, STUB_seekdir)
  207. SYSCALL_LOOKUP(stat, 2, STUB_stat)
  208. SYSCALL_LOOKUP(fstat, 2, STUB_fstat)
  209. SYSCALL_LOOKUP(statfs, 2, STUB_statfs)
  210. SYSCALL_LOOKUP(fstatfs, 2, STUB_fstatfs)
  211. SYSCALL_LOOKUP(telldir, 1, STUB_telldir)
  212. #if defined(CONFIG_FS_RAMMAP)
  213. SYSCALL_LOOKUP(munmap, 2, STUB_munmap)
  214. #endif
  215. #if defined(CONFIG_PSEUDOFS_SOFTLINKS)
  216. SYSCALL_LOOKUP(link, 2, STUB_link)
  217. SYSCALL_LOOKUP(readlink, 3, STUB_readlink)
  218. #endif
  219. #if defined(CONFIG_PIPES) && CONFIG_DEV_PIPE_SIZE > 0
  220. SYSCALL_LOOKUP(pipe2, 2, STUB_pipe2)
  221. #endif
  222. #if defined(CONFIG_PIPES) && CONFIG_DEV_FIFO_SIZE > 0
  223. SYSCALL_LOOKUP(mkfifo2, 3, STUB_mkfifo2)
  224. #endif
  225. #if CONFIG_NFILE_STREAMS > 0
  226. SYSCALL_LOOKUP(fdopen, 3, STUB_fs_fdopen)
  227. SYSCALL_LOOKUP(sched_getstreams, 0, STUB_sched_getstreams)
  228. #endif
  229. #if defined(CONFIG_NET_SENDFILE)
  230. SYSCALL_LOOKUP(sendfile, 4, STUB_fs_sendifile)
  231. #endif
  232. #if !defined(CONFIG_DISABLE_MOUNTPOINT)
  233. # if defined(CONFIG_FS_READABLE)
  234. SYSCALL_LOOKUP(mount, 5, STUB_mount)
  235. # endif
  236. SYSCALL_LOOKUP(fsync, 1, STUB_fsync)
  237. SYSCALL_LOOKUP(ftruncate, 2, STUB_ftruncate)
  238. SYSCALL_LOOKUP(mkdir, 2, STUB_mkdir)
  239. SYSCALL_LOOKUP(rename, 2, STUB_rename)
  240. SYSCALL_LOOKUP(rmdir, 1, STUB_rmdir)
  241. SYSCALL_LOOKUP(umount2, 2, STUB_umount2)
  242. SYSCALL_LOOKUP(unlink, 1, STUB_unlink)
  243. #endif
  244. /* Shared memory interfaces */
  245. #ifdef CONFIG_MM_SHM
  246. SYSCALL_LOOKUP(shmget, 3, STUB_shmget)
  247. SYSCALL_LOOKUP(shmat, 3, STUB_shmat)
  248. SYSCALL_LOOKUP(shmctl, 3, STUB_shmctl)
  249. SYSCALL_LOOKUP(shmdt, 1, STUB_shmdt)
  250. #endif
  251. /* The following are defined if pthreads are enabled */
  252. #ifndef CONFIG_DISABLE_PTHREAD
  253. SYSCALL_LOOKUP(pthread_cancel, 1, STUB_pthread_cancel)
  254. SYSCALL_LOOKUP(pthread_cond_broadcast, 1, STUB_pthread_cond_broadcast)
  255. SYSCALL_LOOKUP(pthread_cond_signal, 1, STUB_pthread_cond_signal)
  256. SYSCALL_LOOKUP(pthread_cond_wait, 2, STUB_pthread_cond_wait)
  257. SYSCALL_LOOKUP(pthread_create, 4, STUB_pthread_create)
  258. SYSCALL_LOOKUP(pthread_detach, 1, STUB_pthread_detach)
  259. SYSCALL_LOOKUP(pthread_exit, 1, STUB_pthread_exit)
  260. SYSCALL_LOOKUP(pthread_getschedparam, 3, STUB_pthread_getschedparam)
  261. SYSCALL_LOOKUP(pthread_getspecific, 1, STUB_pthread_getspecific)
  262. SYSCALL_LOOKUP(pthread_join, 2, STUB_pthread_join)
  263. SYSCALL_LOOKUP(pthread_key_create, 2, STUB_pthread_key_create)
  264. SYSCALL_LOOKUP(pthread_key_delete, 1, STUB_pthread_key_delete)
  265. SYSCALL_LOOKUP(pthread_get_stackaddr_np, 1, STUB_pthread_get_stackaddr_np)
  266. SYSCALL_LOOKUP(pthread_get_stacksize_np, 1, STUB_pthread_get_stacksize_np)
  267. SYSCALL_LOOKUP(pthread_mutex_destroy, 1, STUB_pthread_mutex_destroy)
  268. SYSCALL_LOOKUP(pthread_mutex_init, 2, STUB_pthread_mutex_init)
  269. SYSCALL_LOOKUP(pthread_mutex_timedlock, 2, STUB_pthread_mutex_timedlock)
  270. SYSCALL_LOOKUP(pthread_mutex_trylock, 1, STUB_pthread_mutex_trylock)
  271. SYSCALL_LOOKUP(pthread_mutex_unlock, 1, STUB_pthread_mutex_unlock)
  272. #ifndef CONFIG_PTHREAD_MUTEX_UNSAFE
  273. SYSCALL_LOOKUP(pthread_mutex_consistent, 1, STUB_pthread_mutex_consistent)
  274. #endif
  275. SYSCALL_LOOKUP(pthread_setschedparam, 3, STUB_pthread_setschedparam)
  276. SYSCALL_LOOKUP(pthread_setschedprio, 2, STUB_pthread_setschedprio)
  277. SYSCALL_LOOKUP(pthread_setspecific, 2, STUB_pthread_setspecific)
  278. #ifdef CONFIG_SMP
  279. SYSCALL_LOOKUP(pthread_setaffinity, 3, STUB_pthread_setaffinity)
  280. SYSCALL_LOOKUP(pthread_getaffinity, 3, STUB_pthread_getaffinity)
  281. #endif
  282. SYSCALL_LOOKUP(pthread_cond_timedwait, 3, STUB_pthread_cond_timedwait)
  283. SYSCALL_LOOKUP(pthread_kill, 2, STUB_pthread_kill)
  284. SYSCALL_LOOKUP(pthread_sigmask, 3, STUB_pthread_sigmask)
  285. #ifdef CONFIG_PTHREAD_CLEANUP
  286. SYSCALL_LOOKUP(pthread_cleanup_push, 2, STUB_pthread_cleanup_push)
  287. SYSCALL_LOOKUP(pthread_cleanup_pop, 1, STUB_pthread_cleanup_pop)
  288. #endif
  289. #endif
  290. /* The following are defined only if message queues are enabled */
  291. #ifndef CONFIG_DISABLE_MQUEUE
  292. SYSCALL_LOOKUP(mq_close, 1, STUB_mq_close)
  293. SYSCALL_LOOKUP(mq_getattr, 2, STUB_mq_getattr)
  294. SYSCALL_LOOKUP(mq_notify, 2, STUB_mq_notify)
  295. SYSCALL_LOOKUP(mq_open, 6, STUB_mq_open)
  296. SYSCALL_LOOKUP(mq_receive, 4, STUB_mq_receive)
  297. SYSCALL_LOOKUP(mq_send, 4, STUB_mq_send)
  298. SYSCALL_LOOKUP(mq_setattr, 3, STUB_mq_setattr)
  299. SYSCALL_LOOKUP(mq_timedreceive, 5, STUB_mq_timedreceive)
  300. SYSCALL_LOOKUP(mq_timedsend, 5, STUB_mq_timedsend)
  301. SYSCALL_LOOKUP(mq_unlink, 1, STUB_mq_unlink)
  302. #endif
  303. /* The following are defined only if environment variables are supported */
  304. #ifndef CONFIG_DISABLE_ENVIRON
  305. SYSCALL_LOOKUP(clearenv, 0, STUB_clearenv)
  306. SYSCALL_LOOKUP(getenv, 1, STUB_getenv)
  307. SYSCALL_LOOKUP(putenv, 1, STUB_putenv)
  308. SYSCALL_LOOKUP(setenv, 3, STUB_setenv)
  309. SYSCALL_LOOKUP(unsetenv, 1, STUB_unsetenv)
  310. #endif
  311. /* The following are defined only if netdb is supported */
  312. #ifdef CONFIG_LIBC_NETDB
  313. SYSCALL_LOOKUP(sethostname, 2, STUB_sethostname)
  314. #endif
  315. /* The following are defined only if networking AND sockets are supported */
  316. #ifdef CONFIG_NET
  317. SYSCALL_LOOKUP(accept, 3, STUB_accept)
  318. SYSCALL_LOOKUP(bind, 3, STUB_bind)
  319. SYSCALL_LOOKUP(connect, 3, STUB_connect)
  320. SYSCALL_LOOKUP(getpeername, 3, STUB_getpeername)
  321. SYSCALL_LOOKUP(getsockname, 3, STUB_getsockname)
  322. SYSCALL_LOOKUP(getsockopt, 5, STUB_getsockopt)
  323. SYSCALL_LOOKUP(listen, 2, STUB_listen)
  324. SYSCALL_LOOKUP(recv, 4, STUB_recv)
  325. SYSCALL_LOOKUP(recvfrom, 6, STUB_recvfrom)
  326. SYSCALL_LOOKUP(send, 4, STUB_send)
  327. SYSCALL_LOOKUP(sendto, 6, STUB_sendto)
  328. SYSCALL_LOOKUP(setsockopt, 5, STUB_setsockopt)
  329. SYSCALL_LOOKUP(socket, 3, STUB_socket)
  330. #endif
  331. /* The following is defined only if CONFIG_TASK_NAME_SIZE > 0 */
  332. #if CONFIG_TASK_NAME_SIZE > 0
  333. SYSCALL_LOOKUP(prctl, 5, STUB_prctl)
  334. #endif
  335. /* The following is defined only if entropy pool random number generator
  336. * is enabled. */
  337. #ifdef CONFIG_CRYPTO_RANDOM_POOL
  338. SYSCALL_LOOKUP(getrandom, 2, STUB_getrandom)
  339. #endif
  340. /****************************************************************************
  341. * Private Functions
  342. ****************************************************************************/
  343. /****************************************************************************
  344. * Public Functions
  345. ****************************************************************************/