/**************************************************************************** * syscall/syscall_lookup.h * * Copyright (C) 2011, 2013-2014 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************/ /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ /* SYSCALL_LOOKUP must be defined before including this file. * * These first system calls are supported regardless of the NuttX * configuration */ SYSCALL_LOOKUP1(_exit, 1, STUB__exit) SYSCALL_LOOKUP(exit, 1, STUB_exit) SYSCALL_LOOKUP(get_errno, 0, STUB_get_errno) SYSCALL_LOOKUP(getpid, 0, STUB_getpid) SYSCALL_LOOKUP(sched_getparam, 2, STUB_sched_getparam) SYSCALL_LOOKUP(sched_getscheduler, 1, STUB_sched_getscheduler) SYSCALL_LOOKUP(sched_lock, 0, STUB_sched_lock) SYSCALL_LOOKUP(sched_lockcount, 0, STUB_sched_lockcount) SYSCALL_LOOKUP(sched_rr_get_interval, 2, STUB_sched_rr_get_interval) SYSCALL_LOOKUP(sched_setparam, 2, STUB_sched_setparam) SYSCALL_LOOKUP(sched_setscheduler, 3, STUB_sched_setscheduler) SYSCALL_LOOKUP(sched_unlock, 0, STUB_sched_unlock) SYSCALL_LOOKUP(sched_yield, 0, STUB_sched_yield) SYSCALL_LOOKUP(set_errno, 1, STUB_set_errno) SYSCALL_LOOKUP(uname, 1, STUB_uname) /* Semaphores */ SYSCALL_LOOKUP(sem_destroy, 2, STUB_sem_destroy) SYSCALL_LOOKUP(sem_post, 1, STUB_sem_post) SYSCALL_LOOKUP(sem_timedwait, 2, STUB_sem_timedwait) SYSCALL_LOOKUP(sem_trywait, 1, STUB_sem_trywait) SYSCALL_LOOKUP(sem_wait, 1, STUB_sem_wait) /* Named semaphores */ #ifdef CONFIG_FS_NAMED_SEMAPHORES SYSCALL_LOOKUP(sem_open, 6, STUB_sem_open) SYSCALL_LOOKUP(sem_close, 1, STUB_sem_close) SYSCALL_LOOKUP(sem_unlink, 1, STUB_sem_unlink) #endif #ifndef CONFIG_BUILD_KERNEL SYSCALL_LOOKUP(task_create, 5, STUB_task_create) #else SYSCALL_LOOKUP(pgalloc, 2, STUB_pgalloc) #endif SYSCALL_LOOKUP(task_delete, 1, STUB_task_delete) SYSCALL_LOOKUP(task_restart, 1, STUB_task_restart) SYSCALL_LOOKUP(up_assert, 2, STUB_up_assert) /* The following can be individually enabled */ #ifdef CONFIG_ARCH_HAVE_VFORK SYSCALL_LOOKUP(vfork, 0, STUB_vfork) #endif #ifdef CONFIG_SCHED_ATEXIT SYSCALL_LOOKUP(atexit, 1, STUB_atexit) #endif #ifdef CONFIG_SCHED_ONEXIT SYSCALL_LOOKUP(on_exit, 2, STUB_on_exit) #endif #ifdef CONFIG_SCHED_WAITPID SYSCALL_LOOKUP(waitpid, 3, STUB_waitpid) # ifdef CONFIG_SCHED_HAVE_PARENT SYSCALL_LOOKUP(wait, 1, STUB_wait) SYSCALL_LOOKUP(waitid, 4, STUB_waitid) # endif #endif /* The following can only be defined if we are configured to load * OS modules from a file system. */ #ifdef CONFIG_MODULE SYSCALL_LOOKUP(insmod, 2, STUB_insmod) SYSCALL_LOOKUP(rmmod, 1, STUB_rmmod) #endif /* The following can only be defined if we are configured to execute * programs from a file system. */ #if !defined(CONFIG_BINFMT_DISABLE) && defined(CONFIG_LIBC_EXECFUNCS) # ifdef CONFIG_BINFMT_EXEPATH SYSCALL_LOOKUP(posix_spawnp, 6, STUB_posix_spawnp) # else SYSCALL_LOOKUP(posix_spawn, 6, STUB_posix_spawn) # endif SYSCALL_LOOKUP(execv, 2, STUB_execv) #endif /* The following are only defined is signals are supported in the NuttX * configuration. */ #ifndef CONFIG_DISABLE_SIGNALS SYSCALL_LOOKUP(kill, 2, STUB_kill) SYSCALL_LOOKUP(sigaction, 3, STUB_sigaction) SYSCALL_LOOKUP(sigpending, 1, STUB_sigpending) SYSCALL_LOOKUP(sigprocmask, 3, STUB_sigprocmask) SYSCALL_LOOKUP(sigqueue, 3, STUB_sigqueue) SYSCALL_LOOKUP(sigsuspend, 1, STUB_sigsuspend) SYSCALL_LOOKUP(sigtimedwait, 3, STUB_sigtimedwait) SYSCALL_LOOKUP(sigwaitinfo, 2, STUB_sigwaitinfo) SYSCALL_LOOKUP(nanosleep, 2, STUB_nanosleep) #endif /* The following are only defined if the system clock is enabled in the * NuttX configuration. */ SYSCALL_LOOKUP(syscall_clock_systimer, 0, STUB_clock_systimer) SYSCALL_LOOKUP(clock_getres, 2, STUB_clock_getres) SYSCALL_LOOKUP(clock_gettime, 2, STUB_clock_gettime) SYSCALL_LOOKUP(clock_settime, 2, STUB_clock_settime) /* The following are defined only if POSIX timers are supported */ #ifndef CONFIG_DISABLE_POSIX_TIMERS SYSCALL_LOOKUP(timer_create, 3, STUB_timer_create) SYSCALL_LOOKUP(timer_delete, 1, STUB_timer_delete) SYSCALL_LOOKUP(timer_getoverrun, 1, STUB_timer_getoverrun) SYSCALL_LOOKUP(timer_gettime, 2, STUB_timer_gettime) SYSCALL_LOOKUP(timer_settime, 4, STUB_timer_settime) #endif /* The following are defined if either file or socket descriptor are * enabled. */ #if CONFIG_NFILE_DESCRIPTORS > 0 || CONFIG_NSOCKET_DESCRIPTORS > 0 SYSCALL_LOOKUP(close, 1, STUB_close) # ifdef CONFIG_LIBC_IOCTL_VARIADIC SYSCALL_LOOKUP(fs_ioctl, 3, STUB_fs_ioctl) # else SYSCALL_LOOKUP(ioctl, 3, STUB_ioctl) # endif SYSCALL_LOOKUP(read, 3, STUB_read) SYSCALL_LOOKUP(write, 3, STUB_write) SYSCALL_LOOKUP(pread, 4, STUB_pread) SYSCALL_LOOKUP(pwrite, 4, STUB_pwrite) # ifdef CONFIG_FS_AIO SYSCALL_LOOKUP(aio_read, 1, SYS_aio_read) SYSCALL_LOOKUP(aio_write, 1, SYS_aio_write) SYSCALL_LOOKUP(aio_fsync, 2, SYS_aio_fsync) SYSCALL_LOOKUP(aio_cancel, 2, SYS_aio_cancel) # endif # ifndef CONFIG_DISABLE_POLL SYSCALL_LOOKUP(poll, 3, STUB_poll) SYSCALL_LOOKUP(select, 5, STUB_select) # endif #endif /* Board support */ #ifdef CONFIG_LIB_BOARDCTL SYSCALL_LOOKUP(boardctl, 2, STUB_boardctl) #endif /* The following are defined if file descriptors are enabled */ #if CONFIG_NFILE_DESCRIPTORS > 0 SYSCALL_LOOKUP(closedir, 1, STUB_closedir) SYSCALL_LOOKUP(dup, 1, STUB_dup) SYSCALL_LOOKUP(dup2, 2, STUB_dup2) SYSCALL_LOOKUP(fcntl, 6, STUB_fcntl) SYSCALL_LOOKUP(lseek, 3, STUB_lseek) SYSCALL_LOOKUP(mkfifo, 2, STUB_mkfifo) SYSCALL_LOOKUP(mmap, 6, STUB_mmap) SYSCALL_LOOKUP(open, 6, STUB_open) SYSCALL_LOOKUP(opendir, 1, STUB_opendir) SYSCALL_LOOKUP(pipe, 1, STUB_pipe) SYSCALL_LOOKUP(readdir, 1, STUB_readdir) SYSCALL_LOOKUP(rewinddir, 1, STUB_rewinddir) SYSCALL_LOOKUP(seekdir, 2, STUB_seekdir) SYSCALL_LOOKUP(stat, 2, STUB_stat) SYSCALL_LOOKUP(statfs, 2, STUB_statfs) SYSCALL_LOOKUP(telldir, 1, STUB_telldir) # if CONFIG_NFILE_STREAMS > 0 SYSCALL_LOOKUP(fdopen, 3, STUB_fs_fdopen) SYSCALL_LOOKUP(sched_getstreams, 0, STUB_sched_getstreams) # endif # if defined(CONFIG_NET_SENDFILE) SYSCALL_LOOKUP(sendfile, 4, STUB_fs_sendifile) # endif # if !defined(CONFIG_DISABLE_MOUNTPOINT) # if defined(CONFIG_FS_READABLE) SYSCALL_LOOKUP(mount, 5, STUB_mount) # endif SYSCALL_LOOKUP(fsync, 1, STUB_fsync) SYSCALL_LOOKUP(mkdir, 2, STUB_mkdir) SYSCALL_LOOKUP(rename, 2, STUB_rename) SYSCALL_LOOKUP(rmdir, 1, STUB_rmdir) SYSCALL_LOOKUP(umount2, 2, STUB_umount2) SYSCALL_LOOKUP(unlink, 1, STUB_unlink) # endif #endif /* Shared memory interfaces */ #ifdef CONFIG_MM_SHM SYSCALL_LOOKUP(shmget, 3, STUB_shmget) SYSCALL_LOOKUP(shmat, 3, STUB_shmat) SYSCALL_LOOKUP(shmctl, 3, STUB_shmctl) SYSCALL_LOOKUP(shmdt, 1, STUB_shmdt) #endif /* The following are defined if pthreads are enabled */ #ifndef CONFIG_DISABLE_PTHREAD SYSCALL_LOOKUP(pthread_barrier_destroy, 1, STUB_pthread_barrier_destroy) SYSCALL_LOOKUP(pthread_barrier_init, 3, STUB_pthread_barrier_init) SYSCALL_LOOKUP(pthread_barrier_wait, 1, STUB_pthread_barrier_wait) SYSCALL_LOOKUP(pthread_cancel, 1, STUB_pthread_cancel) SYSCALL_LOOKUP(pthread_cond_broadcast, 1, STUB_pthread_cond_broadcast) SYSCALL_LOOKUP(pthread_cond_destroy, 1, STUB_pthread_cond_destroy) SYSCALL_LOOKUP(pthread_cond_init, 2, STUB_pthread_cond_init) SYSCALL_LOOKUP(pthread_cond_signal, 1, STUB_pthread_cond_signal) SYSCALL_LOOKUP(pthread_cond_wait, 2, STUB_pthread_cond_wait) SYSCALL_LOOKUP(pthread_create, 4, STUB_pthread_create) SYSCALL_LOOKUP(pthread_detach, 1, STUB_pthread_detach) SYSCALL_LOOKUP(pthread_exit, 1, STUB_pthread_exit) SYSCALL_LOOKUP(pthread_getschedparam, 3, STUB_pthread_getschedparam) SYSCALL_LOOKUP(pthread_getspecific, 1, STUB_pthread_getspecific) SYSCALL_LOOKUP(pthread_join, 2, STUB_pthread_join) SYSCALL_LOOKUP(pthread_key_create, 2, STUB_pthread_key_create) SYSCALL_LOOKUP(pthread_key_delete, 1, STUB_pthread_key_delete) SYSCALL_LOOKUP(pthread_mutex_destroy, 1, STUB_pthread_mutex_destroy) SYSCALL_LOOKUP(pthread_mutex_init, 2, STUB_pthread_mutex_init) SYSCALL_LOOKUP(pthread_mutex_lock, 1, STUB_pthread_mutex_lock) SYSCALL_LOOKUP(pthread_mutex_trylock, 1, STUB_pthread_mutex_trylock) SYSCALL_LOOKUP(pthread_mutex_unlock, 1, STUB_pthread_mutex_unlock) SYSCALL_LOOKUP(pthread_once, 2, STUB_pthread_once) SYSCALL_LOOKUP(pthread_setcancelstate, 2, STUB_pthread_setcancelstate) SYSCALL_LOOKUP(pthread_setschedparam, 3, STUB_pthread_setschedparam) SYSCALL_LOOKUP(pthread_setschedprio, 2, STUB_pthread_setschedprio) SYSCALL_LOOKUP(pthread_setspecific, 2, STUB_pthread_setspecific) SYSCALL_LOOKUP(pthread_yield, 0, STUB_pthread_yield) # ifndef CONFIG_DISABLE_SIGNALS SYSCALL_LOOKUP(pthread_cond_timedwait, 3, STUB_pthread_cond_timedwait) SYSCALL_LOOKUP(pthread_kill, 2, STUB_pthread_kill) SYSCALL_LOOKUP(pthread_sigmask, 3, STUB_pthread_sigmask) # endif #endif /* The following are defined only if message queues are enabled */ #ifndef CONFIG_DISABLE_MQUEUE SYSCALL_LOOKUP(mq_close, 1, STUB_mq_close) SYSCALL_LOOKUP(mq_getattr, 2, STUB_mq_getattr) SYSCALL_LOOKUP(mq_notify, 2, STUB_mq_notify) SYSCALL_LOOKUP(mq_open, 6, STUB_mq_open) SYSCALL_LOOKUP(mq_receive, 4, STUB_mq_receive) SYSCALL_LOOKUP(mq_send, 4, STUB_mq_send) SYSCALL_LOOKUP(mq_setattr, 3, STUB_mq_setattr) SYSCALL_LOOKUP(mq_timedreceive, 5, STUB_mq_timedreceive) SYSCALL_LOOKUP(mq_timedsend, 5, STUB_mq_timedsend) SYSCALL_LOOKUP(mq_unlink, 1, STUB_mq_unlink) #endif /* The following are defined only if environment variables are supported */ #ifndef CONFIG_DISABLE_ENVIRON SYSCALL_LOOKUP(clearenv, 0, STUB_clearenv) SYSCALL_LOOKUP(getenv, 1, STUB_getenv) SYSCALL_LOOKUP(putenv, 1, STUB_putenv) SYSCALL_LOOKUP(setenv, 3, STUB_setenv) SYSCALL_LOOKUP(unsetenv, 1, STUB_unsetenv) #endif /* The following are defined only if netdb is supported */ #ifdef CONFIG_LIBC_NETDB SYSCALL_LOOKUP(sethostname, 2, STUB_sethostname) #endif /* The following are defined only if networking AND sockets are supported */ #if CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET) SYSCALL_LOOKUP(accept, 3, STUB_accept) SYSCALL_LOOKUP(bind, 3, STUB_bind) SYSCALL_LOOKUP(connect, 3, STUB_connect) SYSCALL_LOOKUP(getsockopt, 5, STUB_getsockopt) SYSCALL_LOOKUP(listen, 2, STUB_listen) SYSCALL_LOOKUP(recv, 4, STUB_recv) SYSCALL_LOOKUP(recvfrom, 6, STUB_recvfrom) SYSCALL_LOOKUP(send, 4, STUB_send) SYSCALL_LOOKUP(sendto, 6, STUB_sendto) SYSCALL_LOOKUP(setsockopt, 5, STUB_setsockopt) SYSCALL_LOOKUP(socket, 3, STUB_socket) #endif /* The following is defined only if CONFIG_TASK_NAME_SIZE > 0 */ #if CONFIG_TASK_NAME_SIZE > 0 SYSCALL_LOOKUP(prctl, 5, STUB_prctl) #endif /**************************************************************************** * Private Functions ****************************************************************************/ /**************************************************************************** * Public Functions ****************************************************************************/