diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-09-17 18:18:44 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-09-17 18:18:44 +0000 |
commit | 57623d42ebb04f0a0b9e6eb7c0847a3ece2aa0ff (patch) | |
tree | 25d07d14e920d31c0b1947c9ca586f2a01fc32d8 /nuttx/include/sys | |
download | px4-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.h | 83 | ||||
-rw-r--r-- | nuttx/include/sys/mman.h | 113 | ||||
-rw-r--r-- | nuttx/include/sys/mount.h | 77 | ||||
-rw-r--r-- | nuttx/include/sys/prctl.h | 114 | ||||
-rw-r--r-- | nuttx/include/sys/select.h | 121 | ||||
-rw-r--r-- | nuttx/include/sys/sendfile.h | 123 | ||||
-rw-r--r-- | nuttx/include/sys/socket.h | 234 | ||||
-rw-r--r-- | nuttx/include/sys/sockio.h | 120 | ||||
-rw-r--r-- | nuttx/include/sys/stat.h | 134 | ||||
-rw-r--r-- | nuttx/include/sys/statfs.h | 145 | ||||
-rw-r--r-- | nuttx/include/sys/syscall.h | 398 | ||||
-rw-r--r-- | nuttx/include/sys/time.h | 74 | ||||
-rw-r--r-- | nuttx/include/sys/types.h | 232 | ||||
-rw-r--r-- | nuttx/include/sys/vfs.h | 61 | ||||
-rw-r--r-- | nuttx/include/sys/wait.h | 118 |
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 */ |