This appendix describes how QNX Neutrino conforms to POSIX. It's based on the documentation submitted for the QNX Neutrino certification of compliance as a PSE52 Realtime Controller 1003.13-2003 System. This appendix includes:
To set up an environment that conforms to POSIX, do the following:
|
This section is based on the Conformation Statement made for the certification and includes:
The required features below are supported for all system configurations.
Macro Name | Meaning |
---|---|
_POSIX_NO_TRUNC | Pathname components longer than NAME_MAX generate an error. |
QNX Neutrino doesn't implement the following optional features:
QNX Neutrino supports the following POSIX.1 options and POSIX.13 units of functionality not mandated by the PSE52 Realtime Controller 1003.13-2003 System Product Standard:
The values associated with the constants specified in <float.h> are as follows:
Macro Name | Meaning | Value |
---|---|---|
FLT_RADIX | Radix of the exponent representation. | 2 |
FLT_MANT_DIG | Number of base-FLT_RADIX digits in the float significand. | 24 |
DBL_MANT_DIG | Number of base-FLT_RADIX digits in the double significand. | 53 |
LDBL_MANT_DIG | Number of base-FLT_RADIX digits in the long double significand. | 64 |
FLT_DIG | Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a float representation and back again without change to the q digits. | 6 |
DBL_DIG | Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a double representation and back again without change to the q digits. | 15 |
LDBL_DIG | Number of decimal digits, q, such that any floating-point number with q digits can be rounded into a long double representation and back again without change to the q digits. | 18 |
FLT_MIN_EXP | Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised float. | -125 |
DBL_MIN_EXP | Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised double. | -1021 |
LDBL_MIN_EXP | Minimum negative integer such that FLT_RADIX raised to that power minus 1 is a normalised long double. | -16381 |
FLT_MIN_10_EXP | Minimum negative integer such that 10 raised to that power is in the range of normalised floats. | -37 |
DBL_MIN_10_EXP | Minimum negative integer such that 10 raised to that power is in the range of normalised doubles. | -307 |
LDBL_MIN_10_EXP | Minimum negative integer such that 10 raised to that power is in the range of normalised long doubles. | -4931 |
FLT_MAX_EXP | Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite float. | 128 |
DBL_MAX_EXP | Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite double. | 1024 |
LDBL_MAX_EXP | Maximum integer such that FLT_RADIX raised to that power minus 1 is a representable finite long double. | 16384 |
FLT_MAX_10_EXP | Maximum integer such that 10 raised to that power is in the range of representable finite floats. | 38 |
DBL_MAX_10_EXP | Maximum integer such that 10 raised to that power is in the range of representable finite doubles. | 308 |
LDBL_MAX_10_EXP | Maximum integer such that 10 raised to that power is in the range of representable finite long doubles. | 4932 |
FLT_MAX | Maximum representable finite float. | 3.40282347e+38 |
DBL_MAX | Maximum representable finite double. | 1.7976931348623157e308 |
LDBL_MAX | Maximum representable finite long double. | 1.189731495357231765e+4932 |
FLT_EPSILON | Difference between 1.0 and the least value greater than 1.0 that is representable as a float. | 1.1920929e-07 |
DBL_EPSILON | Difference between 1.0 and the least value greater than 1.0 that is representable as a double. | 2.2204460492503131e-16 |
LDBL_EPSILON | Difference between 1.0 and the least value greater than 1.0 that is representable as a long double. | 1.084202172485504434e-19 |
FLT_MIN | Minimum normalised positive float. | 1.17549435e-38 |
DBL_MIN | Minimum normalised positive double. | 2.2250738585072014e-308 |
LDBL_MIN | Minimum normalised positive long double. | 3.362103143112093506e-4932 |
The values associated with the following constants (optionally specified in <limits.h> are as follows:
Macro Name | Meaning | Minimum | Maximum |
---|---|---|---|
DELAYTIMER_MAX | Maximum number of timer expiration overruns. | 1048576 | 1048576 |
FILESIZEBITS | Minimum number of bits needed to represent as a signed integer value the maximum size of a regular file. | 32 | 64 |
LINK_MAX | Maximum number of links to a single file. | 1 | 2147483647 |
MQ_OPEN_MAX | The maximum number of open message queue descriptors a process may hold. | 8 | 1024 |
MQ_PRIO_MAX | The maximum number of message priorities supported by the implementation. | 32 | 32 |
NAME_MAX | Maximum number of bytes in a filename (not including the terminating null). | 91 | 255 |
OPEN_MAX | Maximum number of open files that one process can have open at any one time. | 100 | 65534 |
PAGESIZE | Size of a page in bytes. | 4096 | 4096 |
PATH_MAX | Maximum number of bytes in a pathname (including the terminating null). | 255 | 1024 |
PTHREAD_DESTRUCTOR_ITERATIONS | Maximum number of attempts made to destroy a thread's thread-specific data values when a thread exits. | 4 | 4 |
PTHREAD_KEYS_MAX | Maximum number of data keys that can be created by a process. | 128 | 128 |
PTHREAD_STACK_MIN | Minimum size in bytes of thread stack storage. | 256 | 256 |
PTHREAD_THREADS_MAX | Maximum number of threads that can be created per process. | 65534 | 65534 |
RTSIG_MAX | Maximum number of realtime signals reserved for application use in this implementation. | 16 | 16 |
SEM_NSEMS_MAX | Maximum number of semaphores that a process may have. | Unlimited | Unlimited |
SEM_VALUE_MAX | The maximum value a semaphore may have. | 1073741823 | 1073741823 |
SIGQUEUE_MAX | Maximum number of queued signals that a process may send and have pending at the receiver(s) at any time. | Unlimited | Unlimited |
SS_REPL_MAX | The maximum number of replenishment operations that may be simultaneously pending for a particular sporadic server scheduler. | 65535 | 65535 |
STREAM_MAX | Number of streams that one process can have open at one time. | Unlimited | Unlimited |
TIMER_MAX | Maximum number of timers per process supported by the implementation. | 65534 | 65534 |
TRACE_EVENT_NAME_MAX | Maximum length of the trace event name. | Not supported | Not supported |
TRACE_NAME_MAX | Maximum length of the trace generation version string or of the trace stream name. | Not supported | Not supported |
TRACE_SYS_MAX | Maximum number of trace streams that may simultaneously exist in the system. | Not supported | Not supported |
TRACE_USER_EVENT_MAX | Maximum number of user trace event type identifiers that may simultaneously exist in a traced process, including the predefined user trace event POSIX_TRACE_UNNAMED_USER_EVENT. | Not supported | Not supported |
TZNAME_MAX | Maximum number of bytes supported for the name of a time zone. | 30 | 30 |
The values associated with the following numerical constants specified in the <limits.h> header file are as follows:
Macro Name | Meaning | Value |
---|---|---|
CHAR_MAX | Maximum value of a char. | 127 |
INT_MAX | Maximum value of an int. | 2147483647 |
LONG_MAX | Maximum value of a long int. | 2147483647 |
LLONG_MAX | Maximum value of a long long. | 9223372036854775807 |
SHRT_MAX | Maximum value of a short. | 32767 |
SSIZE_MAX | Maximum value of an object of type ssize_t. | 2147483647 |
UINT_MAX | Maximum value of an unsigned int. | 4294967295 |
ULONG_MAX | Maximum value of an unsigned long int. | 4294967295 |
ULLONG_MAX | Maximum value of a unigsned long long. | 18446744073709551615 |
USHRT_MAX | Maximum value of an unsigned short int. | 65535 |
The values associated with the numerical constants specified in the <stdio.h> header file are as follows:
Macro Name | Meaning | Value |
---|---|---|
FILENAME_MAX | Maximum size in bytes of the longest filename string that the implementation guarantees can be opened. | 255 |
FOPEN_MAX | Number of streams which the implementation guarantees can be open simultaneously. | 16 |
L_tmpnam | Maximum size of character array to hold tmpnam() output. | 255 |
TMP_MAX | Minimum number of unique filenames generated by tmpnam(), which is the maximum number of times an application can call tmpnam() reliably. | 17576 |
The following table indicates which optional errors, (denoted by “may fail” within the specification), listed in the System Interfaces Volume are detected in the circumstances specified:
Function | Error | Detected |
---|---|---|
access() | EINVAL | Yes |
ENAMETOOLONG | Yes | |
ETXTBSY | No | |
chdir() | ENAMETOOLONG | Yes |
ELOOP | Yes | |
clock_settime() | EPERM | Yes |
close() | EIO | Yes |
closedir() | EBADF | Yes |
EINTR | Yes | |
erfc(), erfcf(), erfcl() | Range Error | Yes |
exp(), expf(), expl() | Range Error | Yes |
exp2(), exp2f(), exp2l() | Range Error | Yes |
expm1(), expm1f() | Range Error | Yes |
fchdir() | EINTR | Yes |
EIO | No | |
fclose() | ENXIO | No |
fcntl() | EDEADLK | Yes |
fdim(), fdimf(), fdiml() | Range Error | Yes |
fdopen() | EBADF | No |
EINVAL | Yes | |
EMFILE | No | |
ENOMEM | Yes | |
fflush() | ENXIO | Yes |
fgetc() | ENOMEM | No |
ENXIO | Yes | |
fgetpos() | EBADF | Yes |
ESPIPE | Yes | |
fgetwc() | ENOMEM | No |
ENXIO | Yes | |
fileno() | EBADF | No |
fmod(), fmodf(), fmodl() | Range Error | Yes |
fopen() | EINVAL | Yes |
ELOOP | Yes | |
EMFILE | Yes | |
ENAMETOOLONG | Yes | |
ENOMEN | Yes | |
ETXTBSY | Yes | |
fpathconf() | EBADF | Yes |
EINVAL | Yes | |
fputc() | ENOMEM | No |
ENXIO | Yes | |
fread() | ENOMEM | No |
ENXIO | Yes | |
freopen() | EINVAL | Yes |
ELOOP | Yes | |
ENAMETOOLONG | Yes | |
ENOMEM | Yes | |
ENXIO | Yes | |
ETXTBSY | Yes | |
fscanf() | ENOMEM | No |
ENXIO | Yes | |
fstat() | EOVERFLOW | Yes |
ftell() | ESPIPE | Yes |
getcwd() | EACCES | Yes |
ENOMEM | Yes | |
ldexp(), ldexpf(), ldexpl() | Range Error | Yes |
link() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
mkdir() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
mktime() | EOVERFLOW | No |
mlock() | EINVAL | Yes |
ENOMEM | Yes | |
munlock() | EINVAL | Yes |
mlockall() | ENOMEM | Yes |
ENOPERM | Yes | |
mq_getattr() | EBADF | Yes |
mq_receive() | EBADF | Yes |
mq_timedreceive() | EBADF | Yes |
open() | EAGAIN | No |
EINVAL | Yes | |
ELOOP | Yes | |
ENAMETOOLONG | Yes | |
ETXTBSY | Yes | |
opendir() | ELOOP | Yes |
EMFILE | Yes | |
ENAMETOOLONG | Yes | |
ENFILE | Yes | |
pathconf() | EACCES | Yes |
EINVAL | Yes | |
ELOOP | Yes | |
ENAMETOOLONG | Yes | |
ENOENT | Yes | |
ENOTDIR | Yes | |
posix_trace_*() | Not supported | Not supported |
pow(), powf(), powl() | Range Error | Yes |
pthread_attr_destroy() | EINVAL | No |
pthread_attr_init() | EBUSY | No |
pthread_attr_getdetachstate() | EINVAL | No |
pthread_attr_setdetachstate() | EINVAL | No |
pthread_attr_getguardsize() | EINVAL | No |
pthread_attr_setguardsize() | EINVAL | No |
pthread_attr_getinheritsched() | EINVAL | No |
pthread_attr_setinheritsched() | EINVAL | No |
ENOSUP | No | |
pthread_attr_getschedparam() | EINVAL | No |
pthread_attr_setschedparam() | EINVAL | No |
ENOSUP | No | |
pthread_attr_getschedpolicy() | EINVAL | No |
pthread_attr_setschedpolicy() | EINVAL | No |
ENOSUP | No | |
pthread_attr_getscope() | EINVAL | No |
pthread_attr_setscope() | EINVAL | Yes |
ENOSUP | Yes | |
pthread_attr_getstack() | EINVAL | No |
pthread_attr_setstack() | EINVAL | No |
EBUSY | No | |
pthread_attr_getstackaddr() | EINVAL | No |
pthread_attr_setstackaddr() | EINVAL | No |
pthread_attr_getstacksize() | EINVAL | No |
pthread_attr_setstacksize() | EINVAL | No |
pthread_cancel() | ESRCH | Yes |
pthread_cond_broadcast() | EINVAL | Yes |
pthread_cond_signal() | EINVAL | Yes |
pthread_cond_destroy() | EBUSY | Yes |
EINVAL | Yes | |
pthread_cond_init() | EBUSY | Yes |
EINVAL | Yes | |
pthread_cond_timedwait() | EINVAL | Yes |
EPERM | Yes | |
pthread_cond_wait() | EINVAL | Yes |
EPERM | Yes | |
pthread_condattr_destroy() | EINVAL | No |
pthread_condattr_getclock() | EINVAL | No |
pthread_condattr_setclock() | EINVAL | No |
pthread_condattr_getpshared() | EINVAL | No |
pthread_condattr_setpshared() | EINVAL | No |
pthread_create() | EINVAL | Yes |
pthread_detach() | EINVAL | Yes |
ESRCH | Yes | |
pthread_getcpuclockid() | ESRCH | Yes |
pthread_getschedparam() | ESRCH | Yes |
pthread_setschedparam() | EINVAL | Yes |
ENOTSUP | Yes | |
EPERM | Yes | |
ESRCH | Yes | |
pthread_setspecific() | ESRCH | No |
pthread_join() | EDEADLK | Yes |
EINVAL | Yes | |
pthread_key_delete() | EINVAL | Yes |
pthread_mutex_destroy() | EBUSY | Yes |
EINVAL | Yes | |
pthread_mutex_init() | EBUSY | Yes |
EINVAL | Yes | |
pthread_mutex_lock() | EINVAL | Yes |
EDEADLK | Yes | |
pthread_mutex_trylock() | EINVAL | Yes |
pthread_mutex_unlock() | EINVAL | Yes |
EPERM | Yes | |
pthread_mutex_timedlock() | EINVAL | Yes |
EDEADLK | Yes | |
pthread_mutexattr_destroy() | EINVAL | No |
pthread_mutexattr_getprioceiling() | EINVAL | No |
EPERM | No | |
pthread_mutexattr_setprioceiling() | EINVAL | Yes |
EPERM | No | |
pthread_mutexattr_getprotocol() | EINVAL | No |
EPERM | No | |
pthread_mutexattr_setprotocol() | EINVAL | Yes |
EPERM | No | |
pthread_mutexattr_getpshared() | EINVAL | No |
pthread_mutexattr_setpshared() | EINVAL | No |
pthread_mutexattr_gettype() | EINVAL | No |
pthread_mutexattr_settype() | EINVAL | Yes |
pthread_once() | EINVAL | No |
pthread_setcancelstate() | EINVAL | Yes |
pthread_setcanceltype() | EINVAL | Yes |
pthread_schedprio() | EINVAL | Yes |
ENOTSUP | No | |
EPERM | Yes | |
ESRCH | Yes | |
putc() | ENOMEM | No |
ENXIO | Yes | |
putchar() | ENOMEM | No |
ENXIO | Yes | |
puts() | ENOMEM | No |
ENXIO | Yes | |
read() | EIO | Yes |
ENOBUFS | Yes | |
ENOMEM | Yes | |
ENXIO | Yes | |
readdir() | EBADF | Yes |
ENOENT | No | |
remove() | EBUSY | No |
ELOOP | Yes | |
ENAMETOOLONG | Yes | |
ETXTBSY | No | |
rename() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
ETXTBSY | No | |
rmdir() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
sem_close() | EINVAL | Yes |
sem_destroy() | EINVAL | Yes |
EBUSY | Yes | |
sem_getvalue() | EINVAL | Yes |
sem_post() | EINVAL | Yes |
sem_timedwait() | EDEADLK | No |
EINTR | Yes | |
EINVAL | Yes | |
sem_trywait() | EDEADLK | No |
EINTR | Yes | |
EINVAL | Yes | |
sem_wait() | EDEADLK | No |
EINTR | Yes | |
EINVAL | Yes | |
setvbuf() | EBADF | No |
sigaction() | EINVAL | Yes |
sigaddset() | EINVAL | Yes |
sigdelset() | EINVAL | Yes |
sigismember() | EINVAL | Yes |
signal() | EINVAL | Yes |
sigtimedwait() | EINVAL | Yes |
sigwait() | EINVAL | No |
sigwaitinfo() | EINVAL | No |
stat() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
EOVERFLOW | Yes | |
strcoll() | EINVAL | No |
strerror() | EINVAL | No |
strerror_r() | ERANGE | Yes |
strtod(), strtof(), strtold() | EINVAL | Yes |
strtoimax() | EINVAL | Yes |
strtol() | EINVAL | Yes |
strtoul() | EINVAL | Yes |
strtoumax() | EINVAL | Yes |
strxfrm() | EINVAL | No |
timer_delete() | EINVAL | Yes |
timer_getoverrun() | EINVAL | Yes |
timer_gettime() | EINVAL | Yes |
timer_settime() | EINVAL | Yes |
tmpfile() | EMFILE | Yes |
ENOMEM | Yes | |
unlink() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
ETXTBSY | No | |
utime() | ELOOP | Yes |
ENAMETOOLONG | Yes | |
vfscanf() | EILSEQ | Yes |
EINVAL | No | |
ENOMEM | No | |
ENXIO | Yes | |
write() | ENETDOWN | Yes |
ENETUNREACH | Yes | |
ENXIO | Yes |
Most implementations support IEEE floating-point format either in hardware or software. Some implementations support other formats with different exponent and mantissa accuracy. QNX Neutrino supports IEEE 754 in hardware.
The fegetexceptflag(), feraiseexcept(), fesetexecptflag(), and fetestexecptflag() functions support the following floating-point exceptions:
The fegetround() and fesetround() functions support the following floating-point rounding directions:
QNX Neutrino supports a non-stop floating-point exception mode.
QNX Neutrino provides standard access control.
QNX Neutrino doesn't implement any additional or alternate file access control mechanisms that could cause fstat() or stat() to fail.
QNX Neutrino supports the following coded character sets:
The underlying internal codeset is ISO 8859-1:1987.
The POSIX functions listed below have cancellation points that occur when a thread is executing:
closedir()
closelog()
dlopen()
endgrent()
endhostent()
endnetent()
endprotoent()
endpwent()
endservent()
fclose()
fflush()
fgetc()
fgetpos()
fgets()
fgetwc()
fgetws()
fopen()
fprintf()
fputc()
fputwc()
fputws()
fread()
freopen()
fscanf()
fseek()
fseeko()
fsetpos()
ftell()
ftello()
ftw()
fwprintf()
fwrite()
fwscanf()
getc()
getc_unlocked()
getchar()
getchar_unlocked()
getgrent()
getgrgid()
getgrgid_r()
getgrnam()
getgrnam_r()
getlogin()
getlogin_r()
getnetbyaddr()
getnetbyname()
getnetent()
getprotobyname()
getprotobynumber()
getprotoent()
getpwent()
getpwent_r()
getpwnam()
getpwnam_r()
getpwuid()
getpwuid_r()
gets()
getservbyname()
getservbyport()
getservent()
getwc()
getwchar()
getwd()
glob()
ioctl()
lseek()
mkstemp()
nftw()
opendir()
openlog()
pathconf()
pclose()
perror()
popen()
posix_fadvise()
posix_fallocate()
posix_openpt()
posix_spawn()
posix_spawnp()
printf()
pthread_rwlock_rdlock()
pthread_rwlock_timedrdlock()
pthread_rwlock_timedwrlock()
pthread_rwlock_wrlock()
putc()
putc_unlocked()
putchar()
putchar_unlocked()
puts()
putwc()
putwchar()
readdir()
readdir_r()
rewind()
scanf()
seekdir()
setgrent()
sethostent()
setnetent()
setprotoent()
setpwent()
setservent()
syslog()
tmpfile()
vfprintf()
vfwprintf()
vprintf()
vwprintf()
wscanf()
For a list of all the functions (including non-POSIX ones) that are cancellation points, see the Summary of Safety Information appendix in the QNX Neutrino Library Reference.
QNX Neutrino supports _POSIX_PRIORITIZED_IO on regular files.
The scheduling policy associated with SCHED_OTHER is SCHED_RR.
QNX Neutrino supports the PTHREAD_SCOPE_SYSTEM scheduling contention scope.
The default scheduling contention scope is PTHREAD_SCOPE_SYSTEM.
The mechanism to configure the system so that the scheduling allocation domain has size one, so that the binding of threads to scheduling allocation domains remains static is as follows:
QNX Neutrino provides the following C-language compilation environments:
QNX Neutrino doesn't provide the following C-language compilation environments:
The Base Definitions Volume defines these four scenarios as possible C-language compilation environment offerings, but doesn't define which corresponding execution environments are supported. QNX Neutrino supports the same execution environments as it does compilation environments.
The largest type that can be stored in type off_t is long long The standard requires that off_t be able to store any value contained in type long.
This section describes the behavior of the implementation-defined features described in IEEE 1003.1-2004 as implemented by the QNX Neutrino RTOS 6.4 operating system for the PSE52 profile specified by IEEE 1003.13-2003. The section numbers and titles below are those from the standard itself.
No additional file access control mechanisms are implemented.
No alternative file access control mechanisms are implemented.
Appropriate privileges are provided by executing with a user ID equal to 0 (root).
For CPU targets operating at less than 40 MHz, the default is 100 clock ticks per second.
For CPU targets operating at greater than 40 MHz, the default is 1000 clock ticks per second.
You can set the system clock's resolution by using the QNX-specific ClockPeriod() kernel call using the CLOCK_REALTIME clock.
Extended security controls aren't implemented.
The Trace (TRC) option isn't supported.
The Trace (TRC) option isn't supported.
No extended security controls are implemented.
Process and thread execution time is measured by updating the running time on each clock tick. The running time of the active thread and process on each processor is incremented by the duration of the system clock tick.
The CPU time consumed by interrupt handlers is charged to the thread and process that is currently active on the CPU.
The CPU time consumed by kernel calls is charged to the thread and process performing the kernel call.
The CPU time consumed by system services not implemented by the kernel is charged to the thread in the server process that implements the system service.
A pathname that begins with two successive slashes is treated as if it begins with a single slash.
The value of seconds since the Epoch is aligned with the current actual time by a 64-bit offset value that represents the offset, in nanoseconds, from the Epoch to the system boot time.
This offset value is initialised by the platform specific initialisation code within the board support package, for example, by reading RTC hardware if present.
A clock_settime() call using the CLOCK_REALTIME clock will set this offset to specified absolute time minus the current monotonic time since booting.
The offset from the Epoch can also be modified by the QNX specific ClockAdjust() kernel call. This applies a delta to the offset value on each system clock tick, for a specified number of ticks to perform a gradual adjustment of the offset value.
The Trace (TRC) option isn't implemented.
Applications can provide additional character set description files.
For single byte characters, the decimal, octal or hexadecimal constants are represented as a char value.
For multibyte characters, the decimal, octal or hexadecimal constants are represented as a wchar_t value, whose type is an unsigned 32-bit integer.
When the value of a locale environment variable doesn't begin with a slash, the value is interpreted as the name of a locale with the set of currently defined locales:
The default locale is the POSIX locale.
No additional locale categories beyond those specified are supported.
The values of the characters in the portable character set are those defined by the ASCII and ISO/IEC 8859-1 character sets.
There are no additional semantics for the following environment variables:
The default locale is the POSIX locale.
There are no additional criteria for determining valid locales.
When the first character of the TZ variable is a colon, the colon is ignored and the following characters are handled as a normal time zone specification. For more information, see “Setting the time zone” in the Configuring Your Environment chapter of the QNX Neutrino User's Guide.
The default state of the FENV_ACCESS pragma is off. Note that gcc doesn't currently support this pragma.
The accuracy of 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 |
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 process RLIMIT_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_NAME | 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 |
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.
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.
The limits for specified-width integer types are as follows:
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:
PTRDIFF_MIN | -2147483648 |
PTRDIFF_MAX | 2147483647 |
SIG_ATOMIC_MIN | -2147483648 |
SIG_ATOMIC_MAX | 2147483647 |
SIZE_MAX | 4284967295 |
There are no additional implementation-defined bits that can be ORed into S_IRWXU, S_IRWXG, and S_IRWXO.
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.
The <errno.h> header file defines the following additional error numbers:
Number | Meaning |
---|---|
EADV | Advertise error |
EBADE | Invalid exchange |
EBADFD | FD invalid for this operation |
EBADR | Invalid request descriptor |
EBADRPC | RPC struct is bad |
EBADRQC | Invalid request code |
EBADSLT | Invalid slot |
EBADFSYS | Corrupted filesystem detected |
EBFONT | Bad font file |
ECHRNG | Channel number out of range |
ECOMM | Communication error on send |
ECTRLTERM | Remap to the controlling terminal |
EDEADLOCK | File locking deadlock |
EENDIAN | Endian not supported |
EFPOS | File position error |
EHOSTDOWN | Host is down |
EL2HLT | Level 2 halted |
EL2NSYNC | Level 2 not synchronized |
EL3HLT | Level 3 halted |
EL3RST | Level 3 reset |
ELIBACC | Can't access shared library |
ELIBBAD | Accessing a corrupted shared library |
ELIBEXEC | Attempting to exec a shared library |
ELIBMAX | Attempting to link too many libraries |
ELIBSCN | .lib section in a.out corrupted |
ELNRNG | Link number out of range |
EMORE | More to do, send message again |
ENOANO | No anode |
ENOCSI | No CSI structure available |
ENOLIC | No license |
ENONDP | Need an NDP to run |
ENONET | Machine isn't on the network |
ENOPKG | Package not installed |
ENOREMOTE | Must be done on local machine |
ENOTBLK | Block device required |
ENOTUNIQ | Given name not unique |
EOK | No error |
EPFNOSUPPORT | Protocol family not supported |
EPROCUNAVAIL | Bad procedure call for program |
EPROGMISMATCH | Program version wrong |
EPROGUNAVAIL | RPC prog. not avail |
EREMCHG | Remote address changed |
EREMOTE | Object is remote |
ERESTART | Restartable system call |
ERPCMISMATCH | RPC version wrong |
ESHUTDOWN | Can't send after socket shutdown |
ESOCKTNOSUPPORT | Socket type not supported |
ESRMNT | Srmount error |
ESRVRFAULT | Server fault on message pass |
ESTRPIPE | if pipe/FIF, don't sleep in stream head" |
ETOOMANYREFS | Too many references: can't splice |
EUNATCH | Protocol driver not attached |
EUSERS | Too many users |
EXFULL | Exchange full |
See also errno in the QNX Neutrino Library Reference.
If a subsequent occurrence of a pending signal is generated, the signal is delivered or accepted more than once if a handler has been set for the signal with SA_SIGINFO set.
A SIGBUS signal may be generated for a misaligned memory access:
The signal mask for a thread created to invoke the sigev_notify_function function (see sigevent) inherits the signal mask of the thread to which the signal is delivered.
For SIGILL signals generated by the execution of an illegal instruction, the si_code field may contain one of the following:
ILL_ILLOPC | Illegal opcode is executed |
ILL_PRVOPC | Instruction requires privileged CPU mode |
ILL_COPROC | Co-processor instruction error |
For SIGSEGV signals generated by an invalid memory access, the si_code field may contain one of the following:
SEGV_MAPERR | The address isn't mapped |
SEGV_ACCERR | The mapping doesn't allow the attempted access |
For SIGBUS signals generated by an invalid memory access, the si_code field may contain one of the following:
BUS_ADRALN | Invalid address alignment |
BUS_OBJERR | Access to a non-existent area of a memory object |
BUS_OBJERR | Hardware-specific bus error |
For SIGTRAP signals generated by breakpoint or other debug traps, the si_code field may contain one of the following:
TRAP_BRKPT | Breakpoint trap |
TRAP_TRACE | Trace trap |
For SIGCLD signals generated during process termination or job control related events, the si_code field may contain one of the following:
CLD_EXITED | Process has exited |
CLD_KILLED | Process was killed |
CLD_DUMPED | Process terminated abnormally |
CLD_STOPPED | Process has been stopped |
CLD_CONTINUED | A stopped process has been continued |
For SIGFPE signals generated for floating-point exceptions, the si_code field may contain one of the following:
FPE_INTDIV | Integer division by zero |
FPE_INTOVF | Floating point overflow |
FPE_FLTDIV | Floating point division by zero |
FPE_FLTUND | Floating point underflow |
FPE_FLTRES | Floating point inexact result |
FPE_FLTINV | Invalid floating point operation |
FPE_NOFPU | No floating point hardware or software emulator present |
FPE_NOMEM | No memory for floating point context save area |
When a file is opened with append mode, the file position indicator is initially positioned at the beginning of the file.
The characteristics of unbuffered and fully buffered streams are supported.
Fully buffered streams use all bytes in the allocated buffer.
Line buffered streams are supported for all file types.
Input is seen exactly once provided the application follows the rules specified.
Memory locking guarantees fixed translation between virtual addresses (as seen by the process) and physical addresses.
No scheduling policies beyond those specified are implemented.
The resolution of the execution time clock for the SCHED_SPORADIC policy 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.
The SCHED_OTHER policy behaves identically to the SCHED_RR policy.
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.
The resolution for time services based on a supported clock is the same as the resolution of that clock.
The default scheduling contention scope is PTHREAD_SCOPE_SYSTEM.
The PTHREAD_SCOPE_PROCESS contention scope isn't supported.
The default value of the inheritsched attribute is PTHREAD_INHERIT_SCHED. This means the default schedpolicy and schedparam attributes are inherited from the parent thread.
The PTHREAD_SCOPE_PROCESS scheduling contention scope isn't supported.
The system determines the scheduling allocation domain size on a per-thread basis using the concept of a “runmask” that indicates the processors on which the thread can be scheduled.
The default runmask for a thread is set to allow scheduling on all processors.
You can set a thread's runmask in the following ways:
For threads with scheduling allocation domains of size greater than one, the rules defined for SCHED_FIFO, SCHED_RR, and SCHED_SPORADIC are followed such that if the thread becomes the head of its thread list, the thread may become the runnable thread on any processor in its scheduling allocation domain if it has a higher priority than the running thread on one of those processors.
This may in turn result in the preempted thread's becoming the running thread on a different processor if that thread also has a scheduling allocation domain of size greater than one and its priority is higher than the running thread on one of the other processors in its scheduling allocation domain.
If a thread's scheduling allocation domain has a size greater than one, a runnable thread selects the processor on which it becomes the runnable thread as follows:
For more information, see the Multicore Processing User's Guide.
No scheduling policies beyond SCHED_OTHER, SCHED_FIFO, SCHED_RR and SCHED_SPORADIC are implemented.
The Trace (TRC) option isn't supported.
For finite values not in the range [-1,1], acos(), acosf(), and acosl() return NaN. The return value for +/-Inf is NaN.
For finite values of x < 1, acosh(), acoshf(), and acoshl() return NaN. The return value when x is -Inf is NaN.
For finite values not in the range [-1,1], asin(), asinf(), and asinl() return NaN. The return value for +/-Inf is NaN.
For finite values of |x| > 1, atan(), atanf(), and atanhl() return NaN. The return value for +/-Inf is NaN.
The calloc() function returns a unique pointer when the size of space requested is zero.
The resolution of all clocks, as returned by clock_getres(), 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.
The clock_settime() function is supported only for the CLOCK_REALTIME clock.
Appropriate privileges for setting the CLOCK_REALTIME clock are obtained by executing with a user ID equal to 0.
When x is +/-Inf, cos(), cosf(), and cosl() return NaN.
For a correct value that would cause an underflow, erfc(), erfcf(), and erfcl() return 0.0.
For a correct value that would cause an underflow, exp(), expf(), and expl() return 0.0.
For a correct value that would cause an underflow, exp2(), exp2f(), and exp2l() return 0.0.
The fclose() may give an EIO error under the following circumstances:
The following addition values for the cmd argument to fcntl() are defined:
F_ALLOCSP | Allocate storage space for the section of the file specified by the l_start, l_len, and l_whence fields of a struct flock structure pointed to by the argument to fcntl(). |
F_FREESP | Free storage space for the section of the file specified by the l_start, l_len, and l_whence fields of a struct flock structure pointed to by the argument to fcntl(). |
F_ALLOCSP64 | Same as F_ALLOCSP, except that the argument is a pointer to a struct flock64 structure, where the l_start and l_len fields are 64-bit values. |
F_FREESP64 | Same as F_FREESP, except that the argument is a pointer to a struct flock64 structure, where the l_start and l_len fields are 64-bit values. |
F_GETLK64 | Same as F_GETLK, except that the argument is a pointer to a struct flock64 structure, where the l_start and l_len fields are 64-bit values. |
F_SETLK64 | Same as F_SETLK, except that the argument is a pointer to a struct flock64 structure, where the l_start and l_len fields are 64-bit values. |
F_SETLKW64 | Same as F_GETLKW, except that the argument is a pointer to a struct flock64 structure, where the l_start and l_len fields are 64-bit values. |
When x − y is positive and underflows, fdim(), fdimf(), and fdiml() return 0.0.
The representation of the floating-point status flags used by fegetexceptflag() depends on the CPU architecture. For x86 processors, the following values are used:
Value | Meaning |
---|---|
0x01 | Invalid operation exception |
0x02 | Denormalization exception |
0x04 | Division-by-zero exception |
0x08 | Overflow exception |
0x10 | Underflow exception |
0x20 | Inexact exception |
The feraiseexcept() function doesn't raise the inexact floating-point exception whenever it raises the overflow or underflow floating point exception.
The fflush() may return an EIO error under the following circumstances:
The fgetc() function may return an EIO error if the filesystem resides on a removable media device, and the media has been forcibly removed.
When x multiplied by y is an exact infinity, and z is also an infinity with the opposite sign, fma(), fmaf(), and fmal() return NaN.
The return value when one of x and y is infinite, the other is zero, and z isn't a NaN is NaN.
For a correct value that would cause an underflow, fmod(), fmodf(), and fmodl() return 0.0. The return value when y is zero is NaN. The return value when x is infinite is NaN.
There are no additional classification categories for the fpclassify() function, other than NaN, infinite, normal, subnormal and zero.
For the fprintf() function, the low-order digit rounding for numbers in double format is round-to-nearest.
For double arguments, the styles for representing infinity and NaN are as follows:
Value | Format conversion specifier | Representation |
---|---|---|
Infinity | f | [-]inf |
Infinity | F | [-]INF |
NaN | f | [-]nan |
NaN | F | [-]NAN |
The value of a pointer for the p conversion specifier is converted to a sequence of hexadecimal digits. The sequence is padded with leading zeroes if the 0 flag is specified.
The fputc() function may return an EIO error if the filesystem resides on a removable media device, and the media has been forcibly removed.
The following mode changes are permitted for freopen():
A - in the scanlist for fscanf() that isn't the first character, nor the second where the first character is a ^, nor the last character, defines a range of characters to be matched. This range consists of characters numerically greater than or equal to the character before the -, and numerically less than or equal to the character after the -.
The p conversion specifier matches a sequence of hexadecimal digits. If the sequence contains more than 8 digits, the conversion is performed only on the last 8 digits in the sequence.
The fseeko() function returns EOF on devices that are incapable of seeking. It sets errno to either ESPIPE or ENOSYS, depending on the implementation of the device or filesystem.
An EIO error may be returned if the filesystem resides on a removable media device, and the media has been forcibly removed.
The fsetpos() function returns EOF on devices that are incapable of seeking. It sets errno to either ESPIPE or ENOSYS, depending on the implementation of the device or filesystem.
An EIO error may be returned if the filesystem resides on a removable media device, and the media has been forcibly removed.
No additional or alternative file access control mechanisms are provided for the fstat() function.
The fsync() function causes all buffered data for the file to be written to the storage device; the file modification times are updated.
No extended security controls are provided for the kill() function.
For a correct value that would cause an underflow, ldexp(), ldexpf(), and ldexpl() return 0.0.
For finite values of x less than zero, log(), logf(), and logl() return NaN. The return value when x is -Inf is NaN.
For finite values of x less than zero, log10(), log10f(), and log10l() return NaN. The return value when x is -Inf is NaN.
For finite values of x less than -1, log1p(), log1pf(), and log1pl() return NaN. The return value when x is -Inf is NaN.
For finite values of x less than 0, log2(), log2f(), and log2l() return NaN. The return value when x is -Inf is NaN.
The lseek() function returns -1 on devices that are incapable of seeking. It sets errno to either ESPIPE or ENOSYS, depending on the implementation of the device or filesystem.
The malloc() function returns a unique pointer when the size of space requested is zero.
In the mkdir() function, the following bits, in addition to file permission bits, behave as follows:
There's no limit on the amount of memory that a process may lock by calling mlock(), other than the amount of physical memory in the system.
Locking implied by MCL_FUTURE in a call to mlockall() or munlockall() is performed during an mmap() operation. If this exceeds the amount of available physical memory, that mmap() call fails with an ENOMEM error.
There is no limit on the amount of memory that a process may lock other than the amount of physical memory in the system.
The return value for a successful mmap() call is a pointer whose value is a valid address in the process virtual address space. This establishes translations from the virtual address range to the physical memory addresses corresponding to the specified section of the memory object.
The return value for an unsuccessful mmap() call is MAP_FAILED, whose value is ((void *) -1).
The implementation supports MAP_FIXED.
When MAP_FIXED isn't set, addr is used as a hint to derive the virtual address returned:
There are no limits on the number of memory regions that can be mapped other than the limit imposed on the process's virtual address space.
When the name argument doesn't begin with a slash, mq_open() creates or opens a message queue with the specified name relative to the current working directory of the calling process. This name appears in the file system and is visible to other functions that take pathnames as arguments.
When the name begins with a slash, the message queue name isn't visible in the filesystem.
Additional slash characters other than the leading slash simply form the name used to identify the message queue:
Any bits other file permission bits in the mode argument are ignored.
When mq_open() is called with mq_attr set to NULL, the default message queue attributes are set as follows:
mq_maxmsg | 1024 |
mq_msgsize | 4096 |
If the value of msg_len passed to mq_receive() is greater than SSIZE_MAX, the message is stored in the supplied buffer, and the length of the selected message is returned.
The mq_setattr() function doesn't OR any implementation-defined flags with O_NONBLOCK for the mq_flags member.
The O_TRUNC flag for open() has no effect on file types other than regular files.
The Trace (TRC) option isn't supported, so QNX Neutrino doesn't support the following:
For finite values of x less than 0 and finite non-integer values of y, pow(), powf(), and powl() return NaN. The return value for a correct value that would cause underflow is 0.0.
The QNX Neutrino implementation of pthread_attr_destroy() doesn't set an invalid value.
There are no additional implementation-defined condition variable attributes for pthread_condattr_destroy() and pthread_condattr_init() to destroy or initialize, and no additional functions for getting or setting such attributes.
The SCHED_OTHER policy is implemented identically to the SCHED_RR policy. The pthread_getschedparam() and pthread_setschedparam() functions affect only the priority scheduling parameter.
The pthread_setschedparam() function supports dynamically changing the policy to SCHED_SPORADIC.
The Thread Execution Scheduling (TPS) option is supported, so a thread that calls pthread_rwlock_rdlock() doesn't acquire the lock if a writer holds the lock or there are writers blocked on the lock. The maximum number of simultaneous read locks is 2147483647.
The TPS option is supported, so if threads executing with the SCHED_FIFO, SCHED_RR, or SCHED_SPORADIC are waiting on a lock, they acquire the lock in priority order when a call to pthread_rwlock_unlock() means that the lock becomes available. For threads of equal priority, write locks take precedence over read locks.
There are no additional implementation-defined read-write lock attributes, so there are no functions in addition to pthread_rwlockattr_getpshared() and pthread_rwlockattr_setpshared() for getting or setting such attributes.
For special device files, a subsequent read() request after the end-of-file condition has been reached results in 0 bytes being read.
When the value of nbyte is greater than SSIZE_MAX, the number of bytes read is limited to LONG_MAX − offset, where offset is the current file offset.
An EIO error may be returned if the filesystem resides on a removable media device, and the media has been forcibly removed.
When x is infinite or y is zero and the other is non-NaN, remainder(), remainderf(), and remainderl() return NaN.
For remquo(), remquof(), and remquol(), the value of n used to determine the magnitude of the result is 31. The return value when x is +/-Inf or y is zero and the other argument is non-NaN is NaN.
The current rounding mode used is determined by invoking the fegetround() function in the implementation of the rint(), rintf(), and rintl() functions.
When a correct value would cause an underflow, scalbln(), scalblnf(), scalblnl(), scalbn(), scalbnf(), and scalbnl() return 0.0.
When the name argument to sem_open() doesn't begin with a slash character, the semaphore is created with a name that consists of the specified name prepended with the current working directory.
Additional slash characters other than the leading slash character aren't interpreted, and the specified name, including these slash characters, is used to identify the semaphore.
Valid strings for the locale argument to setlocale() are:
When the locale string is set to "", the default native environment is the POSIX locale.
When the name argument doesn't begin with a slash, shm_open() creates or opens a shared memory object with the specified name relative to the current working directory of the calling process. This name appears in the file system and is visible to other functions that take pathnames as arguments.
Additional slash characters in the name cause the shared memory object be created with a pathname equivalent to name:
The intermediate directories corresponding to each slash-separated component have only read and search permissions.
When SA_SIGINFO isn't set in the sa_flags member of the sigaction structure passed to sigaction(), the disposition of subsequent occurrences of a pending signal aren't affected.
If you've used signal() to register a function to handle a signal, then when the signal occurs, it's blocked.
SIGBUS may be generated for a misaligned memory access:
When there are multiple pending instances of a single signal number prior to a call to sigwait(), all but one of the pending instances remain pending after a successful return of the sigwait() function.
If x is +/-Inf, sin(), sinf(), and sinl() return NaN.
For finite values of x < -0, sqrt(), sqrtf(), and sqrtl() return NaN. The return value when x is -Inf is NaN.
No additional or alternative file access control mechanisms are provided, so there are no implementation-defined reasons for stat() to fail.
The strtod(), strtof(), and strtold() functions don't interpret an n-char sequence, and the result is equivalent to specifying nan or NAN without the n-char sequence.
No other subject sequences beyond those specified are accepted.
The strtol() and strtoll() don't accept any other subject sequences beyond those specified.
The strtoul() and strtoull() functions don't accept any other subject sequences beyond those specified by the standard.
For a correct value that would cause an underflow, tan(), tanf(), and tanl() return 0.0. The return value when x is +/-Inf is NaN.
When x is a negative integer, tgamma(), tgammaf(), and tgammal() return NaN. The return value when x is -Inf is NaN.
The timer_create() function fails if the clock ID corresponds to the CPU-time clock of a process or thread different from the process or thread invoking the function.
After TMP_MAX names have been generated, tmpnam() reuses names that have been previously generated:
If the TZ environment variable isn't set when you call tzset(), the value of the implementation-defined _CS_TIMEZONE confstr() string is used as the default time zone.
If no _CS_TIMEZONE string is set, the default timezone UTC0 is used.
The communications network for the nodename reported by uname() is primarily a TCP/IP network.
If the networking server has QNX Neutrino Transparent Distributed Processing (“Qnet”) enabled, the nodename is used to identify the node within the network of nodes that are able to communicate via the Qnet protocol.
Each member of the utsname structure is a 257-byte array:
This member: | Contains the: |
---|---|
sysname[] | OS name: "QNX" |
nodename[] | Host name in an unspecified format |
release[] | OS release level "6.4.x" |
version[] | Build date of the OS kernel as generated by a date +%Y/%m/%d-%T%Z command |
machine[] | Name of the hardware platform, in an unspecified format |
The official product name of the OS is “QNX Neutrino”, not simply “QNX”. |
When the value of nbyte is greater than SSIZE_MAX, the number of bytes written by the write() function is limited to LONG_MAX − offset, where offset is the current file offset.
An EIO error may be returned if the filesystem resides on a removable media device, and the media has been forcibly removed.
The following functions have POSIX-sounding names, but aren't part of a POSIX standard. Some have a suffix of “_np”, which stands for for “non-POSIX.”
For more information about classification, see the Full Safety Information appendix in the HTML version of the QNX Neutrino Library Reference, as well as the entries for individual functions.