This section describes how the QNX Neutrino RTOS conforms to POSIX in header files.
<fenv.h>
The default state of the FENV_ACCESS pragma is off. Note that gcc doesn't currently support this pragma.
<float.h>
The accuracy of floating point operations and the library functions in <math.h> and <complex.h> is unknown.
The default rounding mode for floating-point addition (FLT_ROUNDS) is 1. No additional values beyond those specified are implemented.
The evaluation format mode (FLT_EVAL_METHOD) is -1 (indeterminable). There are no additional implementation-defined values beyond those specified.
The values of floating-point constants are as follows:
| Constant | Value |
|---|---|
| FLT_RADIX | 2 |
| FLT_MANT_DIG | 24 |
| DBL_MANT_DIG | 53 |
| LDBL_MANT_DIG | 64 |
| DECIMAL_DIG | 21 |
| FLT_DIG | 6 |
| DBL_DIG | 15 |
| LDBL_DIG | 18 |
| FLT_MIN_EXP | -125 |
| DBL_MIN_EXP | -1021 |
| LDBL_MIN_EXP | -16381 |
| FLT_MIN_10_EXP | -37 |
| DBL_MIN_10_EXP | -307 |
| LDBL_MIN_10_EXP | -4931 |
| FLT_MAX_EXP | 128 |
| DBL_MAX_EXP | 1024 |
| LDBL_MAX_EXP | 16384 |
| FLT_MAX_10_EXP | 38 |
| DBL_MAX_10_EXP | 308 |
| LDBL_MAX_10_EXP | 4932 |
| FLT_MAX | 3.40282347e+38 |
| DBL_MAX | 1.7976931348623157e308 |
| LDBL_MAX | 1.189731495357231765e+4932 |
| FLT_EPSILON | 1.1920929e-07 |
| DBL_EPSILON | 2.2204460492503131e-16 |
| LDBL_EPSILON | 1.084202172485504434e-19 |
| FLT_MIN | 1.17549435e-38 |
| DBL_MIN | 2.2250738585072014e-308 |
| LDBL_MIN | 3.362103143112093506e-4932 |
<limits.h>
The limit values in <limits.h> are implemented as follows:
| Limit | Value |
|---|---|
| AIO_LISTIO_MAX | Indeterminate |
| AIO_MAX | Indeterminate |
| AIO_PRIO_DELTA_MAX | Indeterminate |
| ARG_MAX | 61440 |
| ATEXIT_MAX | 32 |
| CHILD_MAX | Indeterminate |
| DELAYTIMER_MAX | 1048576 |
| HOST_NAME_MAX | Indeterminate |
| IOV_MAX | Indeterminate |
| LOGIN_NAME_MAX | Indeterminate |
| MQ_OPEN_MAX | Determined by the
mqueue
or
mq
server.
The maximum value is set to 1024, but a lower limit may be imposed by the process RLIMIT_NOFILE limit, as the implementation is via file descriptors. |
| MQ_PRIO_MAX | 32 |
| OPEN_MAX | Determined by the maximum number of file descriptors available to a process.
The default limit is 1000, but this can be altered using a configuration option to the kernel when building the system image. The minimum value that can be supplied is 100, with no imposed maximum. A lower limit may be imposed by the processRLIMIT_NOFILE limit. |
| PAGESIZE | 4096 |
| PAGE_SIZE | 4096 |
| PTHREAD_DESTRUCTOR_ITERATIONS | 4 |
| PTHREAD_KEYS_MAX | 128 |
| PTHREAD_STACK_MIN | 256 |
| PTHREAD_THREADS_MAX | 32767 |
| RE_DUP_MAX | 255 |
| RTSIG_MAX | 16 |
| SEM_NSEMS_MAX | For unnamed semaphores, this is indeterminate.
For named semaphores, the limit is determined by the mqueue server. The maximum is set to 4096, but a lower limit may be imposed by the process RLIMIT_NOFILE limit, as the implementation is via file descriptors. |
| SEM_VALUE_MAX | 1073741824 |
| SIGQUEUE_MAX | Indeterminate |
| SS_REPL_MAX | 65535 |
| STREAM_MAX | Indeterminate |
| SYMLOOP_MAX | Indeterminate |
| TIMER_MAX | Indeterminate |
| TTY_NAME_MAX | Indeterminate |
| TZNAME_MAX | 30 |
| FILESIZEBITS | Depends on the filesystem implementation.
The value for all currently supported filesystems is 32. |
| LINK_MAX | 65535 |
| MAX_CANON | Depends on the character device driver.
The default is 256, but may be changed by the -C driver command-line option. |
| MAX_INPUT | Depends on the character device driver.
The default is 256, but may be changed by the -C driver command-line option. |
| NAME_MAX | Depends on the filesystem implementation.
Most filesystems impose a limit of 255; the ETFS filesystem imposes a limit of 91. |
| PATH_MAX | Depends on the filesystem implementation.
Most filesystems impose a limit of 1024; the ETFS filesystem imposes a limit of 255. |
| PIPE_BUF | 512 |
| SYMLINK_MAX | Depends on the filesystem implementation.
Most filesystems impose a limit of 1024; the ETFS filesystem imposes a limit of 256. |
| BC_BASE_MAX | 99 |
| BC_DIM_MAX | 2048 |
| BC_SCALE_MAX | 99 |
| BC_STRING_MAX | 1000 |
| CHARCLASS_NAME_MAX | 14 |
| COLL_WEIGHTS_MAX | 2 |
| EXPR_NEST_MAX | 32 |
| LINE_MAX | 2048 |
| NGROUPS_MAX | 8 |
| RE_DUP_MAX | 255 |
| CHAR_BIT | 8 |
| CHAR_MAX | 127 |
| CHAR_MIN | -128 |
| INT_MAX | 2147483647 |
| LONG_BIT | 32 |
| LONG_MAX | 2147483647 |
| MB_LEN_MAX | 8 |
| SCHAR_MAX | 127 |
| SHRT_MAX | 32767 |
| SSIZE_MAX | 2147483647 |
| UCHAR_MAX | 255 |
| UINT_MAX | 4294967295 |
| ULONG_MAX | 4294967295 |
| USHRT_MAX | 65535 |
| WORD_BIT | 32 |
| INT_MIN | -2147383648 |
| LONG_MIN | -2147383648 |
| SCHAR_MIN | -128 |
| SHRT_MIN | -32768 |
| LLONG_MIN | -9223372036854775808 |
| LLONG_MAX | 9223372036854775807 |
| ULLONG_MAX | 18446744073709551615 |
<math.h>
If FLT_EVAL_METHOD has a value other than 0, 1 or 2, the type definitions for float_t and double_t are float and double, respectively.
No implementation-defined floating-point classification macros are defined.
The default state of the FP_CONTRACT pragma is off. Note that gcc doesn't currently support this pragma.
<signal.h>
Realtime signal behavior is supported for signals outside of the range SIGRTMIN through SIGRTMAX.
The following additional signals are defined in <signal.h>:
For more information, see "Summary of signals" in the Interprocess Communication (IPC) chapter of the System Architecture guide.
<stdint.h>
The limits for specified-width integer types are as follows:
| Limit | Value |
|---|---|
| INT8_MIN | -128 |
| INT16_MIN | -32768 |
| INT32_MIN | -2147483648 |
| INT64_MIN | -9223372036854775808 |
| INT8_MAX | 127 |
| INT16_MAX | 32767 |
| INT32_MAX | 2147483647 |
| INT64_MAX | 9223372036854775807 |
| UINT8_MAX | 255 |
| UINT16_MAX | 65535 |
| UINT32_MAX | 4294967295 |
| UINT64_MAX | 18446744073709551615 |
| INT_LEAST8_MIN | -128 |
| INT_LEAST16_MIN | -32768 |
| INT_LEAST32_MIN | -2147483648 |
| INT_LEAST64_MIN | -9223372036854775808 |
| INT_LEAST8_MAX | 127 |
| INT_LEAST16_MAX | 32767 |
| INT_LEAST32_MAX | 2147483647 |
| INT_LEAST64_MAX | 9223372036854775807 |
| UINT_LEAST8_MAX | 255 |
| UINT_LEAST16_MAX | 65535 |
| UINT_LEAST32_MAX | 4294967295 |
| UINT_LEAST64_MAX | 18446744073709551615 |
| INT_FAST8_MIN | -128 |
| INT_FAST16_MIN | -32768 |
| INT_FAST32_MIN | -2147483648 |
| INT_FAST64_MIN | -9223372036854775808 |
| INT_FAST8_MAX | 127 |
| INT_FAST16_MAX | 32767 |
| INT_FAST32_MAX | 2147483647 |
| INT_FAST64_MAX | 9223372036854775807 |
| UINT_FAST8_MAX | 255 |
| UINT_FAST16_MAX | 65536 |
| UINT_FAST32_MAX | 4294967295 |
| UINT_FAST64_MAX | 18446744073709551615 |
| INTPTR_MIN | -2147483648 |
| INTPTR_MAX | 2147483647 |
| UINTPTR_MAX | 4284967295 |
The values of other integer types are as follows:
| Constant | Value |
|---|---|
| PTRDIFF_MIN | -2147483648 |
| PTRDIFF_MAX | 2147483647 |
| SIG_ATOMIC_MIN | -2147483648 |
| SIG_ATOMIC_MAX | 2147483647 |
| SIZE_MAX | 4284967295 |
<sys/stat.h>
There are no additional implementation-defined bits that can be ORed into S_IRWXU, S_IRWXG, and S_IRWXO.
<time.h>
The maximum possible clock jump for the system-wide monotonic clock is the same as the system clock resolution:
The system clock resolution can be set using the QNX-specific ClockPeriod() kernel call using the CLOCK_REALTIME clock.