diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-04-02 01:23:08 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-04-02 01:23:08 +0000 |
commit | 158978359318cb94de9e08900af4300bdfa5f651 (patch) | |
tree | b09d5d3e8b437bc0a4f62ff16c32c62e73e6828d /nuttx/include | |
parent | e3f8a9fcb39d16acdf85d8a9a8a79a1a5b75d818 (diff) | |
download | px4-nuttx-158978359318cb94de9e08900af4300bdfa5f651.tar.gz px4-nuttx-158978359318cb94de9e08900af4300bdfa5f651.tar.bz2 px4-nuttx-158978359318cb94de9e08900af4300bdfa5f651.zip |
Move more functions out of sched/ to lib/; proxies almost build
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3453 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/include')
-rw-r--r-- | nuttx/include/errno.h | 19 | ||||
-rw-r--r-- | nuttx/include/nuttx/mqueue.h | 124 | ||||
-rw-r--r-- | nuttx/include/sys/syscall.h | 158 |
3 files changed, 240 insertions, 61 deletions
diff --git a/nuttx/include/errno.h b/nuttx/include/errno.h index 8c1654b0f..1316b56fc 100644 --- a/nuttx/include/errno.h +++ b/nuttx/include/errno.h @@ -1,7 +1,7 @@ /************************************************************************ * include/errno.h * - * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> * * Redistribution and use in source and binary forms, with or without @@ -49,6 +49,10 @@ /* Convenience/compatibility definition */ #define errno *get_errno_ptr() +#ifndef CONFIG_NUTTX_KERNEL +# define set_errno(e) do { errno = (int)(a); } while (0) +# define get_errno(e) errno +#endif /* Definitions of error numbers and the string that would be * returned by strerror(). @@ -317,10 +321,21 @@ extern "C" { #define EXTERN extern #endif -/* Return a pointer to the thread specifid errno */ +/* Return a pointer to the thread specifid errno. NOTE: When doing a + * kernel-/user-mode build, this function can only be used within the + * kernel-mode space. + * + * In the user-mode space, set_errno() and get_errno() are always available, + * either as macros or via syscalls. + */ EXTERN FAR int *get_errno_ptr(void); +#ifdef CONFIG_NUTTX_KERNEL +EXTERN void set_errno(int errcode); +EXTERN int get_errno(void); +#endif + #undef EXTERN #if defined(__cplusplus) } diff --git a/nuttx/include/nuttx/mqueue.h b/nuttx/include/nuttx/mqueue.h new file mode 100644 index 000000000..77ddd4981 --- /dev/null +++ b/nuttx/include/nuttx/mqueue.h @@ -0,0 +1,124 @@ +/**************************************************************************** + * include/nuttx/mqueue.h + * + * Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * + * 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. + * + ****************************************************************************/ + +#ifndef ___INCLUDE_NUTTX_MQUEUE_H +#define ___INCLUDE_NUTTX_MQUEUE_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> +#include <nuttx/compiler.h> + +#include <sys/types.h> +#include <stdint.h> +#include <stdbool.h> +#include <mqueue.h> +#include <queue.h> +#include <signal.h> + +#if CONFIG_MQ_MAXMSGSIZE > 0 + +/**************************************************************************** + * Definitions + ****************************************************************************/ + +/**************************************************************************** + * Global Type Declarations + ****************************************************************************/ + +/* This structure defines a message queue */ + +struct mq_des; /* forward reference */ + +struct msgq_s +{ + FAR struct msgq_s *flink; /* Forward link to next message queue */ + sq_queue_t msglist; /* Prioritized message list */ + int16_t maxmsgs; /* Maximum number of messages in the queue */ + int16_t nmsgs; /* Number of message in the queue */ + int16_t nconnect; /* Number of connections to message queue */ + int16_t nwaitnotfull; /* Number tasks waiting for not full */ + int16_t nwaitnotempty; /* Number tasks waiting for not empty */ + uint8_t maxmsgsize; /* Max size of message in message queue */ + bool unlinked; /* true if the msg queue has been unlinked */ +#ifndef CONFIG_DISABLE_SIGNALS + FAR struct mq_des *ntmqdes; /* Notification: Owning mqdes (NULL if none) */ + pid_t ntpid; /* Notification: Receiving Task's PID */ + int ntsigno; /* Notification: Signal number */ + union sigval ntvalue; /* Notification: Signal value */ +#endif + char name[1]; /* Start of the queue name */ +}; + +typedef struct msgq_s msgq_t; + +#define SIZEOF_MQ_HEADER ((int)(((msgq_t*)NULL)->name)) + +/* This describes the message queue descriptor that is held in the + * task's TCB + */ + +struct mq_des +{ + FAR struct mq_des *flink; /* Forward link to next message descriptor */ + FAR msgq_t *msgq; /* Pointer to associated message queue */ + int oflags; /* Flags set when message queue was opened */ +}; + +/**************************************************************************** + * Global Variables + ****************************************************************************/ + +/**************************************************************************** + * Global Function Prototypes + ****************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +#undef EXTERN +#ifdef __cplusplus +} +#endif + +#endif /* CONFIG_MQ_MAXMSGSIZE > 0 */ +#endif /* ___INCLUDE_NUTTX_MQUEUE_H */ + diff --git a/nuttx/include/sys/syscall.h b/nuttx/include/sys/syscall.h index fd86367ec..f44587b3c 100644 --- a/nuttx/include/sys/syscall.h +++ b/nuttx/include/sys/syscall.h @@ -73,65 +73,105 @@ #define SYS_fstat (CONFIG_SYS_RESERVED+15) #define SYS_fstatfs (CONFIG_SYS_RESERVED+16) #define SYS_fsync (CONFIG_SYS_RESERVED+17) -#define SYS_getcwd (CONFIG_SYS_RESERVED+18) -#define SYS_getpid (CONFIG_SYS_RESERVED+19) -#define SYS_getsockopt (CONFIG_SYS_RESERVED+20) -#define SYS_gettimeofday (CONFIG_SYS_RESERVED+21) -#define SYS_ioctl (CONFIG_SYS_RESERVED+22) -#define SYS_kill (CONFIG_SYS_RESERVED+23) -#define SYS_listen (CONFIG_SYS_RESERVED+24) -#define SYS_lseek (CONFIG_SYS_RESERVED+25) -#define SYS_mkdir (CONFIG_SYS_RESERVED+26) -#define SYS_mmap (CONF6G_SYS_RESERVED+27) -#define SYS_mount (CONF7G_SYS_RESERVED+28) -#define SYS_mq_notify (CONFIG_SYS_RESERVED+29) -#define SYS_mq_open (CONFIG_SYS_RESERVED+30) -#define SYS_mq_timedreceive (CONFIG_SYS_RESERVED+31) -#define SYS_mq_timedsend (CONFIG_SYS_RESERVED+32) -#define SYS_mq_unlink (CONFIG_SYS_RESERVED+33) -#define SYS_munmap (CONFIG_SYS_RESERVED+34) -#define SYS_open (CONFIG_SYS_RESERVED+35) -#define SYS_pipe (CONFIG_SYS_RESERVED+36) -#define SYS_poll (CONFIG_SYS_RESERVED+37) -#define SYS_read (CONFIG_SYS_RESERVED+38) -#define SYS_readdir (CONFIG_SYS_RESERVED+39) -#define SYS_reboot (CONFIG_SYS_RESERVED+40) -#define SYS_recvfrom (CONFIG_SYS_RESERVED+41) -#define SYS_rename (CONFIG_SYS_RESERVED+42) -#define SYS_rmdir (CONFIG_SYS_RESERVED+43) -#define SYS_sched_getparam (CONFIG_SYS_RESERVED+44) -#define SYS_sched_get_priority_max (CONFIG_SYS_RESERVED+45) -#define SYS_sched_get_priority_min (CONFIG_SYS_RESERVED+46) -#define SYS_sched_getscheduler (CONFIG_SYS_RESERVED+47) -#define SYS_sched_rr_get_interval (CONFIG_SYS_RESERVED+48) -#define SYS_sched_setparam (CONFIG_SYS_RESERVED+49) -#define SYS_sched_setscheduler (CONFIG_SYS_RESERVED+50) -#define SYS_sched_yield (CONFIG_SYS_RESERVED+51) -#define SYS_select (CONFIG_SYS_RESERVED+52) -#define SYS_sendto (CONFIG_SYS_RESERVED+53) -#define SYS_setsockopt (CONFIG_SYS_RESERVED+54) -#define SYS_sigaction (CONFIG_SYS_RESERVED+55) -#define SYS_signal (CONFIG_SYS_RESERVED+56) -#define SYS_sigpending (CONFIG_SYS_RESERVED+57) -#define SYS_sigprocmask (CONFIG_SYS_RESERVED+58) -#define SYS_sigsuspend (CONFIG_SYS_RESERVED+59) -#define SYS_socket (CONFIG_SYS_RESERVED+60) -#define SYS_stat (CONFIG_SYS_RESERVED+61) -#define SYS_statfs (CONFIG_SYS_RESERVED+62) -#define SYS_task_create (CONFIG_SYS_RESERVED+63) -#define SYS_task_delete (CONFIG_SYS_RESERVED+64) -#define SYS_task_init (CONFIG_SYS_RESERVED+65) -#define SYS_task_restart (CONFIG_SYS_RESERVED+66) -#define SYS_timer_create (CONFIG_SYS_RESERVED+67) -#define SYS_timer_delete (CONFIG_SYS_RESERVED+68) -#define SYS_timer_getoverrun (CONFIG_SYS_RESERVED+69) -#define SYS_timer_gettime (CONFIG_SYS_RESERVED+70) -#define SYS_timer_settime (CONFIG_SYS_RESERVED+71) -#define SYS_umount (CONFIG_SYS_RESERVED+72) -#define SYS_unlink (CONFIG_SYS_RESERVED+73) -#define SYS_waitid (CONFIG_SYS_RESERVED+74) -#define SYS_waitpid (CONFIG_SYS_RESERVED+75) -#define SYS_write (CONFIG_SYS_RESERVED+76) +#define SYS_get_errno (CONFIG_SYS_RESERVED+18) +#define SYS_getenv (CONFIG_SYS_RESERVED+19) +#define SYS_getpid (CONFIG_SYS_RESERVED+20) +#define SYS_getsockopt (CONFIG_SYS_RESERVED+21) +#define SYS_gettimeofday (CONFIG_SYS_RESERVED+22) +#define SYS_ioctl (CONFIG_SYS_RESERVED+23) +#define SYS_kill (CONFIG_SYS_RESERVED+24) +#define SYS_listen (CONFIG_SYS_RESERVED+25) +#define SYS_lseek (CONFIG_SYS_RESERVED+26) +#define SYS_mkdir (CONFIG_SYS_RESERVED+27) +#define SYS_mkfifo (CONFIG_SYS_RESERVED+28) +#define SYS_mmap (CONFIG_SYS_RESERVED+29) +#define SYS_mount (CONFIG_SYS_RESERVED+30) +#define SYS_mq_notify (CONFIG_SYS_RESERVED+31) +#define SYS_mq_open (CONFIG_SYS_RESERVED+32) +#define SYS_mq_close (CONFIG_SYS_RESERVED+33) +#define SYS_mq_receive (CONFIG_SYS_RESERVED+34) +#define SYS_mq_send (CONFIG_SYS_RESERVED+35) +#define SYS_mq_timedreceive (CONFIG_SYS_RESERVED+36) +#define SYS_mq_timedsend (CONFIG_SYS_RESERVED+37) +#define SYS_mq_unlink (CONFIG_SYS_RESERVED+38) +#define SYS_open (CONFIG_SYS_RESERVED+39) +#define SYS_opendir (CONFIG_SYS_RESERVED+40) +#define SYS_pipe (CONFIG_SYS_RESERVED+41) +#define SYS_poll (CONFIG_SYS_RESERVED+42) +#define SYS_pthread_barrier_destroy (CONFIG_SYS_RESERVED+43) +#define SYS_pthread_barrier_init (CONFIG_SYS_RESERVED+44) +#define SYS_pthread_barrier_wait (CONFIG_SYS_RESERVED+45) +#define SYS_pthread_cancel (CONFIG_SYS_RESERVED+46) +#define SYS_pthread_cond_broadcast (CONFIG_SYS_RESERVED+47) +#define SYS_pthread_cond_destroy (CONFIG_SYS_RESERVED+48) +#define SYS_pthread_cond_init (CONFIG_SYS_RESERVED+49) +#define SYS_pthread_cond_signal (CONFIG_SYS_RESERVED+50) +#define SYS_pthread_cond_timedwait (CONFIG_SYS_RESERVED+51) +#define SYS_pthread_cond_wait (CONFIG_SYS_RESERVED+52) +#define SYS_pthread_create (CONFIG_SYS_RESERVED+53) +#define SYS_pthread_detach (CONFIG_SYS_RESERVED+54) +#define SYS_pthread_exit (CONFIG_SYS_RESERVED+55) +#define SYS_pthread_getschedparam (CONFIG_SYS_RESERVED+56) +#define SYS_pthread_getspecific (CONFIG_SYS_RESERVED+57) +#define SYS_pthread_join (CONFIG_SYS_RESERVED+58) +#define SYS_pthread_key_create (CONFIG_SYS_RESERVED+59) +#define SYS_pthread_key_delete (CONFIG_SYS_RESERVED+60) +#define SYS_pthread_kill (CONFIG_SYS_RESERVED+61) +#define SYS_pthread_mutex_destroy (CONFIG_SYS_RESERVED+62) +#define SYS_pthread_mutex_init (CONFIG_SYS_RESERVED+63) +#define SYS_pthread_mutex_lock (CONFIG_SYS_RESERVED+64) +#define SYS_pthread_mutex_trylock (CONFIG_SYS_RESERVED+65) +#define SYS_pthread_mutex_unlock (CONFIG_SYS_RESERVED+66) +#define SYS_pthread_once (CONFIG_SYS_RESERVED+67) +#define SYS_pthread_setcancelstate (CONFIG_SYS_RESERVED+68) +#define SYS_pthread_setschedparam (CONFIG_SYS_RESERVED+69) +#define SYS_pthread_setschedprio (CONFIG_SYS_RESERVED+70) +#define SYS_pthread_setspecific (CONFIG_SYS_RESERVED+71) +#define SYS_pthread_sigmask (CONFIG_SYS_RESERVED+72) +#define SYS_pthread_testcancel (CONFIG_SYS_RESERVED+73) +#define SYS_pthread_yield (CONFIG_SYS_RESERVED+74) +#define SYS_putenv (CONFIG_SYS_RESERVED+75) +#define SYS_read (CONFIG_SYS_RESERVED+76) +#define SYS_readdir (CONFIG_SYS_RESERVED+77) +#define SYS_reboot (CONFIG_SYS_RESERVED+78) +#define SYS_recvfrom (CONFIG_SYS_RESERVED+79) +#define SYS_rename (CONFIG_SYS_RESERVED+80) +#define SYS_rmdir (CONFIG_SYS_RESERVED+81) +#define SYS_sched_getparam (CONFIG_SYS_RESERVED+82) +#define SYS_sched_get_priority_max (CONFIG_SYS_RESERVED+83) +#define SYS_sched_get_priority_min (CONFIG_SYS_RESERVED+84) +#define SYS_sched_getscheduler (CONFIG_SYS_RESERVED+85) +#define SYS_sched_rr_get_interval (CONFIG_SYS_RESERVED+86) +#define SYS_sched_setparam (CONFIG_SYS_RESERVED+87) +#define SYS_sched_setscheduler (CONFIG_SYS_RESERVED+88) +#define SYS_sched_yield (CONFIG_SYS_RESERVED+89) +#define SYS_select (CONFIG_SYS_RESERVED+90) +#define SYS_sendto (CONFIG_SYS_RESERVED+91) +#define SYS_set_errno (CONFIG_SYS_RESERVED+92) +#define SYS_setenv (CONFIG_SYS_RESERVED+93) +#define SYS_setsockopt (CONFIG_SYS_RESERVED+94) +#define SYS_sigaction (CONFIG_SYS_RESERVED+95) +#define SYS_signal (CONFIG_SYS_RESERVED+96) +#define SYS_sigpending (CONFIG_SYS_RESERVED+97) +#define SYS_sigprocmask (CONFIG_SYS_RESERVED+98) +#define SYS_sigsuspend (CONFIG_SYS_RESERVED+99) +#define SYS_socket (CONFIG_SYS_RESERVED+100) +#define SYS_stat (CONFIG_SYS_RESERVED+101) +#define SYS_statfs (CONFIG_SYS_RESERVED+102) +#define SYS_task_create (CONFIG_SYS_RESERVED+103) +#define SYS_task_delete (CONFIG_SYS_RESERVED+104) +#define SYS_task_init (CONFIG_SYS_RESERVED+105) +#define SYS_task_restart (CONFIG_SYS_RESERVED+106) +#define SYS_timer_create (CONFIG_SYS_RESERVED+107) +#define SYS_timer_delete (CONFIG_SYS_RESERVED+108) +#define SYS_timer_getoverrun (CONFIG_SYS_RESERVED+109) +#define SYS_timer_gettime (CONFIG_SYS_RESERVED+110) +#define SYS_timer_settime (CONFIG_SYS_RESERVED+111) +#define SYS_umount (CONFIG_SYS_RESERVED+112) +#define SYS_unlink (CONFIG_SYS_RESERVED+113) +#define SYS_waitid (CONFIG_SYS_RESERVED+114) +#define SYS_waitpid (CONFIG_SYS_RESERVED+115) +#define SYS_write (CONFIG_SYS_RESERVED+116) /**************************************************************************** * Public Type Definitions |