QNX Neutrino 6.4.0

New entries

dirent
Data structure for a directory entry.
dispatch_create_channel()
Allocate a dispatch handle, specifying a channel ID.
insque()
Insert an element into a doubly linked queue
isfinite()
Determine if a number is finite
MsgCurrent()
Resume processing of a message.
posix_spawn(), posix_spawnp()
Spawn a process
posix_spawn_file_actions_addclose()
Add a "close a file descriptor" action to a spawn file actions object
posix_spawn_file_actions_adddup2()
Add a "duplicate a file descriptor" action to a spawn file actions object
posix_spawn_file_actions_destroy(),
Destroy a spawn file actions object
posix_spawn_file_actions_init()
Initialize a spawn file actions object
posix_spawnattr_addpartid()
Specify the ID of a resource partition that the spawned process should be associated with
posix_spawnattr_addpartition()
Specify the name of a resource partition that the spawned process should be associated with
posix_spawnattr_destroy()
Destroy a spawn attributes object
posix_spawnattr_getcred()
Get the user and group ID attributes from a spawn attributes object
posix_spawnattr_getflags()
Get the POSIX flags from a spawn attributes object
posix_spawnattr_getnode()
Get the remote node attribute from a spawn attributes object
posix_spawnattr_getpartid()
Retrieve the partition identifiers currently set in a spawn attributes object
posix_spawnattr_getpgroup()
Get the process group attribute of a spawn attributes object
posix_spawnattr_getrunmask()
Get the runmask attribute from a spawn attributes object
posix_spawnattr_getschedparam()
Get the scheduling parameters attribute of a spawn attributes object
posix_spawnattr_getschedpolicy()
Get the scheduling policy attribute of a spawn attributes object
posix_spawnattr_getsigdefault()
Get the "default signals" attribute of a spawn attributes object
posix_spawnattr_getsigignore()
Get the "ignored signals" attribute from a spawn attributes object
posix_spawnattr_getsigmask()
Get the signal mask attribute of a spawn attributes object
posix_spawnattr_getstackmax()
Get the maximum stack size attribute from a spawn attributes object
posix_spawnattr_getxflags()
Get the POSIX flags and the QNX Neutrino extended flags from a spawn attributes object
posix_spawnattr_init()
Initialize a spawn attributes object
posix_spawnattr_setcred()
Set the user and group ID attributes in a spawn attributes object
posix_spawnattr_setflags()
Set the POSIX flags in a spawn attributes object
posix_spawnattr_setnode()
Set the remote node attribute in a spawn attributes object
posix_spawnattr_setpgroup()
Set the process group attribute in a spawn attributes object
posix_spawnattr_setrunmask()
Set the runmask attribute in a spawn attributes object
posix_spawnattr_setschedparam()
Set the scheduling parameters attribute of a spawn attributes object
posix_spawnattr_setschedpolicy()
Set the scheduling policy attribute of a spawn attributes object
posix_spawnattr_setsigdefault()
Set the "default signals" attribute of a spawn attributes object
posix_spawnattr_setsigignore()
Set the "ignored signals" attribute of a spawn attributes object
posix_spawnattr_setsigmask()
Set the signal mask attribute of a spawn attributes object
posix_spawnattr_setstackmax()
Set the maximum stack size attribute in a spawn attributes object
posix_spawnattr_setxflags()
Set the POSIX flags and the QNX Neutrino extended flags in a spawn attributes object
remque()
Remove an element from a doubly linked queue.
RMSK_CLR(), RMSK_ISSET(), RMSK_SET(), and RMSK_SIZE()
You can use these macros to work with the runmask for the _NTO_TCTL_RUNMASK_GET_AND_SET_INHERIT command for ThreadCtl(). For more information, see the entry for ThreadCtl().
strptime()
Convert a string into a time.

Discontinued

rsrcdbmgr_query()
Use rsrcdbmgr_query_name() instead.
sctp_bindx()
Add or remove one or more addresses from a given association.
sctp_connectx()
Help associate an endpoint that is multi-homed.
sctp_freeladdrs()
Free all resources allocated by sctp_getladdrs().
sctp_freepaddrs()
Free all resources allocated by sctp_getpaddrs().
sctp_getladdrs()
Return all locally bound addresses on a socket.
sctp_getpaddrs()
Return all peer addresses in an association.
sctp_peeloff()
Branch off an association into a separate socket.
SCTP
Stream Control Transmission Protocol.
sctp_recvmsg()
Receive message using advanced SCTP features.
sctp_sendmag()
Send message using advanced SCTP features.

Changed content

aio_cancel(), aio_error(), aio_fsync(), aio_read(), aio_return(), aio_suspend(), aio_write(), aiocb
These functions are now fully implemented and documented.
_amblksiz
We've described how you can change the value of this variable.
encrypt()
This function now lets you encrypt or decrypt the given string, depending on the flags argument. It isn't safe to call this function from a signal handler or from a multithreaded program.
errno
  • There's a new value, EOWNERDEAD, that indicates that the owner of a lock died while holding it.
  • The value of EALREADY is changing so that it will be POSIX-compliant; for more information, see "Changes to EALREADY" in the documentation for errno.
getaddrinfo(), gethostbyname()
If a name server isn't responding, there's a timeout of 1.5 minutes per name server.
getcwd()
If you call getcwd( NULL, 0), this function allocates a buffer for the name of the directory. POSIX doesn't specify this behavior, but it's common practice.
ioctl()
We've added a summary of how ioctl() commands map to other function calls and devctl() commands.
malloc()
This entry now describes the environment variables that you can use to control the allocator's behavior.
mq_timedreceive(), mq_timedsend()
These functions set errno to EINVAL if the process or thread would have blocked, and the abs_timeout parameter specified a nanoseconds field value less than zero or greater than or equal to 1000 million.
procmgr_event_notify()
Now describes the PROCMGR_EVENT_CONFSTR and PROCMGR_EVENT_SYSCONF events.
pthread_attr_init()
We've updated the description of the default thread attributes. The names of the members of the pthread_attr_t now start with two underscores (__) in order to conform to POSIX.
pthread_cond_timedwait(), pthread_cond_wait()
In order to conform to POSIX, these functions now return EPERM instead of EINVAL if the current thread doesn't own the mutex.
pthread_mutex_init()
If you destroy a mutex by calling pthread_mutex_destroy(), don't reuse it without reinitializing it first.
pthread_mutex_timedlock()
This function now returns EOWNERDEAD if the owner of the lock died while holding it.
pthread_mutexattr_init()
The names of the members of the pthread_mutexattr_t now start with two underscores (__) in order to conform to POSIX.
pulse_attach()
We've added more information about the handler function.
readdir()
A returned value of NULL from this function is ambiguous; if you need to determine if it indicates an error (as opposed to the end of the directory stream), set errno to EOK before each call to this function.
rsrcdbmgr_attach()
The description of the rsrc_request_t structure now includes the RSRCDBMGR_FLAG_NAME and RSRCDBMGR_FLAG_LIST flags, and the name member.
rsrcdbmgr_create()
The description of the rsrc_alloc_t structure now includes the name member.
shm_ctl(), shm_ctl_special()
These functions have a new flag, SHMCTL_LAZY. Setting this flag delays allocating memory until it's referenced. If you create anonymous shared memory objects (by calling mmap() with MAP_ANON | MAP_SHARED and a file descriptor of -1), a MAP_LAZY flag implicitly sets the SHMCTL_LAZY flag on the object.

The shm_ctl_special() function also has new special flags for ARM platforms.

sigevent
The thread that receives a sigevent of type SIGEV_SIGNAL_THREAD depends on the functions associated with the sigevent.
socketpair()
The example of this function now points out that if you write to fd[0], you read from fd[1], and vice versa.
spawn(), spawnp()
The first three entries (if specified) of the fd_map argument become the child process's standard input, standard output, and standard error (stdin, stdout, and stderr).
spawn*()
There's a new SPAWN_PADDR64_SAFE flag that permits the selective application spawn of a task that's known to operate safely with 64-bit addressing or doesn't care about the physical memory location.
SyncTypeCreate()
The names of the members of the sync_t now start with two underscores (__) in order to conform to POSIX.
sysctl()
We've added instructions for determining the entries of the name array. For a list of commonly used variables, see the entry for sysctl in the Utilities Reference.

Errata

abort()
We've corrected the description of what this function does.
accept()
This function gives an error of EINVAL if you called accept() on a socket that you hadn't called listen() on.
bind()
This function sets errno to ENOTSOCK if the given file descriptor isn't for a socket.
brk()
Neutrino doesn't support swapping.
ClockCycles()
It is safe to call this function from an interrupt handler.
ConnectAttach(), ConnectAttach_r()
These functions can give an error of ENXIO.
struct dirent
The d_name member is defined as an array of one character; you have to allocate space for the name.
dlopen()
The runtime library search path specified by the -rpath option to ld is stored in the binary, not in an environment variable.
GETIOVBASE(), GETIOVLEN()
You need to include <sys/types.h>, or else you'll get errors when you compile because iov_t isn't defined.
InterruptAttach()
The documentation for this function no longer implies that Neutrino supports paging.
iofunc_fdinfo_default()
We've corrected the description of what this function returns.
iofunc_notify()
This function returns -1 on success to indicate to the resource manager library that it should return a one-part IOV to the client.
iofunc_openfd()
This function uses _IO_FLAG_* bits, not O_RDONLY, etc.
iofunc_lseek(), iofunc_lseek_default()
We've corrected the description of what these functions return.
iofunc_notify_trigger()
If the specified count is greater than or equal to the trigger count for the particular notification list element, this function calls MsgDeliverEvent() to deliver the event to the client.
malloc()
We've corrected the description of _amblksiz in the documentation for malloc().
mbsrtowcs(), mbstowcs()
The n argument to these functions is the number of wide characters, not the number of bytes.
mem_offset()
This function gives an error of EOVERFLOW (not E2BIG) if the address is too large for the 32-bit off_t.
mq_send()
If the number of elements on the specified queue is equal to its mq_maxmsg, and O_NONBLOCK wasn't set (in the oflag argument to mq_open()), the call to mq_send() blocks.
msync()
  • We've corrected the description of the MS_CACHE_ONLY flag (a QNX Neutrino extension).
  • This function sets errno to EINTR if the call is interrupted by a signal.
name_attach()
  • This function fails and sets errno to EEXIST if the specified path already exists.
  • If name_attach() creates a channel, the channel will have the _NTO_CHF_DISCONNECT, _NTO_CHF_COID_DISCONNECT and _NTO_CHF_UNBLOCK flags set.
name_close()
This function operates on a side-channel connection ID, not a file descriptor.
name_open()
This function doesn't attach to a name; it searches for the given name.
pathmgr_symlink()
The order of the arguments is now correct.
posix_mem_offset(), posix_mem_offset64()
We corrected the description of the contig_len argument.
posix_typed_mem_open()
The tflag argument is of type int.

We've corrected the details about the resolution of the name of the typed memory object.

pthread_barrier_wait()
This function returns PTHREAD_BARRIER_SERIAL_THREAD to one of the threads waiting at a barrier.
pthread_cond_timedwait()
We've corrected the example so that it runs correctly for timeouts of less than 1 second.
pthread_getname_np(), pthread_setname_np()
You don't have to be root in order to get or set a thread's name.
pthread_mutexattr_init()
We corrected the synopsis of this function.
pthread_mutex_lock()
You can allow recursive behavior by using pthread_mutexattr_setrecursive() to set the attribute to PTHREAD_RECURSIVE_ENABLE after calling pthread_mutex_init().
readdir_r()
This function doesn't set errno; it returns any error codes.
resmgr_context_t
The info member of this structure is a _msg_info structure, not a pointer to one.
resmgr_handle_tune()
This function is declared in <sys/resmgr.h>.
resmgr_io_funcs_t
We corrected the name and definition of the openfd member.
resmgr_iofuncs()
This function is declared in <sys/resmgr.h>, not <resmgr.h>.
_RESMGR_NPARTS()
This macro returns the negative of the number of parts (to distinguish the number from error codes that the resource manager's handler functions might return).
sbrk()
Neutrino doesn't support swapping.
SETIOV()
You need to include <sys/types.h>, or else you'll get errors when you compile because iov_t isn't defined.
shm_open()
You can't open shared memory across the network.
sigprocmask()
The classification for this function is POSIX 1003.1 CX.
snprintf(), sprintf(), sscanf(), swprintf(), swscanf()
It's safe to call these functions in a signal handler if the data isn't floating point.
socket()
This function sets errno to EAFNOSUPPORT if the specified address family isn't supported.
spawn()
We've corrected the description of the SPAWN_CHECK_SCRIPT flag in the inheritance structure.
SYSPAGE_ENTRY()
The sec variable in the example is now a double instead of a float.
timer_create()
We've corrected the description of CLOCK_SOFTTIME.
TimerTimeout()
The timeout value starts timing out when TimerTimeout() is called, not when the blocking state is entered. It might be possible to get preempted after calling TimerTimeout() but before the blocking kernel call.
wcstol(), wcstoll(), wcstoul(), wcstoull()
These functions are declared in <wchar.h>, not <stdlib.h>.