syscall_lookup.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. /****************************************************************************
  2. * include/sys/syscall_lookup.h
  3. *
  4. * Licensed to the Apache Software Foundation (ASF) under one or more
  5. * contributor license agreements. See the NOTICE file distributed with
  6. * this work for additional information regarding copyright ownership. The
  7. * ASF licenses this file to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance with the
  9. * License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  15. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  16. * License for the specific language governing permissions and limitations
  17. * under the License.
  18. *
  19. ****************************************************************************/
  20. /* SYSCALL_LOOKUP must be defined before including this file.
  21. *
  22. * These first system calls are supported regardless of the NuttX
  23. * configuration
  24. */
  25. SYSCALL_LOOKUP1(_exit, 1)
  26. SYSCALL_LOOKUP(exit, 1)
  27. SYSCALL_LOOKUP(getpid, 0)
  28. SYSCALL_LOOKUP(gettid, 0)
  29. #ifdef CONFIG_SCHED_HAVE_PARENT
  30. SYSCALL_LOOKUP(getppid, 0)
  31. #endif
  32. SYSCALL_LOOKUP(sched_getparam, 2)
  33. SYSCALL_LOOKUP(sched_getscheduler, 1)
  34. SYSCALL_LOOKUP(sched_lock, 0)
  35. SYSCALL_LOOKUP(sched_lockcount, 0)
  36. SYSCALL_LOOKUP(sched_rr_get_interval, 2)
  37. SYSCALL_LOOKUP(sched_setparam, 2)
  38. SYSCALL_LOOKUP(sched_setscheduler, 3)
  39. SYSCALL_LOOKUP(sched_unlock, 0)
  40. SYSCALL_LOOKUP(sched_yield, 0)
  41. SYSCALL_LOOKUP(nxsched_get_stackinfo, 2)
  42. #ifdef CONFIG_SMP
  43. SYSCALL_LOOKUP(sched_getaffinity, 3)
  44. SYSCALL_LOOKUP(sched_getcpu, 0)
  45. SYSCALL_LOOKUP(sched_setaffinity, 3)
  46. #endif
  47. SYSCALL_LOOKUP(gethostname, 2)
  48. SYSCALL_LOOKUP(sethostname, 2)
  49. /* User identity */
  50. #ifdef CONFIG_SCHED_USER_IDENTITY
  51. SYSCALL_LOOKUP(setuid, 1)
  52. SYSCALL_LOOKUP(getuid, 0)
  53. SYSCALL_LOOKUP(setgid, 1)
  54. SYSCALL_LOOKUP(getgid, 0)
  55. #endif
  56. /* Semaphores */
  57. SYSCALL_LOOKUP(sem_destroy, 1)
  58. SYSCALL_LOOKUP(sem_post, 1)
  59. SYSCALL_LOOKUP(sem_clockwait, 3)
  60. SYSCALL_LOOKUP(sem_timedwait, 2)
  61. SYSCALL_LOOKUP(sem_trywait, 1)
  62. SYSCALL_LOOKUP(sem_wait, 1)
  63. #ifdef CONFIG_PRIORITY_INHERITANCE
  64. SYSCALL_LOOKUP(sem_setprotocol, 2)
  65. #endif
  66. /* Named semaphores */
  67. #ifdef CONFIG_FS_NAMED_SEMAPHORES
  68. SYSCALL_LOOKUP(sem_open, 4)
  69. SYSCALL_LOOKUP(sem_close, 1)
  70. SYSCALL_LOOKUP(sem_unlink, 1)
  71. #endif
  72. #ifndef CONFIG_BUILD_KERNEL
  73. SYSCALL_LOOKUP(task_create, 5)
  74. SYSCALL_LOOKUP(task_spawn, 6)
  75. #else
  76. SYSCALL_LOOKUP(pgalloc, 2)
  77. #endif
  78. SYSCALL_LOOKUP(task_delete, 1)
  79. SYSCALL_LOOKUP(task_restart, 1)
  80. SYSCALL_LOOKUP(task_setcancelstate, 2)
  81. SYSCALL_LOOKUP(up_assert, 2)
  82. #ifdef CONFIG_CANCELLATION_POINTS
  83. SYSCALL_LOOKUP(task_setcanceltype, 2)
  84. SYSCALL_LOOKUP(task_testcancel, 0)
  85. #endif
  86. /* The following can be individually enabled */
  87. #if defined(CONFIG_SCHED_WAITPID) && defined(CONFIG_ARCH_HAVE_VFORK)
  88. SYSCALL_LOOKUP(vfork, 0)
  89. #endif
  90. #ifdef CONFIG_SCHED_ATEXIT
  91. SYSCALL_LOOKUP(atexit, 1)
  92. #endif
  93. #ifdef CONFIG_SCHED_ONEXIT
  94. SYSCALL_LOOKUP(on_exit, 2)
  95. #endif
  96. #ifdef CONFIG_SCHED_WAITPID
  97. SYSCALL_LOOKUP(waitpid, 3)
  98. #ifdef CONFIG_SCHED_HAVE_PARENT
  99. SYSCALL_LOOKUP(wait, 1)
  100. SYSCALL_LOOKUP(waitid, 4)
  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)
  108. SYSCALL_LOOKUP(rmmod, 1)
  109. SYSCALL_LOOKUP(modhandle, 1)
  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)
  117. #endif
  118. #ifdef CONFIG_LIBC_EXECFUNCS
  119. #ifdef CONFIG_LIB_ENVPATH
  120. SYSCALL_LOOKUP(posix_spawnp, 6)
  121. #else
  122. SYSCALL_LOOKUP(posix_spawn, 6)
  123. #endif
  124. SYSCALL_LOOKUP(execv, 2)
  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)
  131. SYSCALL_LOOKUP(sigaction, 3)
  132. SYSCALL_LOOKUP(sigpending, 1)
  133. SYSCALL_LOOKUP(sigprocmask, 3)
  134. SYSCALL_LOOKUP(sigqueue, 3)
  135. SYSCALL_LOOKUP(sigsuspend, 1)
  136. SYSCALL_LOOKUP(sigtimedwait, 3)
  137. SYSCALL_LOOKUP(sigwaitinfo, 2)
  138. SYSCALL_LOOKUP(clock_nanosleep, 4)
  139. /* The following are only defined if the system clock is enabled in the
  140. * NuttX configuration.
  141. */
  142. SYSCALL_LOOKUP(clock, 0)
  143. SYSCALL_LOOKUP(clock_getres, 2)
  144. SYSCALL_LOOKUP(clock_gettime, 2)
  145. SYSCALL_LOOKUP(clock_settime, 2)
  146. #ifdef CONFIG_CLOCK_TIMEKEEPING
  147. SYSCALL_LOOKUP(adjtime, 2)
  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)
  152. SYSCALL_LOOKUP(timer_delete, 1)
  153. SYSCALL_LOOKUP(timer_getoverrun, 1)
  154. SYSCALL_LOOKUP(timer_gettime, 2)
  155. SYSCALL_LOOKUP(timer_settime, 4)
  156. SYSCALL_LOOKUP(getitimer, 2)
  157. SYSCALL_LOOKUP(setitimer, 3)
  158. #endif
  159. /* System logging */
  160. SYSCALL_LOOKUP(nx_vsyslog, 3)
  161. /* The following are defined if either file or socket descriptor are
  162. * enabled.
  163. */
  164. SYSCALL_LOOKUP(close, 1)
  165. SYSCALL_LOOKUP(ioctl, 3)
  166. SYSCALL_LOOKUP(read, 3)
  167. SYSCALL_LOOKUP(write, 3)
  168. SYSCALL_LOOKUP(pread, 4)
  169. SYSCALL_LOOKUP(pwrite, 4)
  170. #ifdef CONFIG_FS_AIO
  171. SYSCALL_LOOKUP(aio_read, 1)
  172. SYSCALL_LOOKUP(aio_write, 1)
  173. SYSCALL_LOOKUP(aio_fsync, 2)
  174. SYSCALL_LOOKUP(aio_cancel, 2)
  175. #endif
  176. SYSCALL_LOOKUP(poll, 3)
  177. SYSCALL_LOOKUP(select, 5)
  178. SYSCALL_LOOKUP(ppoll, 4)
  179. SYSCALL_LOOKUP(pselect, 6)
  180. #ifdef CONFIG_EVENT_FD
  181. SYSCALL_LOOKUP(eventfd, 2)
  182. #endif
  183. #ifdef CONFIG_NETDEV_IFINDEX
  184. SYSCALL_LOOKUP(if_indextoname, 2)
  185. SYSCALL_LOOKUP(if_nametoindex, 1)
  186. #endif
  187. #ifdef CONFIG_SERIAL_TERMIOS
  188. SYSCALL_LOOKUP(tcdrain, 1)
  189. #endif
  190. /* Board support */
  191. #ifdef CONFIG_LIB_BOARDCTL
  192. SYSCALL_LOOKUP(boardctl, 2)
  193. #endif
  194. /* The following are defined if file descriptors are enabled */
  195. SYSCALL_LOOKUP(closedir, 1)
  196. SYSCALL_LOOKUP(dup, 1)
  197. SYSCALL_LOOKUP(dup2, 2)
  198. SYSCALL_LOOKUP(fcntl, 3)
  199. SYSCALL_LOOKUP(lseek, 3)
  200. SYSCALL_LOOKUP(mmap, 6)
  201. SYSCALL_LOOKUP(open, 3)
  202. SYSCALL_LOOKUP(opendir, 1)
  203. SYSCALL_LOOKUP(readdir, 1)
  204. SYSCALL_LOOKUP(rewinddir, 1)
  205. SYSCALL_LOOKUP(seekdir, 2)
  206. SYSCALL_LOOKUP(stat, 2)
  207. SYSCALL_LOOKUP(lstat, 2)
  208. SYSCALL_LOOKUP(fstat, 2)
  209. SYSCALL_LOOKUP(statfs, 2)
  210. SYSCALL_LOOKUP(fstatfs, 2)
  211. SYSCALL_LOOKUP(telldir, 1)
  212. SYSCALL_LOOKUP(sendfile, 4)
  213. #if defined(CONFIG_FS_RAMMAP)
  214. SYSCALL_LOOKUP(munmap, 2)
  215. #endif
  216. #if defined(CONFIG_PSEUDOFS_SOFTLINKS)
  217. SYSCALL_LOOKUP(symlink, 2)
  218. SYSCALL_LOOKUP(readlink, 3)
  219. #endif
  220. #if defined(CONFIG_PIPES) && CONFIG_DEV_PIPE_SIZE > 0
  221. SYSCALL_LOOKUP(nx_pipe, 3)
  222. #endif
  223. #if defined(CONFIG_PIPES) && CONFIG_DEV_FIFO_SIZE > 0
  224. SYSCALL_LOOKUP(nx_mkfifo, 3)
  225. #endif
  226. #ifdef CONFIG_FILE_STREAM
  227. SYSCALL_LOOKUP(fs_fdopen, 4)
  228. SYSCALL_LOOKUP(nxsched_get_streams, 0)
  229. #endif
  230. #ifndef CONFIG_DISABLE_MOUNTPOINT
  231. SYSCALL_LOOKUP(mount, 5)
  232. SYSCALL_LOOKUP(fsync, 1)
  233. SYSCALL_LOOKUP(ftruncate, 2)
  234. SYSCALL_LOOKUP(mkdir, 2)
  235. SYSCALL_LOOKUP(rename, 2)
  236. SYSCALL_LOOKUP(rmdir, 1)
  237. SYSCALL_LOOKUP(umount2, 2)
  238. SYSCALL_LOOKUP(unlink, 1)
  239. #endif
  240. /* Shared memory interfaces */
  241. #ifdef CONFIG_MM_SHM
  242. SYSCALL_LOOKUP(shmget, 3)
  243. SYSCALL_LOOKUP(shmat, 3)
  244. SYSCALL_LOOKUP(shmctl, 3)
  245. SYSCALL_LOOKUP(shmdt, 1)
  246. #endif
  247. /* The following are defined if pthreads are enabled */
  248. #ifndef CONFIG_DISABLE_PTHREAD
  249. SYSCALL_LOOKUP(pthread_cancel, 1)
  250. SYSCALL_LOOKUP(pthread_cond_broadcast, 1)
  251. SYSCALL_LOOKUP(pthread_cond_signal, 1)
  252. SYSCALL_LOOKUP(pthread_cond_wait, 2)
  253. SYSCALL_LOOKUP(nx_pthread_create, 6)
  254. SYSCALL_LOOKUP(pthread_detach, 1)
  255. SYSCALL_LOOKUP(nx_pthread_exit, 1)
  256. SYSCALL_LOOKUP(pthread_getschedparam, 3)
  257. SYSCALL_LOOKUP(pthread_join, 2)
  258. SYSCALL_LOOKUP(pthread_mutex_destroy, 1)
  259. SYSCALL_LOOKUP(pthread_mutex_init, 2)
  260. SYSCALL_LOOKUP(pthread_mutex_timedlock, 2)
  261. SYSCALL_LOOKUP(pthread_mutex_trylock, 1)
  262. SYSCALL_LOOKUP(pthread_mutex_unlock, 1)
  263. #ifndef CONFIG_PTHREAD_MUTEX_UNSAFE
  264. SYSCALL_LOOKUP(pthread_mutex_consistent, 1)
  265. #endif
  266. SYSCALL_LOOKUP(pthread_setschedparam, 3)
  267. SYSCALL_LOOKUP(pthread_setschedprio, 2)
  268. #ifdef CONFIG_SMP
  269. SYSCALL_LOOKUP(pthread_setaffinity_np, 3)
  270. SYSCALL_LOOKUP(pthread_getaffinity_np, 3)
  271. #endif
  272. SYSCALL_LOOKUP(pthread_cond_clockwait, 4)
  273. SYSCALL_LOOKUP(pthread_kill, 2)
  274. SYSCALL_LOOKUP(pthread_sigmask, 3)
  275. #endif
  276. /* The following are defined only if message queues are enabled */
  277. #ifndef CONFIG_DISABLE_MQUEUE
  278. SYSCALL_LOOKUP(mq_close, 1)
  279. SYSCALL_LOOKUP(mq_getattr, 2)
  280. SYSCALL_LOOKUP(mq_notify, 2)
  281. SYSCALL_LOOKUP(mq_open, 4)
  282. SYSCALL_LOOKUP(mq_receive, 4)
  283. SYSCALL_LOOKUP(mq_send, 4)
  284. SYSCALL_LOOKUP(mq_setattr, 3)
  285. SYSCALL_LOOKUP(mq_timedreceive, 5)
  286. SYSCALL_LOOKUP(mq_timedsend, 5)
  287. SYSCALL_LOOKUP(mq_unlink, 1)
  288. #endif
  289. /* The following are defined only if environment variables are supported */
  290. #ifndef CONFIG_DISABLE_ENVIRON
  291. SYSCALL_LOOKUP(clearenv, 0)
  292. SYSCALL_LOOKUP(getenv, 1)
  293. SYSCALL_LOOKUP(putenv, 1)
  294. SYSCALL_LOOKUP(setenv, 3)
  295. SYSCALL_LOOKUP(unsetenv, 1)
  296. #endif
  297. /* The following are defined only if networking AND sockets are supported */
  298. #ifdef CONFIG_NET
  299. SYSCALL_LOOKUP(accept, 3)
  300. SYSCALL_LOOKUP(bind, 3)
  301. SYSCALL_LOOKUP(connect, 3)
  302. SYSCALL_LOOKUP(getpeername, 3)
  303. SYSCALL_LOOKUP(getsockname, 3)
  304. SYSCALL_LOOKUP(getsockopt, 5)
  305. SYSCALL_LOOKUP(listen, 2)
  306. SYSCALL_LOOKUP(recv, 4)
  307. SYSCALL_LOOKUP(recvfrom, 6)
  308. SYSCALL_LOOKUP(recvmsg, 3)
  309. SYSCALL_LOOKUP(send, 4)
  310. SYSCALL_LOOKUP(sendto, 6)
  311. SYSCALL_LOOKUP(sendmsg, 3)
  312. SYSCALL_LOOKUP(setsockopt, 5)
  313. SYSCALL_LOOKUP(socket, 3)
  314. #endif
  315. /* The following is defined only if CONFIG_TASK_NAME_SIZE > 0 */
  316. #if CONFIG_TASK_NAME_SIZE > 0
  317. SYSCALL_LOOKUP(prctl, 2)
  318. #endif
  319. /* The following is defined only if entropy pool random number generator
  320. * is enabled.
  321. */
  322. #ifdef CONFIG_CRYPTO_RANDOM_POOL
  323. SYSCALL_LOOKUP(arc4random_buf, 2)
  324. #endif