aboutsummaryrefslogtreecommitdiff
path: root/nuttx/include/sys
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-09-17 18:18:44 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-09-17 18:18:44 +0000
commit57623d42ebb04f0a0b9e6eb7c0847a3ece2aa0ff (patch)
tree25d07d14e920d31c0b1947c9ca586f2a01fc32d8 /nuttx/include/sys
downloadpx4-firmware-57623d42ebb04f0a0b9e6eb7c0847a3ece2aa0ff.tar.gz
px4-firmware-57623d42ebb04f0a0b9e6eb7c0847a3ece2aa0ff.tar.bz2
px4-firmware-57623d42ebb04f0a0b9e6eb7c0847a3ece2aa0ff.zip
Resync new repository with old repo r5166
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5153 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/include/sys')
-rw-r--r--nuttx/include/sys/ioctl.h83
-rw-r--r--nuttx/include/sys/mman.h113
-rw-r--r--nuttx/include/sys/mount.h77
-rw-r--r--nuttx/include/sys/prctl.h114
-rw-r--r--nuttx/include/sys/select.h121
-rw-r--r--nuttx/include/sys/sendfile.h123
-rw-r--r--nuttx/include/sys/socket.h234
-rw-r--r--nuttx/include/sys/sockio.h120
-rw-r--r--nuttx/include/sys/stat.h134
-rw-r--r--nuttx/include/sys/statfs.h145
-rw-r--r--nuttx/include/sys/syscall.h398
-rw-r--r--nuttx/include/sys/time.h74
-rw-r--r--nuttx/include/sys/types.h232
-rw-r--r--nuttx/include/sys/vfs.h61
-rw-r--r--nuttx/include/sys/wait.h118
15 files changed, 2147 insertions, 0 deletions
diff --git a/nuttx/include/sys/ioctl.h b/nuttx/include/sys/ioctl.h
new file mode 100644
index 000000000..3d1874869
--- /dev/null
+++ b/nuttx/include/sys/ioctl.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+ * include/sys/ioctl.h
+ *
+ * Copyright (C) 2007, 2008, 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_IOCTL_H
+#define __INCLUDE_SYS_IOCTL_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/* Get NuttX configuration and NuttX-specific IOCTL definitions */
+
+#include <nuttx/config.h>
+#include <nuttx/fs/ioctl.h>
+
+/* Include network ioctls info */
+
+#if defined(CONFIG_NET) && CONFIG_NSOCKET_DESCRIPTORS > 0
+# include <nuttx/net/ioctl.h>
+#endif
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/* ioctl() is a non-standard UNIX-like API */
+
+EXTERN int ioctl(int fd, int req, unsigned long arg);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_IOCTL_H */
diff --git a/nuttx/include/sys/mman.h b/nuttx/include/sys/mman.h
new file mode 100644
index 000000000..ab847b97a
--- /dev/null
+++ b/nuttx/include/sys/mman.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+ * include/sys/mman.h
+ *
+ * Copyright (C) 2008, 2009, 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_MMAN_H
+#define __INCLUDE_SYS_MMAN_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <sys/types.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Protections are chosen from these bits, OR'd together. NuttX does not
+ * support any of these, but are provided for source level compatibility
+ */
+
+#define PROT_NONE 0x0 /* Page may not be accessed */
+#define PROT_READ 0x1 /* Page may be read */
+#define PROT_WRITE 0x2 /* Page may be written */
+#define PROT_EXEC 0x4 /* Page may be executed */
+
+/* Sharing types -- ignored by NuttX. */
+
+#define MAP_SHARED 0x00001 /* Share this mapping */
+#define MAP_PRIVATE 0x00002 /* Create a private copy-on-write mapping */
+#define MAP_TYPE 0x0000f /* Mask for type of mapping */
+#define MAP_FIXED 0x00010 /* Map to specified address exactly */
+#define MAP_FILE 0x00000 /* The mapping is backed by a file */
+#define MAP_ANONYMOUS 0x00020 /* The mapping is not backed by any file */
+#define MAP_ANON MAP_ANONYMOUS
+
+/* These are Linux-specific. */
+
+#define MAP_GROWSDOWN 0x00100 /* Used to stack allocations */
+#define MAP_DENYWRITE 0x00800 /* Do not permit writes to file */
+#define MAP_EXECUTABLE 0x01000 /* Mark it as an executable */
+#define MAP_LOCKED 0x02000 /* Lock pages mapped into memory */
+#define MAP_NORESERVE 0x04000 /* Do not reserve swap space for this mapping */
+#define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables */
+#define MAP_NONBLOCK 0x10000 /* Do not block on IO */
+
+/* Failure return */
+
+#define MAP_FAILED ((void*)-1)
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN FAR void *mmap(FAR void *start, size_t length, int prot, int flags,
+ int fd, off_t offset);
+
+#ifdef CONFIG_FS_RAMMAP
+EXTERN int munmap(FAR void *start, size_t length);
+#else
+# define munmap(start, length)
+#endif
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_MMAN_H */
diff --git a/nuttx/include/sys/mount.h b/nuttx/include/sys/mount.h
new file mode 100644
index 000000000..194dec8cc
--- /dev/null
+++ b/nuttx/include/sys/mount.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ * include/sys/mount.h
+ *
+ * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_MOUNT_H
+#define __INCLUDE_SYS_MOUNT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Mount flags */
+
+#define MS_RDONLY 1 /* Mount file system read-only */
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN int mount(const char *source, const char *target,
+ const char *filesystemtype, unsigned long mountflags,
+ const void *data);
+EXTERN int umount(const char *target);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_MOUNT_H */
diff --git a/nuttx/include/sys/prctl.h b/nuttx/include/sys/prctl.h
new file mode 100644
index 000000000..f1441a77a
--- /dev/null
+++ b/nuttx/include/sys/prctl.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+ * include/sys/prctl.h
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_PRCTL_H
+#define __INCLUDE_SYS_PRCTL_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Supported prctl() commands.
+ *
+ * PR_SET_NAME
+ * Set the task (or thread) name for the thread whose ID is in required
+ * arg2 (int), using the value in the location pointed to by required arg1
+ * (char*). The name can be up to CONFIG_TASK_NAME_SIZE long (including
+ * any null termination). The thread ID of 0 will set the name of the
+ * calling thread. As an example:
+ *
+ * prctl(PR_SET_NAME, "MyName", 0);
+ *
+ * PR_GET_NAME
+ * Return the task (or thread) name for the for the thread whose ID is
+ * optional arg2 (int), in the buffer pointed to by optional arg1 (char *).
+ * The buffer must be CONFIG_TASK_NAME_SIZE long (including any null
+ * termination). As an example:
+ *
+ * char myname[CONFIG_TASK_NAME_SIZE];
+ * prctl(PR_GET_NAME, myname, 0);
+ */
+
+ #define PR_SET_NAME 1
+ #define PR_GET_NAME 2
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Name: prctl
+ *
+ * Description:
+ * prctl() is called with a first argument describing what to do (with
+ * values PR_* defined above) and with additional arguments depending on
+ * the specific command.
+ *
+ * Returned Value:
+ * The returned value may depend on the specific commnand. For PR_SET_NAME
+ * and PR_GET_NAME, the returned value of 0 indicates successful operation.
+ * On any failure, -1 is retruend and the errno value is set appropriately.
+ *
+ * EINVAL The value of 'option' is not recognized.
+ * EFAULT optional arg1 is not a valid address.
+ * ESRCH No task/thread can be found corresponding to that specified
+ * by optional arg1.
+ *
+ ****************************************************************************/
+
+EXTERN int prctl(int option, ...);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_PRCTL_H */
diff --git a/nuttx/include/sys/select.h b/nuttx/include/sys/select.h
new file mode 100644
index 000000000..1ff074b6c
--- /dev/null
+++ b/nuttx/include/sys/select.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+ * include/sys/select.h
+ *
+ * Copyright (C) 2008-2009, 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_SELECT_H
+#define __INCLUDE_SYS_SELECT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <time.h>
+
+#if CONFIG_NFILE_DESCRIPTORS > 0 || CONFIG_NSOCKET_DESCRIPTORS > 0
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* Get the total number of descriptors that we will have to support */
+
+#define __SELECT_NDESCRIPTORS (CONFIG_NFILE_DESCRIPTORS + CONFIG_NSOCKET_DESCRIPTORS)
+
+/* We will use a 32-bit bitsets to represent the set of descriptors. How
+ * many uint32_t's do we need to span all descriptors?
+ */
+
+#if __SELECT_NDESCRIPTORS <= 32
+# define __SELECT_NUINT32 1
+#elif __SELECT_NDESCRIPTORS <= 64
+# define __SELECT_NUINT32 2
+#elif __SELECT_NDESCRIPTORS <= 96
+# define __SELECT_NUINT32 3
+#elif __SELECT_NDESCRIPTORS <= 128
+# define __SELECT_NUINT32 4
+#elif __SELECT_NDESCRIPTORS <= 160
+# define __SELECT_NUINT32 5
+#elif __SELECT_NDESCRIPTORS <= 192
+# define __SELECT_NUINT32 6
+#elif __SELECT_NDESCRIPTORS <= 224
+# define __SELECT_NUINT32 7
+#elif __SELECT_NDESCRIPTORS <= 256
+# define __SELECT_NUINT32 8
+#else
+# warning "Large fd_set needed"
+#endif
+
+/* These macros map a file descripto to an index and bit number */
+
+#define _FD_NDX(fd) ((fd) >> 5)
+#define _FD_BIT(fd) ((fd) & 0x1f)
+
+/* Standard helper macros */
+
+#define FD_CLR(fd,set) (((uint32_t*)(set))[_FD_NDX(fd)] &= ~(1 << _FD_BIT(fd)))
+#define FD_SET(fd,set) (((uint32_t*)(set))[_FD_NDX(fd)] |= (1 << _FD_BIT(fd)))
+#define FD_ISSET(fd,set) ((((uint32_t*)(set))[_FD_NDX(fd)] & (1 << _FD_BIT(fd))) != 0)
+#define FD_ZERO(set) memset(set, 0, sizeof(fd_set))
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+typedef uint32_t fd_set[__SELECT_NUINT32];
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN int select(int nfds, FAR fd_set *readfds, FAR fd_set *writefds,
+ FAR fd_set *exceptfds, FAR struct timeval *timeout);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* CONFIG_NFILE_DESCRIPTORS || CONFIG_NSOCKET_DESCRIPTORS */
+#endif /* __INCLUDE_SYS_SELECT_H */
diff --git a/nuttx/include/sys/sendfile.h b/nuttx/include/sys/sendfile.h
new file mode 100644
index 000000000..0f3c05444
--- /dev/null
+++ b/nuttx/include/sys/sendfile.h
@@ -0,0 +1,123 @@
+/****************************************************************************
+ * include/sys/sendfile.h
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_SENDFILE_H
+#define __INCLUDE_SYS_SENDFILE_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+/* Configuration ************************************************************/
+
+#ifndef CONFIG_LIB_SENDFILE_BUFSIZE
+# define CONFIG_LIB_SENDFILE_BUFSIZE 512
+#endif
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/************************************************************************
+ * Name: sendfile
+ *
+ * Description:
+ * sendfile() copies data between one file descriptor and another.
+ * sendfile() basically just wraps a sequence of reads() and writes()
+ * to perform a copy. It serves a purpose in systems where there is
+ * a penalty for copies to between user and kernal space, but really
+ * nothing in NuttX but provide some Linux compatible (and adding
+ * another 'almost standard' interface).
+ *
+ * NOTE: This interface is *not* specified in POSIX.1-2001, or other
+ * standards. The implementation here is very similar to the Linux
+ * sendfile interface. Other UNIX systems implement sendfile() with
+ * different semantics and prototypes. sendfile() should not be used
+ * in portable programs.
+ *
+ * Input Parmeters:
+ * infd - A file (or socket) descriptor opened for reading
+ * outfd - A descriptor opened for writing.
+ * offset - If 'offset' is not NULL, then it points to a variable
+ * holding the file offset from which sendfile() will start
+ * reading data from 'infd'. When sendfile() returns, this
+ * variable will be set to the offset of the byte following
+ * the last byte that was read. If 'offset' is not NULL,
+ * then sendfile() does not modify the current file offset of
+ * 'infd'; otherwise the current file offset is adjusted to
+ * reflect the number of bytes read from 'infd.'
+ *
+ * If 'offset' is NULL, then data will be read from 'infd'
+ * starting at the current file offset, and the file offset
+ * will be updated by the call.
+ * count - The number of bytes to copy between the file descriptors.
+ *
+ * Returned Value:
+ * If the transfer was successful, the number of bytes written to outfd is
+ * returned. On error, -1 is returned, and errno is set appropriately.
+ * There error values are those returned by read() or write() plus:
+ *
+ * EINVAL - Bad input parameters.
+ * ENOMEM - Could not allocated an I/O buffer
+ *
+ ************************************************************************/
+
+EXTERN ssize_t sendfile (int outfd, int infd, FAR off_t *offset, size_t count);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_SENDFILE_H */
diff --git a/nuttx/include/sys/socket.h b/nuttx/include/sys/socket.h
new file mode 100644
index 000000000..89ade941f
--- /dev/null
+++ b/nuttx/include/sys/socket.h
@@ -0,0 +1,234 @@
+/****************************************************************************
+ * include/sys/socket.h
+ *
+ * Copyright (C) 2007, 2009, 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_SOCKET_H
+#define __INCLUDE_SYS_SOCKET_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/types.h>
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+
+/* The socket()domain parameter specifies a communication domain; this selects
+ * the protocol family which will be used for communication.
+ */
+
+/* Protocol families */
+
+#define PF_UNSPEC 0 /* Protocol family unspecified */
+#define PF_UNIX 1 /* Local communication */
+#define PF_LOCAL 1 /* Local communication */
+#define PF_INET 2 /* IPv4 Internet protocols */
+#define PF_INET6 3 /* IPv6 Internet protocols */
+#define PF_IPX 4 /* IPX - Novell protocols */
+#define PF_NETLINK 5 /* Kernel user interface device */
+#define PF_X25 6 /* ITU-T X.25 / ISO-8208 protocol */
+#define PF_AX25 7 /* Amateur radio AX.25 protocol */
+#define PF_ATMPVC 8 /* Access to raw ATM PVCs */
+#define PF_APPLETALK 9 /* Appletalk */
+#define PF_PACKET 10 /* Low level packet interface */
+
+/* Address families */
+
+#define AF_UNSPEC PF_UNSPEC
+#define AF_UNIX PF_UNIX
+#define AF_LOCAL PF_LOCAL
+#define AF_INET PF_INET
+#define AF_INET6 PF_INET6
+#define AF_IPX PF_IPX
+#define AF_NETLINK PF_NETLINK
+#define AF_X25 PF_X25
+#define AF_AX25 PF_AX25
+#define AF_ATMPVC PF_ATMPVC
+#define AF_APPLETALK PF_APPLETALK
+#define AF_PACKET PF_PACKET
+
+/* The socket created by socket() has the indicated type, which specifies
+ * the communication semantics.
+ */
+
+#define SOCK_STREAM 0 /* Provides sequenced, reliable, two-way, connection-based byte streams.
+ * An out-of-band data transmission mechanism may be supported. */
+#define SOCK_DGRAM 1 /* Supports datagrams (connectionless, unreliable messages of a fixed
+ * maximum length). */
+#define SOCK_SEQPACKET 2 /* Provides a sequenced, reliable, two-way connection-based data
+ * transmission path for datagrams of fixed maximum length; a consumer
+ * is required to read an entire packet with each read system call. */
+#define SOCK_RAW 3 /* Provides raw network protocol access. */
+#define SOCK_RDM 4 /* Provides a reliable datagram layer that does not guarantee ordering. */
+#define SOCK_PACKET 5 /* Obsolete and should not be used in new programs */
+
+/* Bits in the FLAGS argument to `send', `recv', et al. These are the bits
+ * recognized by Linus, not all are supported by NuttX.
+ */
+
+#define MSG_OOB 0x0001 /* Process out-of-band data. */
+#define MSG_PEEK 0x0002 /* Peek at incoming messages. */
+#define MSG_DONTROUTE 0x0004 /* Don't use local routing. */
+#define MSG_CTRUNC 0x0008 /* Control data lost before delivery. */
+#define MSG_PROXY 0x0010 /* Supply or ask second address. */
+#define MSG_TRUNC 0x0020
+#define MSG_DONTWAIT 0x0040 /* Enable nonblocking IO. */
+#define MSG_EOR 0x0080 /* End of record. */
+#define MSG_WAITALL 0x0100 /* Wait for a full request. */
+#define MSG_FIN 0x0200
+#define MSG_SYN 0x0400
+#define MSG_CONFIRM 0x0800 /* Confirm path validity. */
+#define MSG_RST 0x1000
+#define MSG_ERRQUEUE 0x2000 /* Fetch message from error queue. */
+#define MSG_NOSIGNAL 0x4000 /* Do not generate SIGPIPE. */
+#define MSG_MORE 0x8000 /* Sender will send more. */
+
+/* Socket options */
+
+#define SO_DEBUG 0 /* Enables recording of debugging information (get/set).
+ * arg: pointer to integer containing a boolean value */
+#define SO_ACCEPTCONN 1 /* Reports whether socket listening is enabled (get only).
+ * arg: pointer to integer containing a boolean value */
+#define SO_BROADCAST 2 /* Permits sending of broadcast messages (get/set).
+ * arg: pointer to integer containing a boolean value */
+#define SO_REUSEADDR 3 /* Allow reuse of local addresses (get/set)
+ * arg: pointer to integer containing a boolean value */
+#define SO_KEEPALIVE 4 /* Keeps connections active by enabling the periodic transmission
+ * of messages (get/set).
+ * arg: pointer to integer containing a boolean value */
+#define SO_LINGER 5 /* Lingers on a close() if data is present (get/set)
+ * arg: struct linger */
+#define SO_OOBINLINE 6 /* Leaves received out-of-band data (data marked urgent) inline
+ * (get/set) arg: pointer to integer containing a boolean value */
+#define SO_SNDBUF 7 /* Sets send buffer size. arg: integer value (get/set). */
+#define SO_RCVBUF 8 /* Sets receive buffer size. arg: integer value (get/set). */
+#define SO_ERROR 9 /* Reports and clears error status (get only). arg: returns
+ * an integer value */
+#define SO_TYPE 10 /* Reports the socket type (get only). return: int */
+#define SO_DONTROUTE 11 /* Requests that outgoing messages bypass standard routing (get/set)
+ * arg: pointer to integer containing a boolean value */
+#define SO_RCVLOWAT 12 /* Sets the minimum number of bytes to process for socket input
+ * (get/set). arg: integer value */
+#define SO_RCVTIMEO 13 /* Sets the timeout value that specifies the maximum amount of time
+ * an input function waits until it completes (get/set).
+ * arg: struct timeval */
+#define SO_SNDLOWAT 14 /* Sets the minimum number of bytes to process for socket output
+ * (get/set). arg: integer value */
+#define SO_SNDTIMEO 15 /* Sets the timeout value specifying the amount of time that an
+ * output function blocks because flow control prevents data from
+ * being sent(get/set). arg: struct timeval */
+
+/* Protocol levels supported by get/setsockopt(): */
+
+#define SOL_SOCKET 0 /* Only socket-level options supported */
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+ /* sockaddr_storage structure. This structure must be (1) large enough to
+ * accommodate all supported protocol-specific address structures, and (2)
+ * aligned at an appropriate boundary so that pointers to it can be cast
+ * as pointers to protocol-specific address structures and used to access
+ * the fields of those structures without alignment problems
+ */
+
+#ifdef CONFIG_NET_IPv6
+struct sockaddr_storage
+{
+ sa_family_t ss_family; /* Address family */
+ char ss_data[18]; /* 18-bytes of address data */
+};
+#else
+struct sockaddr_storage
+{
+ sa_family_t ss_family; /* Address family */
+ char ss_data[14]; /* 14-bytes of address data */
+};
+#endif
+
+/* The sockaddr structure is used to define a socket address which is used
+ * in the bind(), connect(), getpeername(), getsockname(), recvfrom(), and
+ * sendto() functions.
+ */
+
+struct sockaddr
+{
+ sa_family_t sa_family; /* Address family: See AF_* definitions */
+ char sa_data[14]; /* 14-bytes of address data */
+};
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN int socket(int domain, int type, int protocol);
+EXTERN int bind(int sockfd, FAR const struct sockaddr *addr, socklen_t addrlen);
+EXTERN int connect(int sockfd, FAR const struct sockaddr *addr, socklen_t addrlen);
+
+EXTERN int listen(int sockfd, int backlog);
+EXTERN int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
+
+EXTERN ssize_t send(int sockfd, FAR const void *buf, size_t len, int flags);
+EXTERN ssize_t sendto(int sockfd, FAR const void *buf, size_t len, int flags,
+ FAR const struct sockaddr *to, socklen_t tolen);
+
+EXTERN ssize_t recv(int sockfd, FAR void *buf, size_t len, int flags);
+EXTERN ssize_t recvfrom(int sockfd, FAR void *buf, size_t len, int flags,
+ FAR struct sockaddr *from, FAR socklen_t *fromlen);
+
+EXTERN int setsockopt(int sockfd, int level, int option,
+ FAR const void *value, socklen_t value_len);
+EXTERN int getsockopt(int sockfd, int level, int option,
+ FAR void *value, FAR socklen_t *value_len);
+
+EXTERN int getsockname(int sockfd, FAR struct sockaddr *addr,
+ FAR socklen_t *addrlen);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_SOCKET_H */
diff --git a/nuttx/include/sys/sockio.h b/nuttx/include/sys/sockio.h
new file mode 100644
index 000000000..abfc2f562
--- /dev/null
+++ b/nuttx/include/sys/sockio.h
@@ -0,0 +1,120 @@
+/****************************************************************************
+ * include/sys/sockio.h
+ *
+ * Copyright (C) 2010, 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_SOCKIO_H
+#define __INCLUDE_SYS_SOCKIO_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/* Get NuttX configuration and NuttX-specific network IOCTL definitions */
+
+#include <nuttx/config.h>
+#include <nuttx/fs/ioctl.h>
+#include <nuttx/net/ioctl.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+#define IMSFNAMSIZ 8
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+ /* RFC3678: IPv4 Options
+ *
+ * o ioctl() SIOCGIPMSFILTER: to retrieve the list of source addresses
+ * that comprise the source filter along with the current filter mode.
+ *
+ * o ioctl() SIOCSIPMSFILTER: to set or modify the source filter content
+ * (e.g., unicast source address list) or mode (exclude or include).
+ *
+ * Ioctl option Argument type
+ * ----------------------------- ----------------------
+ * SIOCGIPMSFILTER struct ip_msfilter
+ * SIOCSIPMSFILTER struct ip_msfilter
+ *
+ * The imsf_fmode mode is a 32-bit integer that identifies the filter
+ * mode. The value of this field must be either MCAST_INCLUDE or
+ * MCAST_EXCLUDE, which are likewise defined in <netinet/in.h>.
+ */
+
+#if 0 /* REVISIT: Current NuttX implementation is non-standard.
+ * Lookup is by device name, not IP address.
+ */
+
+struct ip_msfilter
+{
+ struct in_addr imsf_multiaddr; /* IP multicast address of group */
+ struct in_addr imsf_interface; /* Local IP address of interface */
+ uint32_t imsf_fmode; /* Filter mode */
+#ifdef CONFIG_NET_IGMPv3
+ uint32_t imsf_numsrc; /* number of sources in src_list */
+ struct in_addr imsf_slist[1]; /* start of source list */
+#endif
+};
+
+#else
+
+struct ip_msfilter
+{
+ char imsf_name[IMSFNAMSIZ]; /* Network device name, e.g., "eth0" */
+ struct in_addr imsf_multiaddr; /* IP multicast address of group */
+ uint32_t imsf_fmode; /* Filter mode */
+};
+
+#endif
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_SOCKIO_H */
diff --git a/nuttx/include/sys/stat.h b/nuttx/include/sys/stat.h
new file mode 100644
index 000000000..1204b15aa
--- /dev/null
+++ b/nuttx/include/sys/stat.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+ * include/sys/stat.h
+ *
+ * Copyright (C) 2007-2009, 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_STAT_H
+#define __INCLUDE_SYS_STAT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/types.h>
+#include <time.h>
+
+/****************************************************************************
+ * Definitions
+ ****************************************************************************/
+
+/* mode_t bit settings (most of these do not apply to Nuttx). This assumes
+ * that the full size of a mode_t is 16-bits. (However, mode_t must be size
+ * 'int' because it is promoted to size int when passed in varargs).
+ */
+
+#define S_IXOTH 0000001 /* Permissions for others: RWX */
+#define S_IWOTH 0000002
+#define S_IROTH 0000004
+#define S_IRWXO 0000007
+
+#define S_IXGRP 0000010 /* Group permissions: RWX */
+#define S_IWGRP 0000020
+#define S_IRGRP 0000040
+#define S_IRWXG 0000070
+
+#define S_IXUSR 0000100 /* Owner permissions: RWX */
+#define S_IWUSR 0000200
+#define S_IRUSR 0000400
+#define S_IRWXU 0000700
+
+#define S_ISVTX 0001000 /* "sticky" bit */
+#define S_ISGID 0002000 /* Set group ID bit */
+#define S_ISUID 0004000 /* Set UID bit */
+
+#define S_IFIFO 0010000 /* File type bites */
+#define S_IFCHR 0020000
+#define S_IFDIR 0040000
+#define S_IFBLK 0060000
+#define S_IFREG 0100000
+#define S_IFLNK 0120000
+#define S_IFSOCK 0140000
+#define S_IFMT 0170000
+
+/* File type macros that operate on an instance of mode_t */
+
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+/* This is the simplified struct stat as returned by fstat(). This structure
+ * provides information about a specific file or directory in the file system.
+ */
+
+struct stat
+{
+ mode_t st_mode; /* File type, atributes, and access mode bits */
+ off_t st_size; /* Size of file/directory, in bytes */
+ blksize_t st_blksize; /* Blocksize used for filesystem I/O */
+ blkcnt_t st_blocks; /* Number of blocks allocated */
+ time_t st_atime; /* Time of last access */
+ time_t st_mtime; /* Time of last modification */
+ time_t st_ctime; /* Time of last status change */
+};
+
+/****************************************************************************
+ * Global Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN int mkdir(FAR const char *pathname, mode_t mode);
+EXTERN int mkfifo(FAR const char *pathname, mode_t mode);
+EXTERN int stat(const char *path, FAR struct stat *buf);
+EXTERN int fstat(int fd, FAR struct stat *buf);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_STAT_H */
diff --git a/nuttx/include/sys/statfs.h b/nuttx/include/sys/statfs.h
new file mode 100644
index 000000000..70e963dd9
--- /dev/null
+++ b/nuttx/include/sys/statfs.h
@@ -0,0 +1,145 @@
+/****************************************************************************
+ * include/sys/statfs.h
+ *
+ * Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_STATFS_H
+#define __INCLUDE_SYS_STATFS_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <stdint.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* struct statfs file system types. */
+
+#define ADFS_SUPER_MAGIC 0xadf5
+#define AFFS_SUPER_MAGIC 0xadff
+#define BEFS_SUPER_MAGIC 0x42465331
+#define BFS_MAGIC 0x1badface
+#define CIFS_MAGIC_NUMBER 0xff534d42
+#define CODA_SUPER_MAGIC 0x73757245
+#define COH_SUPER_MAGIC 0x012ff7b7
+#define CRAMFS_MAGIC 0x28cd3d45
+#define DEVFS_SUPER_MAGIC 0x1373
+#define EFS_SUPER_MAGIC 0x00414a53
+#define EXT_SUPER_MAGIC 0x137d
+#define EXT2_OLD_SUPER_MAGIC 0xef51
+#define EXT2_SUPER_MAGIC 0xef53
+#define EXT3_SUPER_MAGIC 0xef53
+#define HFS_SUPER_MAGIC 0x4244
+#define HPFS_SUPER_MAGIC 0xf995e849
+#define HUGETLBFS_MAGIC 0x958458f6
+#define ISOFS_SUPER_MAGIC 0x9660
+#define JFFS2_SUPER_MAGIC 0x72b6
+#define JFS_SUPER_MAGIC 0x3153464a
+#define MINIX_SUPER_MAGIC 0x137f /* orig. minix */
+#define MINIX_SUPER_MAGIC2 0x138f /* 30 char minix */
+#define MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
+#define MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, 30 char names */
+#define MSDOS_SUPER_MAGIC 0x4d44
+#define NCP_SUPER_MAGIC 0x564c
+#define NFS_SUPER_MAGIC 0x6969
+#define NTFS_SB_MAGIC 0x5346544e
+#define OPENPROM_SUPER_MAGIC 0x9fa1
+#define PROC_SUPER_MAGIC 0x9fa0
+#define QNX4_SUPER_MAGIC 0x002f
+#define REISERFS_SUPER_MAGIC 0x52654973
+#define ROMFS_MAGIC 0x7275
+#define SMB_SUPER_MAGIC 0x517B
+#define SYSV2_SUPER_MAGIC 0x012ff7b6
+#define SYSV4_SUPER_MAGIC 0x012FF7B5
+#define TMPFS_MAGIC 0x01021994
+#define UDF_SUPER_MAGIC 0x15013346
+#define UFS_MAGIC 0x00011954
+#define USBDEVICE_SUPER_MAGIC 0x9fa2
+#define VXFS_SUPER_MAGIC 0xa501fcf5
+#define XENIX_SUPER_MAGIC 0x012ff7b4
+#define XFS_SUPER_MAGIC 0x58465342
+#define _XIAFS_SUPER_MAGIC 0x012fd16d
+
+/* NuttX specific file-systems */
+
+#define BINFS_MAGIC 0x4242
+#define NXFFS_MAGIC 0x4747
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+
+struct statfs
+{
+ uint32_t f_type; /* Type of filesystem (see definitions above) */
+ size_t f_namelen; /* Maximum length of filenames */
+ size_t f_bsize; /* Optimal block size for transfers */
+ off_t f_blocks; /* Total data blocks in the file system of this size */
+ off_t f_bfree; /* Free blocks in the file system */
+ off_t f_bavail; /* Free blocks avail to non-superuser */
+ off_t f_files; /* Total file nodes in the file system */
+ off_t f_ffree; /* Free file nodes in the file system */
+};
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/* Inspired by Linux statfs() which was, in turn, inspired by
+ * the BSD statfs(). None of these implementations agree in the
+ * form of the struct statfs.
+ */
+
+EXTERN int statfs(const char *path, struct statfs *buf);
+EXTERN int fstatfs(int fd, struct statfs *buf);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_STATFS_H */
diff --git a/nuttx/include/sys/syscall.h b/nuttx/include/sys/syscall.h
new file mode 100644
index 000000000..57545beb7
--- /dev/null
+++ b/nuttx/include/sys/syscall.h
@@ -0,0 +1,398 @@
+/****************************************************************************
+ * include/sys/syscall.h
+ * This file contains the system call numbers.
+ *
+ * Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_SYSCALL_H
+#define __INCLUDE_SYS_SYSCALL_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#ifndef __ASSEMBLY__
+# include <stdint.h>
+#endif
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Reserve the first system calls for platform-specific usage if so
+ * configured.
+ */
+
+#ifndef CONFIG_SYS_RESERVED
+# define CONFIG_SYS_RESERVED (0)
+#endif
+
+/* System call numbers
+ *
+ * These first system calls are supported regardless of the NuttX
+ * configuration
+ */
+
+#define SYS__exit (CONFIG_SYS_RESERVED+0)
+#define SYS_exit (CONFIG_SYS_RESERVED+1)
+#define SYS_get_errno (CONFIG_SYS_RESERVED+2)
+#define SYS_getpid (CONFIG_SYS_RESERVED+3)
+#define SYS_sched_getparam (CONFIG_SYS_RESERVED+4)
+#define SYS_sched_getscheduler (CONFIG_SYS_RESERVED+5)
+#define SYS_sched_lock (CONFIG_SYS_RESERVED+6)
+#define SYS_sched_lockcount (CONFIG_SYS_RESERVED+7)
+#define SYS_sched_rr_get_interval (CONFIG_SYS_RESERVED+8)
+#define SYS_sched_setparam (CONFIG_SYS_RESERVED+9)
+#define SYS_sched_setscheduler (CONFIG_SYS_RESERVED+10)
+#define SYS_sched_unlock (CONFIG_SYS_RESERVED+11)
+#define SYS_sched_yield (CONFIG_SYS_RESERVED+12)
+#define SYS_sem_close (CONFIG_SYS_RESERVED+13)
+#define SYS_sem_destroy (CONFIG_SYS_RESERVED+14)
+#define SYS_sem_open (CONFIG_SYS_RESERVED+15)
+#define SYS_sem_post (CONFIG_SYS_RESERVED+16)
+#define SYS_sem_trywait (CONFIG_SYS_RESERVED+17)
+#define SYS_sem_unlink (CONFIG_SYS_RESERVED+18)
+#define SYS_sem_wait (CONFIG_SYS_RESERVED+19)
+#define SYS_set_errno (CONFIG_SYS_RESERVED+20)
+#define SYS_task_create (CONFIG_SYS_RESERVED+21)
+#define SYS_task_delete (CONFIG_SYS_RESERVED+22)
+#define SYS_task_restart (CONFIG_SYS_RESERVED+23)
+#define SYS_up_assert (CONFIG_SYS_RESERVED+24)
+#define SYS_up_assert_code (CONFIG_SYS_RESERVED+25)
+#define __SYS_atexit (CONFIG_SYS_RESERVED+26)
+
+/* The following can be individually enabled */
+
+#ifdef CONFIG_SCHED_ATEXIT
+# define SYS_atexit __SYS_atexit
+# define __SYS_onexit (__SYS_atexit+1)
+#else
+# define __SYS_onexit __SYS_atexit
+#endif
+
+#ifdef CONFIG_SCHED_ONEXIT
+# define SYS_onexit __SYS_onexit
+# define __SYS_waitpaid (__SYS_onexit+1)
+#else
+# define __SYS_waitpaid __SYS_onexit
+#endif
+
+#ifdef CONFIG_SCHED_WAITPID
+# define SYS_waitpid __SYS_waitpaid
+# define __SYS_signals (__SYS_waitpaid+1)
+#else
+# define __SYS_signals __SYS_waitpaid
+#endif
+
+/* The following are only defined is signals are supported in the NuttX
+ * configuration.
+ */
+
+#ifndef CONFIG_DISABLE_SIGNALS
+# define SYS_kill (__SYS_signals+0)
+# define SYS_sigaction (__SYS_signals+1)
+# define SYS_sigpending (__SYS_signals+2)
+# define SYS_sigprocmask (__SYS_signals+3)
+# define SYS_sigqueue (__SYS_signals+4)
+# define SYS_sigsuspend (__SYS_signals+5)
+# define SYS_sigtimedwait (__SYS_signals+6)
+# define SYS_sigwaitinfo (__SYS_signals+7)
+# define SYS_sleep (__SYS_signals+8)
+# define SYS_usleep (__SYS_signals+9)
+# define __SYS_clock (__SYS_signals+10)
+#else
+# define __SYS_clock __SYS_signals
+#endif
+
+/* The following are only defined if the system clock is enabled in the
+ * NuttX configuration.
+ */
+
+#ifndef CONFIG_DISABLE_CLOCK
+# define SYS_clock_systimer (__SYS_clock+0)
+# define SYS_clock_getres (__SYS_clock+1)
+# define SYS_clock_gettime (__SYS_clock+2)
+# define SYS_clock_settime (__SYS_clock+3)
+# define SYS_gettimeofday (__SYS_clock+4)
+# define __SYS_timers (__SYS_clock+5)
+#else
+# define __SYS_timers __SYS_clock
+#endif
+
+/* The following are defined only if POSIX timers are supported */
+
+#ifndef CONFIG_DISABLE_POSIX_TIMERS
+# define SYS_timer_create (__SYS_timers+0)
+# define SYS_timer_delete (__SYS_timers+1)
+# define SYS_timer_getoverrun (__SYS_timers+2)
+# define SYS_timer_gettime (__SYS_timers+3)
+# define SYS_timer_settime (__SYS_timers+4)
+# define __SYS_descriptors (__SYS_timers+5)
+#else
+# define __SYS_descriptors __SYS_timers
+#endif
+
+/* The following are defined if either file or socket descriptor are
+ * enabled.
+ */
+
+#ifndef CONFIG_NET
+# undef CONFIG_NSOCKET_DESCRIPTORS
+# define CONFIG_NSOCKET_DESCRIPTORS 0
+#endif
+
+#if CONFIG_NFILE_DESCRIPTORS > 0 || CONFIG_NSOCKET_DESCRIPTORS > 0
+# define SYS_close (__SYS_descriptors+0)
+# define SYS_ioctl (__SYS_descriptors+1)
+# define SYS_read (__SYS_descriptors+2)
+# define SYS_write (__SYS_descriptors+3)
+# ifndef CONFIG_DISABLE_POLL
+# define SYS_poll (__SYS_descriptors+4)
+# define SYS_select (__SYS_descriptors+5)
+# define __SYS_filedesc (__SYS_descriptors+6)
+# else
+# define __SYS_filedesc (__SYS_descriptors+4)
+# endif
+#else
+# define __SYS_filedesc __SYS_descriptors
+#endif
+
+/* The following are defined if file descriptors are enabled */
+
+#if CONFIG_NFILE_DESCRIPTORS > 0
+# define SYS_closedir (__SYS_filedesc+0)
+# define SYS_dup (__SYS_filedesc+1)
+# define SYS_dup2 (__SYS_filedesc+2)
+# define SYS_fcntl (__SYS_filedesc+3)
+# define SYS_lseek (__SYS_filedesc+4)
+# define SYS_mkfifo (__SYS_filedesc+5)
+# define SYS_mmap (__SYS_filedesc+6)
+# define SYS_open (__SYS_filedesc+7)
+# define SYS_opendir (__SYS_filedesc+8)
+# define SYS_pipe (__SYS_filedesc+9)
+# define SYS_readdir (__SYS_filedesc+10)
+# define SYS_rewinddir (__SYS_filedesc+11)
+# define SYS_seekdir (__SYS_filedesc+12)
+# define SYS_stat (__SYS_filedesc+13)
+# define SYS_statfs (__SYS_filedesc+14)
+# define SYS_telldir (__SYS_filedesc+15)
+
+# if CONFIG_NFILE_STREAMS > 0
+# define SYS_fs_fdopen (__SYS_filedesc+16)
+# define SYS_sched_getstreams (__SYS_filedesc+17)
+# define __SYS_mountpoint (__SYS_filedesc+18)
+# else
+# define __SYS_mountpoint (__SYS_filedesc+16)
+# endif
+
+# if !defined(CONFIG_DISABLE_MOUNTPOINT)
+# define SYS_fsync (__SYS_mountpoint+0)
+# define SYS_mkdir (__SYS_mountpoint+1)
+# define SYS_mount (__SYS_mountpoint+2)
+# define SYS_rename (__SYS_mountpoint+3)
+# define SYS_rmdir (__SYS_mountpoint+4)
+# define SYS_umount (__SYS_mountpoint+5)
+# define SYS_unlink (__SYS_mountpoint+6)
+# define __SYS_pthread (__SYS_mountpoint+7)
+# else
+# define __SYS_pthread __SYS_mountpoint
+# endif
+
+#else
+# define __SYS_pthread __SYS_filedesc
+#endif
+
+/* The following are defined if pthreads are enabled */
+
+#ifndef CONFIG_DISABLE_PTHREAD
+# define SYS_pthread_barrier_destroy (__SYS_pthread+0)
+# define SYS_pthread_barrier_init (__SYS_pthread+1)
+# define SYS_pthread_barrier_wait (__SYS_pthread+2)
+# define SYS_pthread_cancel (__SYS_pthread+3)
+# define SYS_pthread_cond_broadcast (__SYS_pthread+4)
+# define SYS_pthread_cond_destroy (__SYS_pthread+5)
+# define SYS_pthread_cond_init (__SYS_pthread+6)
+# define SYS_pthread_cond_signal (__SYS_pthread+7)
+# define SYS_pthread_cond_wait (__SYS_pthread+8)
+# define SYS_pthread_create (__SYS_pthread+9)
+# define SYS_pthread_detach (__SYS_pthread+10)
+# define SYS_pthread_exit (__SYS_pthread+11)
+# define SYS_pthread_getschedparam (__SYS_pthread+12)
+# define SYS_pthread_getspecific (__SYS_pthread+13)
+# define SYS_pthread_join (__SYS_pthread+14)
+# define SYS_pthread_key_create (__SYS_pthread+15)
+# define SYS_pthread_key_delete (__SYS_pthread+16)
+# define SYS_pthread_mutex_destroy (__SYS_pthread+17)
+# define SYS_pthread_mutex_init (__SYS_pthread+18)
+# define SYS_pthread_mutex_lock (__SYS_pthread+19)
+# define SYS_pthread_mutex_trylock (__SYS_pthread+20)
+# define SYS_pthread_mutex_unlock (__SYS_pthread+21)
+# define SYS_pthread_once (__SYS_pthread+22)
+# define SYS_pthread_setcancelstate (__SYS_pthread+23)
+# define SYS_pthread_setschedparam (__SYS_pthread+24)
+# define SYS_pthread_setschedprio (__SYS_pthread+25)
+# define SYS_pthread_setspecific (__SYS_pthread+26)
+# define SYS_pthread_yield (__SYS_pthread+27)
+
+# ifndef CONFIG_DISABLE_SIGNAL
+# define SYS_pthread_cond_timedwait (__SYS_pthread+28)
+# define SYS_pthread_kill (__SYS_pthread+29)
+# define SYS_pthread_sigmask (__SYS_pthread+30)
+# define __SYS_mqueue (__SYS_pthread+31)
+# else
+# define __SYS_mqueue (__SYS_pthread+28)
+# endif
+
+#else
+# define __SYS_mqueue __SYS_pthread
+#endif
+
+/* The following are defined only if message queues are enabled */
+
+#ifndef CONFIG_DISABLE_MQUEUE
+# define SYS_mq_close (__SYS_mqueue+0)
+# define SYS_mq_notify (__SYS_mqueue+1)
+# define SYS_mq_open (__SYS_mqueue+2)
+# define SYS_mq_receive (__SYS_mqueue+3)
+# define SYS_mq_send (__SYS_mqueue+4)
+# define SYS_mq_timedreceive (__SYS_mqueue+5)
+# define SYS_mq_timedsend (__SYS_mqueue+6)
+# define SYS_mq_unlink (__SYS_mqueue+7)
+# define __SYS_environ (__SYS_mqueue+8)
+#else
+# define __SYS_environ __SYS_mqueue
+#endif
+
+/* The following are defined only if environment variables are supported */
+
+#ifndef CONFIG_DISABLE_ENVIRON
+# define SYS_clearenv (__SYS_environ+0)
+# define SYS_getenv (__SYS_environ+1)
+# define SYS_putenv (__SYS_environ+2)
+# define SYS_setenv (__SYS_environ+3)
+# define SYS_unsetenv (__SYS_environ+4)
+# define __SYS_network (__SYS_environ+5)
+#else
+# define __SYS_network __SYS_environ
+#endif
+
+/* The following are defined only if networking AND sockets are supported */
+
+#if CONFIG_NSOCKET_DESCRIPTORS > 0 && defined(CONFIG_NET)
+# define SYS_accept (__SYS_network+0)
+# define SYS_bind (__SYS_network+1)
+# define SYS_connect (__SYS_network+2)
+# define SYS_getsockopt (__SYS_network+3)
+# define SYS_listen (__SYS_network+4)
+# define SYS_recv (__SYS_network+5)
+# define SYS_recvfrom (__SYS_network+6)
+# define SYS_send (__SYS_network+7)
+# define SYS_sendto (__SYS_network+8)
+# define SYS_setsockopt (__SYS_network+9)
+# define SYS_socket (__SYS_network+10)
+# define SYS_nnetsocket (__SYS_network+11)
+#else
+# define SYS_nnetsocket __SYS_network
+#endif
+
+/* The following is defined only if CONFIG_TASK_NAME_SIZE > 0 */
+
+#if CONFIG_TASK_NAME_SIZE > 0
+# define SYS_prctl (SYS_nnetsocket+0)
+# define SYS_maxsyscall (SYS_nnetsocket+1)
+#else
+# define SYS_maxsyscall SYS_nnetsocket
+#endif
+
+/* Note that the reported number of system calls does *NOT* include the
+ * architecture-specific system calls. If the "real" total is required,
+ * use SYS_maxsyscall.
+ */
+
+#define SYS_nsyscalls (SYS_maxsyscall-CONFIG_SYS_RESERVED)
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/* This is the union of all possible stub function types */
+
+union syscall_stubfunc_u
+{
+ uintptr_t (*stub0)(void);
+ uintptr_t (*stub1)(uintptr_t parm1);
+ uintptr_t (*stub2)(uintptr_t parm1, uintptr_t parm2);
+ uintptr_t (*stub3)(uintptr_t parm1, uintptr_t parm2, uintptr_t parm3);
+ uintptr_t (*stub4)(uintptr_t parm1, uintptr_t parm2, uintptr_t parm3,
+ uintptr_t parm4);
+ uintptr_t (*stub5)(uintptr_t parm1, uintptr_t parm2, uintptr_t parm3,
+ uintptr_t parm4, uintptr_t parm5);
+ uintptr_t (*stub6)(uintptr_t parm1, uintptr_t parm2, uintptr_t parm3,
+ uintptr_t parm4, uintptr_t parm5, uintptr_t parm6);
+};
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/* Stub lookup tables. Each table is indexed by the system call numbers
+ * defined above. Given the system call number, the corresponding entry in
+ * these tables describes how to call the stub dispatch function.
+ */
+
+EXTERN const union syscall_stubfunc_u g_stublookup[SYS_nsyscalls];
+EXTERN const uint8_t g_stubnparms[SYS_nsyscalls];
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __INCLUDE_SYS_SYSCALL_H */
+
diff --git a/nuttx/include/sys/time.h b/nuttx/include/sys/time.h
new file mode 100644
index 000000000..75dfd7280
--- /dev/null
+++ b/nuttx/include/sys/time.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ * include/sys/time.h
+ *
+ * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_TIME_H
+#define __INCLUDE_SYS_TIME_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <time.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN int gettimeofday(struct timeval *tp, FAR void *tzp);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __INCLUDE_SYS_TIME_H */
diff --git a/nuttx/include/sys/types.h b/nuttx/include/sys/types.h
new file mode 100644
index 000000000..2ae69d4a7
--- /dev/null
+++ b/nuttx/include/sys/types.h
@@ -0,0 +1,232 @@
+/****************************************************************************
+ * include/sys/types.h
+ *
+ * Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_TYPES_H
+#define __INCLUDE_SYS_TYPES_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/compiler.h>
+
+#ifndef __ASSEMBLY__
+# include <stdint.h>
+#endif
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Alternative values for type bool (for historic reasons) */
+
+#ifndef TRUE
+# define TRUE 1
+#endif
+#ifndef FALSE
+# define FALSE 0
+#endif
+
+/* NULL is usually defined in stddef.h (which includes this file) */
+
+#ifndef NULL
+ /* SDCC is sensitive to NULL pointer type conversions, and C++ defines
+ * NULL as zero
+ */
+
+# if defined(SDCC) || defined(__cplusplus)
+# define NULL (0)
+# else
+# define NULL ((void*)0)
+# endif
+#endif
+
+/* POSIX-like OS return values: */
+
+#if !defined(__cplusplus)
+# undef ERROR
+# define ERROR -1
+#endif
+
+#undef OK
+#define OK 0
+
+/* HPUX-like MIN/MAX value */
+
+#define PRIOR_RR_MIN 0
+#define PRIOR_RR_MAX 255
+#define PRIOR_FIFO_MIN 0
+#define PRIOR_FIFO_MAX 255
+#define PRIOR_OTHER_MIN 0
+#define PRIOR_OTHER_MAX 255
+
+/* Scheduling Priorities. NOTE: Only the idle task can take
+ * the true minimum priority. */
+
+#define SCHED_PRIORITY_MAX 255
+#define SCHED_PRIORITY_DEFAULT 100
+#define SCHED_PRIORITY_MIN 1
+#define SCHED_PRIORITY_IDLE 0
+
+/****************************************************************************
+ * Type Declarations
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/* Floating point types */
+
+typedef float float32;
+#ifndef CONFIG_HAVE_DOUBLE
+typedef float double_t;
+typedef float float64;
+#else
+typedef double double_t;
+typedef double float64;
+#endif
+
+/* Misc. scalar types */
+
+/* mode_t is an integer type used for file attributes. mode_t needs
+ * to be at least 16-bits but, in fact must be sizeof(int) because it is
+ * pased via varargs.
+ */
+
+typedef unsigned int mode_t;
+
+/* size_t is used for sizes of memory objects.
+ * ssize_t is used for a count of bytes or an error indication.
+ */
+
+#ifdef CONFIG_SMALL_MEMORY
+typedef uint16_t size_t;
+typedef int16_t ssize_t;
+#else
+typedef uint32_t size_t;
+typedef int32_t ssize_t;
+#endif
+
+/* uid_t is used for user IDs
+ * gid_t is used for group IDs.
+ */
+
+typedef int16_t uid_t;
+typedef int16_t gid_t;
+
+/* dev_t is used for device IDs */
+
+typedef uint16_t dev_t;
+
+/* ino_t is used for file serial numbers */
+
+typedef uint16_t ino_t;
+
+/* pid_t is used for process IDs and process group IDs */
+
+typedef int pid_t;
+
+/* id_t is a general identifier that can be used to contain at least a pid_t,
+ * uid_t, or gid_t.
+ */
+
+typedef unsigned int id_t;
+
+/* Signed integral type of the result of subtracting two pointers */
+
+typedef intptr_t ptrdiff_t;
+
+/* Wide, 16-bit character types. wchar_t is a built-in type in C++ and
+ * its declaration here may cause compilation errors on some compilers
+ * if -DCONFIG_WCHAR_BUILTIN is not included in the CXXFLAGS.
+ */
+
+#ifndef CONFIG_WCHAR_BUILTIN
+typedef uint16_t wchar_t;
+#endif
+
+/* blkcnt_t and off_t are signed integer types.
+ *
+ * blkcnt_t is used for file block counts.
+ * off_t is used for file offsets and sizes.
+ * fpos_t is used for file positions.
+ *
+ * Hence, all should be independent of processor architecture.
+ */
+
+typedef uint32_t blkcnt_t;
+typedef int32_t off_t;
+typedef off_t fpos_t;
+
+/* Large file versions */
+
+#ifdef CONFIG_HAVE_LONG_LONG
+typedef int64_t off64_t;
+typedef int64_t fpos64_t;
+#endif
+
+/* blksize_t is a signed integer value used for file block sizes */
+
+typedef int16_t blksize_t;
+
+/* Network related */
+
+typedef unsigned int socklen_t;
+typedef uint16_t sa_family_t;
+
+/* Used for system times in clock ticks */
+
+typedef uint32_t clock_t;
+
+/* The type useconds_t shall be an unsigned integer type capable of storing
+ * values at least in the range [0, 1000000]. The type suseconds_t shall be
+ * a signed integer type capable of storing values at least in the range
+ * [-1, 1000000].
+ */
+
+typedef uint32_t useconds_t;
+typedef int32_t suseconds_t;
+
+/* Task entry point */
+
+typedef int (*main_t)(int argc, char *argv[]);
+
+#endif
+
+/****************************************************************************
+ * Global Function Prototypes
+ ****************************************************************************/
+
+#endif /* __INCLUDE_SYS_TYPES_H */
diff --git a/nuttx/include/sys/vfs.h b/nuttx/include/sys/vfs.h
new file mode 100644
index 000000000..8433893c3
--- /dev/null
+++ b/nuttx/include/sys/vfs.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ * include/sys/vfs.h
+ *
+ * Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_VFS_H
+#define __INCLUDE_SYS_VFS_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+/* sys/vfs.h is just an alternative location for the information in
+ * sys/statfs.h.
+ */
+
+#include <sys/statfs.h>
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#endif /* __INCLUDE_SYS_VFS_H */
diff --git a/nuttx/include/sys/wait.h b/nuttx/include/sys/wait.h
new file mode 100644
index 000000000..6af1e971e
--- /dev/null
+++ b/nuttx/include/sys/wait.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+ * include/sys/wait.h
+ *
+ * Copyright (C) 2011 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * 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_SYS_WAIT_H
+#define __INCLUDE_SYS_WAIT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/types.h>
+#include <signal.h>
+
+#ifdef CONFIG_SCHED_WAITPID
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/* The following are provided for analysis of returned status values.
+ * Encoded is as follows as 2 bytes of info(MS) then two bytes of code (LS).
+ * Code:
+ * 0 - Child has exited, info is the exit code.
+ * Other values - Not implemented
+ */
+
+#define WEXITSTATUS(s) (((s) >> 8) & 0xff)/* Return exit status */
+
+#define WIFEXITED(s) (((s) & 0xff) == 0) /* True: Child exited normally */
+#define WIFCONTINUED(s) (false) /* True: Child has been continued */
+#define WIFSIGNALED(s) (false) /* True: Child exited due to uncaught signal */
+#define WIFSTOPPED(s) (false) /* True: Child is currently stopped */
+#define WSTOPSIG(s) (false) /* Return signal number that caused process to stop */
+#define WTERMSIG(s) (false) /* Return signal number that caused process to terminate */
+
+/* The following symbolic constants are possible values for the options
+ * argument to waitpi(1) (1) and/or waitid() (2),
+ */
+
+#define WCONTINUED (1 << 0) /* Status for child that has been continued (1)(2) */
+#define WNOHANG (1 << 1) /* Do not wait if status not available (1) */
+#define WUNTRACED (1 << 2) /* Report status of stopped child process (1) */
+
+#define WEXITED (1 << 3) /* Wait for processes that have exited (2) */
+#define WSTOPPED (1 << 4) /* Status for child stopped on signal (2) */
+#define WNOHANG (1 << 5) /* Return immediately if there are no children (2) */
+#define WNOWAIT (1 << 6) /* Keep the process in a waitable state (2) */
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+enum idtype_e
+{
+ P_PID = 1,
+ P_GID = 2,
+ P_ALL = 3
+};
+typedef enum idtype_e idtype_t;
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+EXTERN pid_t wait(int *stat_loc);
+EXTERN int waitid(idtype_t idtype, id_t id, siginfo_t *siginfo, int options);
+EXTERN pid_t waitpid(pid_t pid, int *stat_loc, int options);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* CONFIG_SCHED_WAITPID */
+#endif /* __INCLUDE_SYS_WAIT_H */