Errata

clock_settime()
An error of EINVAL could mean that the tv_sec member of the timespec structure is set to -1.
getopt()
We've corrected the "Returns" section of this entry.
InterruptAttach()
This function currently ignores the size argument.
malloc()
  • The default value for MALLOC_ARENA_CACHE_MAXBLK is 12, not 8.
  • We've corrected the description of MALLOC_MMAP_NOZERO. If this environment variable is nonzero, then when malloc() needs to expand the heap, it specifies the MAP_NOINIT flag when it calls mmap(); if the physical memory being mapped was previously unmapped with UNMAP_INIT_OPTIONAL, then the POSIX requirement that the memory be zeroed is relaxed. This environment variable has been supported on all architectures since QNX Neutrino 6.3.2.
mprotect()
In QNX Neutrino 6.4.0 and later, the addr argument isn't const.
mq_open()
We've corrected the description of how this function interprets the name argument.
MsgDeliverEvent()
We've corrected the server.c part of the example so that it handles the IO_CONNECT message sent because of the usage of name_attach().
MsgReceive(), MsgReply(), MsgSend(), MsgSendnc()
The value of SSIZE_MAX is 231 − 1, not 232 − 1.
MsgSendPulse()
If you send a pulse across the network, the calling thread is blocked (STATE_NET_SEND) while the pulse is delivered to the local Qnet manager, which transmits it to the remote Qnet. The remote Qnet does a MsgSendPulse() on behalf of the caller, and the return value is transmitted back, at which point the calling thread is unblocked.
munlockall()
The full POSIX implementation for this function was added in the QNX Neutrino Core OS 6.3.2, but the documentation wasn't updated.
posix_memalign()
The alignment argument must be a multiple of size( void * ) that's also a power of 2.
pthread_cond_init()
In QNX Neutrino 6.4.0 and later, the attr argument is declared as const pthread_condattr_t *.
pthread_mutex_lock()
This function's behavior when you try to lock a mutex that you already own depends on the type of the mutex. For more information, see the entry for pthread_mutexattr_settype().
pthread_mutex_unlock()
We've corrected the description of the adjustments to a thread's priority when it unlocks a mutex. If the thread's priority was raised when a higher-priority thread attempted to lock the mutex, the calling thread's priority is again adjusted when it unlocks the mutex; its new priority is the maximum of its own priority and the priorities of those threads it still blocks, either directly or indirectly.
pthread_mutexattr_getprotocol(), pthread_mutexattr_setprotocol()
PTHREAD_PRIO_NONE was implemented in QNX Neutrino 6.4.0. This protocol means that owning the mutex doesn't affect the priority and scheduling of a thread.
putenv()
The type of the env_name argument is char *, not const char *.
pwrite()
We've corrected the list of error codes for this function.
random(), srandom()
We've corrected some numbers that should have been 2nn, not 2nn.
SchedCtl()
We've corrected the name of SCHED_APS_SEC_OFF.
seekdir()
If you call rewinddir() on the directory stream, or if you close and reopen the directory, an offset previously returned by telldir() becomes invalid.
sem_open()
We've corrected the description of how this function interprets the name argument.
send(), sendmsg(), sendto()
We've corrected the list of error codes for these functions.
shm_ctl(), shm_ctl_special()
We've corrected the spelling and description of SHMCTL_HIGHUSAGE.
shm_open()
This function indicates an error of EINVAL if an underlying call to resmgr_open_bind() fails.
signal()
Since signal-catching functions are invoked asynchronously with process execution, you need to take into account the same sort of things that you would in a multithreaded program when inspecting or manipulating shared resources; you might have to call InterruptLock() or InterruptUnlock(), but these functions aren't portable.

If a process sets the action for the SIGCHLD signal to SIG_IGN, its children won't enter the zombie state and the process can't use wait() or waitpid() to wait on their deaths.

SignalAction()
The default action for SIGTSTP, SIGTTIN, and SIGTTOU is to stop the process.
sleep()
POSIX doesn't define any errors for this function.
spawn(), spawnp()
The value of argv[0] can't be NULL.
strptime()
We corrected the call to memset() in the example.
tell64()
We've corrected the synopsis of this function.
ThreadCreate()
To get a pointer to the thread local storage, call __tls().
timer_settime()
In QNX Neutrino 6.4.0 and later, the value argument is of type const struct itimerspec *.
unsetenv()
In QNX Neutrino 6.4.0 and later, this function returns 0 for success, or -1 if an error occurred.
wordexp()
This function returns WRDE_NOSYS; it doesn't set errno.
write()
We've corrected the list of error codes for this function.