QNX Neutrino 7.0 documentation update October 2017

New entries

dl_iterate_phdr()
Iterate over the shared objects that are loaded into a process's address space

Changed content

clock_gettime()
You can pass CLOCK_PROCESS_CPUTIME_ID or CLOCK_THREAD_CPUTIME_ID as the clock_id argument to this function. These are special clock IDs that refer to the CPU time of the calling process and thread, respectively.
clock_settime()
You can't set the time for a process or thread CPU-time clock.
ClockTime()
  • You can pass CLOCK_PROCESS_CPUTIME_ID or CLOCK_THREAD_CPUTIME_ID as the clock_id argument to this function. These are special clock IDs that refer to the CPU time of the calling process and thread, respectively.
  • You can't set the time for a process or thread CPU-time clock.
devctlv()
This function returns EOVERFLOW if the sum of the IOV lengths for the send and receive buffers combined exceeds INT_MAX, or the number of parts for the send and receive buffers combined exceeds 524288.
dispatch_create_channel()
This function now has a flags argument. Currently the only defined flag is DISPATCH_FLAG_CHANNEL_COIDDEATH.
fcntl()
We've updated the list of file status flags for the F_GETFL and F_SETFL commands.
mmap()
Don't have a shared, writable mapping to a file that you're simultaneously accessing via write(). The interaction between the two methods isn't well defined and may give unexpected results.
MsgKeyData(), MsgKeyData_r()
These functions indicate an error of EINVAL if the number of IOV parts exceeds 524288, or the op argument is invalid.
MsgReadv(), MsgReadv_r(), MsgReceivePulsev(), MsgReceivePulsev_r(), MsgReceivev(), MsgReceivev_r(), MsgReplyv(), MsgReplyv_r(), MsgSendsv(), MsgSendsv_r(), MsgSendsvnc(), MsgSendsvnc_r(), MsgSendv(), MsgSendv_r(), MsgSendvnc(), MsgSendvnc_r(), MsgSendvs(), MsgSendvs_r(), MsgSendvsnc(), MsgSendvsnc_r(), MsgWritev(), MsgWritev_r()
These functions indicate an error of EOVERFLOW if the sum of the IOV lengths exceeds INT_MAX, or the number of parts exceeds 524288.
MsgReceive(), MsgReceive_r(), MsgReply(), MsgReply_r(), MsgSend(), MsgSend_r(), MsgSendnc(), MsgSendnc_r()
The maximum size for a one-part message depends on the architecture:
  • For 32-bit architectures, it's SSIZE_MAX (i.e., 231 − 1) bytes.
  • For 64-bit architectures, the API allows up to SSIZE_MAX (i.e., 263 − 1) bytes, but the virtual address space limits the size to 239 bytes.
pulse_attach()
We've described the circumstances in which this function can indicate an error of EBUSY.
resmgr_context_t
We've described the extra member. The _extended_context structure that it points to now includes a data member that a resource manager can use to point to any additional data that it needs.
resmgr_msgreadv(), resmgr_msgreplyv(), resmgr_msgwritev()
These functions indicate an error of EOVERFLOW if the sum of the IOV lengths exceeds INT_MAX, or the number of parts exceeds 524288.
SchedCtl()
We've explained how the SCHED_CONT_APP and SCHED_STOP_APP commands interact with the _NTO_TCTL_ONE_THREAD_CONT and _NTO_TCTL_ONE_THREAD_HOLD commands for ThreadCtl().
sendmsg()
You typically use this function on datagram (SOCK_DGRAM) sockets, which use the send buffer only as a length check and place the message in the interface transmit queue. If the interface transmit queue is full, sendmsg() returns -1 and sets errno to ENOBUFS.
shutdown_system()
After sending a SIGTERM signal to a process, this function sends a SIGCONT signal, in case the process had earlier been stopped.
stat()
This function now indicates an error of EINVAL if it couldn't convert the format of the stat structure received from the resource manager to _STAT_FORM_PREFERRED.
struct stat
We've added the octal values for the flags in the st_mode member.
ThreadCtl()
We've explained how the _NTO_TCTL_ONE_THREAD_CONT and _NTO_TCTL_ONE_THREAD_HOLD commands interact with the SCHED_CONT_APP and SCHED_STOP_APP commands for SchedCtl().
vfork()
Note that we provide this function for backward compatibility. You should use posix_spawn() instead.

Errata

c16rtomb(), c32rtomb()
These functions are declared in <uchar.h>.
confstr()
We've corrected the description of what this function returns.
dlerror()
This function returns NULL if no dynamic-linking errors have occurred since it was last invoked.
fcntl()
There's no detection for deadlocks involving file locks; this function doesn't set errno to EDEADLK.
fs_crypto_file_set_domain()
In order for you to assign a domain to a file or directory, the domain must be unlocked.
fs_crypto_migrate_path(), fs_crypto_migrate_tag()
In order for you to tag files for migration, the source and destination domains must be unlocked.
getpwent(), getpwent_r(), getpwnam(), getpwnam_r(), getpwuid(), getpwuid_r()
We've corrected the description of how these functions indicate errors. The reentrant (*_r()) forms return error codes; the nonreentrant forms set errno.
iofunc_sync_verify()
O_RSYNC isn't a valid flag for this function.
kill()
For a process to have permission to send a signal to a process, the real or effective user ID of the sending process must match the real or saved set-user ID of the receiving process, or the sending process must have the PROCMGR_AID_SIGNAL ability enabled.
mbrtoc16(), mbrtoc32()
These functions are declared in <uchar.h>.
MsgReceive(), MsgReceivePulse(), MsgReceivePulsev(), MsgReceivev()
These functions have cancellation points.
mtx_lock(), mtx_trylock()
These functions are declared in <threads.h>.
printf()
We've corrected the descriptions of the L length specifier and the effect of the precision specifier on the F type specifier.
procmgr_ability()
We've corrected the description of PROCMGR_AID_TIMER. It controls the ability to create a timer that sends a pulse to a process belonging to a different user.
strdup()
This function sets errno if an error occurs.
thrd_create()
We've deleted a note that didn't apply to this function.
thrd_join()
This function returns thrd_success on success.
timer_create(), TimerCreate()
In order to create a timer that sends a pulse to a process belonging to a different user, your process must have the PROCMGR_AID_TIMER ability enabled.
utimensat()
O_SEARCH isn't implemented.