Appendix: What's New in this Reference?

This appendix includes:

What's new in QNX Momentics 6.3.2?

Errata

clock()
This function returns the number of clock ticks, or (clock_t) -1 if the number of ticks couldn't be determined or exceeds the maximum value that the clock_t type can represent.
GETIOVBASE(), GETIOVLEN()
The argument to these macros is a pointer to an iov_t structure.

What's new in the QNX Neutrino Core OS 6.3.2?

Significant changes:

New Content

posix_typed_mem_get_info(), posix_typed_mem_open()
New functions for POSIX support of memory-mapping.
pthread_getname_np(), pthread_setname_np()
The pthread_getname_np() function retrieves the name of a thread. The pthread_setname_np() function names a thread in your application.
pthread_attr_getstackprealloc(), pthread_attr_setstackprealloc()
Get and set the memory to preallocate for a MAP_LAZY stack.
munmap_flags()
New function to unmap previously mapped addresses exercising more control.
SchedCtl()
Control the adaptive partitioning scheduler
SIGEV_CLEAR_CRITICAL()
In adaptive partitioning, make a thread run as noncritical. See sigevent.
SIGEV_GET_TYPE()
Determine the type of a sigevent event. See sigevent.
SIGEV_MAKE_CRITICAL()
In adaptive partitioning, make a thread run as critical. See sigevent.

Changed Content

ChannelCreate()
If you're using adaptive partitioning and you set _NTO_CHF_FIXED_PRIORITY, the receiving thread won't run in the sending thread's partition.
getrlimit(), getrlimit64(), setrlimit(), setrlimit64()
Added the following resources:
iofunc_open_default()
The documentation now describes the extra argument.
mlock(), mlockall(), munlock()
The documentation now describes the POSIX support for memory mapping.
mmap()
The documentation now includes a new MAP_NOINIT flag.
msync()
The documentation now describes new MS_CACHE_ONLY flag.
posix_mem_offset(), posix_mem_offset64()
The documentation now describes the POSIX support for memory-mapping.
sigevent
In the future, the library might use hidden bits in the sigev_notify member of the sigevent structure. Don't compare this member directly to values such as SIGEV_PULSE; use the SIGEV_GET_TYPE() macro.
spawn()
The documentation now describes the SPAWN_EXPLICIT_CPU flag and the runmask member of the inheritance structure.
ThreadCtl()
The documentation now contains the following commands:

What's new in QNX Neutrino 6.3.0 Service Pack 2?

New Content

cache_fini()
Free cache-coherency resources when the driver is unloaded.
CACHE_FLUSH()
Flush cache line associated to a data buffer.
cache_init()
Register with the cache coherency library.
CACHE_INVAL()
Invalidate cache line associated to a data buffer.

Changed Content

mq_close(), mq_getattr(), mq_notify(), mq_open(), mq_receive(), mq_send(), mq_setattr(), mq_timedreceive(), mq_timedsend(), mq_unlink()
Added information about the traditional (mqueue) and alternate (mq) implementations of message queues.
nanospin(), nanospin_calibrate(), nanospin_count(), nanospin_ns(), nanospin_ns_to_count()
The nanospin*() functions are designed for use with hardware that requires short time delays between accesses. You should use them to delay only for times less than a few milliseconds. For longer delays, use the POSIX timer_*() functions.
pci_attach_device(), pci_find_class(), pci_find_device()
For a list of supported device and vendor IDs, see <hw/pci_devices.h>; for a list of class and subclass codes, see <hw/pci.h>.

Errata

_cmdname()
Corrected the information about what this function returns.
openlog()
Corrected the name of the LOG_FTP facility.
pci_attach_device()
The BusNumber and DevFunc members of the pci_dev_info structure are input/output.
pci_irq_routing_options()
This function is for x86 only.
sem_close(), sem_open(), sem_unlink()
Named semaphores are now managed by procnto, not mqueue.
thread_pool_create()
The description of the block_func member of the thread_pool_attr_t structure has been corrected.
vfprintf(), vprintf()
The code samples now compile without warnings.

What's new in QNX Neutrino 6.3.0 Service Pack 1?

New content

asyncmsg_channel_create()
Create an asynchronous message channel.
asyncmsg_channel_destroy()
Destroy an asynchronous message channel.
asyncmsg_connect_attach()
Establish a connection between a process and a channel.
asyncmsg_connect_attr()
Return the original connection attributes.
asyncmsg_connect_detach()
Break a connection between a process and a channel.
asyncmsg_flush()
Flush the messages sent through the connection.
asyncmsg_free()
Free a message buffer.
asyncmsg_get()
Receive an asynchronous message.
asyncmsg_malloc()
Allocate a message buffer for sending.
asyncmsg_put(), asyncmsg_putv()
Send asynchronous messages to a connection.
shm_ctl_special()
Give special attributes to a shared memory object

Changed content

getdomainname()
If the buffer isn't large enough, getdomainname() truncates the domain name.
getgrouplist()
The Neutrino implementation of this function ignores the basegid argument.
mallopt()
The MALLOC_CKACCESS, MALLOC_FILLAREA, and MALLOC_CKCHAIN options were added to this call.
MsgReply(), MsgReply_r(), MsgReplyv(), MsgReplyv_r()
The MsgSend*_r() functions use negative errno values to indicate failure, so you shouldn't pass a negative value for the status to MsgReply*(), because the MsgSend*_r() functions could interpret it as an error code.
name_attach()
The example now handles an _IO_CONNECT message.
nanospin(), nanospin_ns(), and nanospin_ns_to_count()
The first time that you call these functions, the C library invokes nanospin_calibrate() with an argument of 0 (interrupts enabled), unless you call it directly first.
pci_attach_device()
Added PCI_MASTER_ENABLE to the flags.
procmgr_daemon()
The data in the siginfo_t structure for the SIGCHLD signal that the parent receives isn't useful in this case.
rsrcdbmgr_create()
Added RSRCDBMGR_FLAG_NOREMOVE to the flags.
setenv()
This function doesn't free any memory. If you want to change the value of an existing environment variable, you should use putenv() instead.
sigevent
If you don't want to modify the priority of the thread that receives the pulse, specify SIGEV_PULSE_PRIO_INHERIT for the priority when you call SIGEV_PULSE_INIT().
spawn(), spawnp()

Errata

getsubopt()
Corrected the example.
mq_notify()
Don't use SIGEV_INTR as an event type.
pause()
This function suspends the calling thread, not the process, until delivery of a signal.
pthread_setschedparam()
regexec()
Corrected the description of the regmatch_t structure.
sched_get_priority_max(), sched_get_priority_min(), sched_setscheduler(), SchedInfo(), SchedSet()
The timeslice for round-robin scheduling (SCHED_RR) is 4 * the clock period.
sched_setscheduler(), SchedSet()
You can specify sporadic scheduling at any time, not just when you create a thread.
spawn(), spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnp(), spawnv(), spawnve(), spawnvp(), spawnvpe()
The child process can't access the parent process's environment, only its own.

What's new in QNX Neutrino 6.3.0?

New content

fopen64()
Large-file support for fopen().
freopen64()
Large-file support for freopen().
ftw64()
Large-file support for ftw().
getnameinfo()
Perform address-to-nodename translation.
inet6_option_*()
Manipulate IPv6 hop-by-hop and destination options.
inet6_rthdr_*()
manipulate IPv6 Router header options.
ipsec_dump_policy()
Generate a readable string from an IPsec policy specification.
ipsec_get_policylen()
Get the length of the IPsec policy.
ipsec_set_policy()
Generate an IPsec policy specification structure from a readable string.
nftw(), nftw64()
Walk a file tree and its large-file support.
poll()
Input/output multiplexing.
resmgr_handle_tune()
Tune aspects of client fd-to-OCB mapping
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.
tmpfile64()
Large-file support for tmpfile().

What's new in QNX Neutrino 6.2.1?

New content

dispatch_unblock()
Unblock all of the threads that are blocked on a dispatch handle
errno
Each thread in a multi-threaded program has its own error value in its thread local storage. No matter which thread you're in, you can simply refer to errno -- it's defined in such a way that it refers to the correct variable for the thread. For more information, see "Local storage for private data" in the documentation for ThreadCreate().
pthread_attr_setschedpolicy().
Sporadic scheduling (SCHED_SPORADIC) is a new feature of QNX Neutrino 6.2.0.
sched_param
Structure of scheduling parameters
va_copy()
Make a copy of a variable argument list

Changed content

bind(), bindresvport()
These functions aren't cancellation points any more, because this conflicted with POSIX.
htonl(), htons(), inet_ntop(), inet_pton(), isfdtype(), ntohl(), ntohs()
These functions have been moved from libsocket to libc.

Errata

alphasort()
This function compares two directory entries; it doesn't sort an array of entries.
execlpe(), execvpe()
You can now execute a shell script.
fgetc(), fgetchar(), fgets(), fgetwc(), fgetws(), getc(), getc_unlocked(), getchar(), getchar_unlocked(), gets(), getw(), getwc(), getwchar()
Use feof() or ferror() to distinguish an end-of-file condition from an error.
fstat(), fstat64()
These functions return -1 if an error occurs.
iofunc_mmap(), iofunc_mmap_default()
These functions return a nonpositive value on success.
InterruptAttach(), InterruptAttachEvent()
You should always set _NTO_INTR_FLAGS_TRK_MSK.
mq_getattr(), mq_setattr()
The mq_flags member of the mq_attr structure applies to the message-queue description (i.e. locally), not to the queue as a whole.
mq_open()
Corrected the interpretation of the name argument.
MsgError(), MsgError_r()
If the error argument is EOK, the MsgSend*() call returns EOK; if error is any other value, the MsgSend*() call returns -1.
MsgSendPulse(), MsgSendPulse_r()
You can now send pulses across the network.

You can send a pulse to any process -- not just to a process in the same process group -- if your process has the appropriate permission.

name_open()
This function returns a nonnegative integer representing a side-channel connection ID, or -1 if an error occurred.
printf()
The exponent produced for the e and E formats is at least two digits long.

Clarified what happens if the format string includes invalid multibyte characters.

pthread_mutex_timedlock(), pthread_rwlock_timedrdlock(), pthread_rwlock_timedwrlock()
The timeout is based on the CLOCK_REALTIME clock.
_resmgr_ocb()
Corrected the name.
select()
This function and the associated macros are now defined in <sys/select.h>, instead of <sys/time.h> (which includes <sys/select.h>).
sem_open()
Corrected the interpretation of the sem_name argument.
sem_timedwait()
The timeout is based on the CLOCK_REALTIME clock.
send()
The list of errors now includes EPIPE.
shm_open()
Corrected the interpretation of the name argument.
sigaction()
Corrected the example (it isn't safe to call printf() in a signal handler).
spawn(), spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnp(), spawnv(), spawnve(), spawnvp(), spawnvpe()
You can now execute a shell script.

The child process's tms_utime, tms_stime, tms_cutime, and tms_cstime are now calculated.

timer_create()
Don't use SIGEV_INTR or SIGEV_UNBLOCK for the event type.
vsnprintf()
Corrected the returned values.

What's new in QNX Neutrino 6.2?

Significant changes:

New Content

addrinfo
TCP/IP address information
dircntl()
Control an open directory
freeaddrinfo()
Free an address information structure
freeifaddrs()
Free an address information structure
gai_strerror()
Return the getaddrinfo() error code
getaddrinfo()
Get address information
getdomainname()
Get the domain name of the current host
gethostbyname2()
Get a network host entry, given a name
getifaddrs()
Get a network interface address
hwi_find_item()
Find an item in the hwi_item structure
hwi_find_tag()
Find a tag in the hwi_item structure
hwi_off2tag()
Return a pointer to the start of a tag in the hwinfo area of the system page
hwi_tag2off()
Return the offset from the start of the hwinfo area of the system page
ICMP6
Internet Control Message Protocol for IPv6
if_freenameindex()
Free dynamic memory allocated by if_nameindex()
if_indextoname()
Map an interface index to its name
if_nameindex()
Return a list of interfaces
if_nametoindex()
Map an interface name to its index
ifaddrs()
Structure that describes an Internet host
INET6
Internet Protocol version 6 family
inet_net_ntop()
Convert an Internet network number to CIDR format
inet_net_pton()
Convert an Internet network number from CIDR format to network format
IPv6
Internet Protocol version 6
IPsec
Internet security protocol
mallinfo()
Get memory allocation information
mallopt()
Control the memory allocation
mcheck()
Enable memory allocation routine consistency checks
memalign()
Allocate aligned memory
mprobe()
Perform consistency check on memory
posix_memalign()
Allocate aligned memory
procmgr_session()
Provide process manager session support
_resmgr_handle_grow()
Expand the capacity of the device manager database
_resmgr_io_func()
Retrieve an I/O function from an I/O function table
resmgr_iofuncs()
Extract the I/O function pointers associated with c connection
_resmgr_ocb()
Retrieve an Open Control Block
sched_get_priority_adjust()
Calculate the allowable priority for the scheduling policy
seekdir()
Set the position for the next read of the directory stream
_sleepon_broadcast()
Wake up multiple threads
_sleepon_destroy()
Destroy a sleepon
_sleepon_init()
Initialize a sleepon
_sleepon_lock()
Lock a sleepon
_sleepon_signal()
Wake up a single thread
_sleepon_unlock()
Unlock a sleepon
_sleepon_wait()
Wait on a sleepon
tcsetsid()
Make a terminal device a controlling device
strtoimax(), strtoumax()
Convert a string to an integer type
telldir()
Get the location associated with the directory stream
valloc()
Allocate a heap block aligned on a page boundary
wcstoimax(), wcstoumax()
Convert a wide-character string to an integer type

Deprecated Content

Errata

snprintf()
Corrected the Returns section and Classifications

What's new in the QNX Neutrino 6.1.0 docs?

Significant changes:

New content

The following functions have been added:

Wide-character functions
Wide-character versions of many functions
InterruptHookTrace()
Attach the pseudo interrupt handler that's used by the instrumented module
iofdinfo()
Retrieve server attributes
iofunc_fdinfo()
Handle an _IO_FDINFO message
iofunc_fdinfo_default()
Default handler for _IO_FDINFO messages
MsgVerifyEvent(), MsgVerifyEvent_r()
Check the validity of a receive ID and an event configuration
resmgr_unbind()
Remove an OCB
straddstr()
Concatenate one string on to the end of another
SyncCtl(), SyncCtl_r()
Perform an operation on a synchronization object
SyncMutexEvent(), SyncMutexEvent_r()
Attach an event to a mutex
SyncMutexRevive(), SyncMutexRevive_r()
Revive a mutex
thread_pool_control()
Control the thread pool behavior
thread_pool_limits()
Wrapper function for thread_pool_control()
TraceEvent()
Trace kernel events

Deprecated content

matherr()
Handle errors in math library functions