summaryrefslogtreecommitdiff
path: root/nuttx/include
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-04-02 01:23:08 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-04-02 01:23:08 +0000
commit158978359318cb94de9e08900af4300bdfa5f651 (patch)
treeb09d5d3e8b437bc0a4f62ff16c32c62e73e6828d /nuttx/include
parente3f8a9fcb39d16acdf85d8a9a8a79a1a5b75d818 (diff)
downloadpx4-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.h19
-rw-r--r--nuttx/include/nuttx/mqueue.h124
-rw-r--r--nuttx/include/sys/syscall.h158
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