diff options
Diffstat (limited to 'nuttx/include/limits.h')
-rw-r--r-- | nuttx/include/limits.h | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/nuttx/include/limits.h b/nuttx/include/limits.h new file mode 100644 index 000000000..056e2ada8 --- /dev/null +++ b/nuttx/include/limits.h @@ -0,0 +1,212 @@ +/******************************************************************************** + * include/limits.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_LIMITS_H +#define __INCLUDE_LIMITS_H + +/******************************************************************************** + * Included Files + ********************************************************************************/ + +#include <nuttx/config.h> + +/* Architecture specific limits */ + +#include <arch/limits.h> + +/******************************************************************************** + * Pre-processor Definitions + ********************************************************************************/ +/* Default values for user configurable limits **********************************/ +/* Maximum number of bytes in a filename (not including terminating null). */ + +#ifndef CONFIG_NAME_MAX +# define CONFIG_NAME_MAX 32 +#endif + +/* Maximum number of bytes in a pathname, including the terminating null + * character. + */ + +#ifndef CONFIG_PATH_MAX +# if CONFIG_NAME_MAX < 64 +# define CONFIG_PATH_MAX (4*CONFIG_NAME_MAX + 1) +# else +# define CONFIG_PATH_MAX 256 +# endif +#endif + +/* Configurable limits required by POSIX **************************************** + * + * Required for all implementations: + * + * _POSIX_ARG_MAX Total length of string arguments + * _POSIX_CHILD_MAX Number of child tasks active + * _POSIX_LINK_MAX The number of links a file can have + * _POSIX_MAX_CANON Number bytes in TTY canonical input queue + * _POSIX_MAX_INPUT Number bytes in TTY canonical input queue + * _POSIX_NAME_MAX Number of bytes in a file or pathname component + * _POSIX_NGROUPS_MAX Number supplementary group IDs + * _POSIX_OPEN_MAX Number of files a task can have open at once + * _POSIX_PATH_MAX Number of bytes in a full pathname (including NULL) + * _POSIX_PIPE_BUF Number of bytes for atomic write into pipe + * _POSIX_SSIZE_MAX Largest filesystem write; also max value of ssize_t + * _POSIX_STREAM_MAX Number of std I/O streams open at once + * _POSIX_TZNAME_MAX Max number of bytes of a timezone name + * + * Required for sigqueue + * + * _POSIX_RTSIG_MAX Difference between SIGRTMIN and SIGRTMAX + * _POSIX_SIGQUEUE_MAX Max number signals a task can queue + * + * Required for POSIX timers + * + * _POSIX_DELAYTIMER_MAX Max number timer overruns + * _POSIX_TIMER_MAX Max number of timers per task + * _POSIX_CLOCKRES_MIN Clock resolution in nanoseconds + * + * Required for asynchronous I/O + * + * _POSIX_AIO_LISTIO_MAX Max number of AIOs in single listio call + * _POSIX_AIO_MAX Max number of simultaneous AIO operations + * + * Required for POSIX message passing + * + * _POSIX_MQ_OPEN_MAX Max number message queues task may open (mq_open) + * _POSIX_MQ_PRIO_MAX Max message priority (mq_send) + * + * Required for POSIX semaphores + * + * _POSIX_SEM_NSEMS_MAX Max number of open semaphores per task + * _POSIX_SEM_VALUE_MAX Max value a semaphore may have + */ + +#define _POSIX_ARG_MAX 4096 +#define _POSIX_CHILD_MAX 6 +#define _POSIX_LINK_MAX 8 +#define _POSIX_MAX_CANON 255 +#define _POSIX_MAX_INPUT 255 +#define _POSIX_NAME_MAX CONFIG_NAME_MAX +#define _POSIX_NGROUPS_MAX 0 +#define _POSIX_OPEN_MAX CONFIG_NFILE_DESCRIPTORS +#define _POSIX_PATH_MAX CONFIG_PATH_MAX +#define _POSIX_PIPE_BUF 512 +#define _POSIX_SSIZE_MAX INT_MAX +#define _POSIX_STREAM_MAX CONFIG_NFILE_STREAMS +#define _POSIX_TZNAME_MAX 3 + +/* Requred for sigqueue */ + +#define _POSIX_RTSIG_MAX 31 +#define _POSIX_SIGQUEUE_MAX 32 + +/* Required for POSIX timers. + * + * _POSIX_DELAYTIMER_MAX is the number of timer expiration overruns. + * + * _POSIX_TIMER_MAX is the per-process number of timers. + * + * _POSIX_CLOCKRES_MIN is the resolution of the CLOCK_REALTIME clock in nanoseconds. + * CLOCK_REALTIME is controlled by the NuttX system time. The default value is the + * system timer which has a resolution of 10 milliseconds. This default setting can + * be overridden by defining the clock interval in milliseconds as CONFIG_MSEC_PER_TICK + * in the board configuration file. + */ + +#define _POSIX_DELAYTIMER_MAX 32 +#define _POSIX_TIMER_MAX 32 + +#ifdef CONFIG_MSEC_PER_TICK +# define _POSIX_CLOCKRES_MIN ((CONFIG_MSEC_PER_TICK)*1000000) +#else +# define _POSIX_CLOCKRES_MIN (10*1000000) +#endif + +/* Required for asynchronous I/O */ + +#define _POSIX_AIO_LISTIO_MAX 2 +#define _POSIX_AIO_MAX 1 + +/* Required for POSIX message passing */ + +#define _POSIX_MQ_OPEN_MAX 8 +#define _POSIX_MQ_PRIO_MAX UCHAR_MAX + +/* Required for POSIX semaphores */ + +#define _POSIX_SEM_NSEMS_MAX INT_MAX +#define _POSIX_SEM_VALUE_MAX 0x7fff + +/* Actual limits. These values may be increased from the POSIX minimum + * values above or made indeterminate + */ + +#define ARG_MAX _POSIX_ARG_MAX +#define CHILD_MAX _POSIX_CHILD_MAX +#define LINK_MAX _POSIX_LINK_MAX +#define MAX_CANON _POSIX_MAX_CANON +#define MAX_INPUT _POSIX_MAX_INPUT +#define NAME_MAX _POSIX_NAME_MAX +#define NGROUPS_MAX _POSIX_NGROUPS_MAX +#define OPEN_MAX _POSIX_OPEN_MAX +#define PATH_MAX _POSIX_PATH_MAX +#define PIPE_BUF _POSIX_PIPE_BUF +#define SSIZE_MAX _POSIX_SSIZE_MAX +#define STREAM_MAX _POSIX_STREAM_MAX +#define TZNAME_MAX _POSIX_TZNAME_MAX + +#define RTSIG_MAX _POSIX_RTSIG_MAX +#define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX + +#define DELAYTIMER_MAX _POSIX_DELAYTIMER_MAX +#define TIMER_MAX _POSIX_TIMER_MAX +#define CLOCKRES_MIN _POSIX_CLOCKRES_MIN + +/* Required for asynchronous I/O */ + +#define AIO_LISTIO_MAX _POSIX_AIO_LISTIO_MAX +#define AIO_MAX _POSIX_AIO_MAX + +/* Required for POSIX message passing */ + +#define MQ_OPEN_MAX _POSIX_MQ_OPEN_MAX +#define MQ_PRIO_MAX _POSIX_MQ_PRIO_MAX + +/* Required for POSIX semaphores */ + +#define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX +#define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX + +#endif /* __INCLUDE_LIMITS_H */ |