QNX Neutrino 7.0

New entries

acl_get_perm_np()
Test whether a given permission is present in an ACL permissions set
alignas(), __alignas_is_defined
Specify the alignment of an object
aligned_alloc()
Allocate aligned memory
alignof(), __alignof_is_defined
Get the alignment of a type
at_quick_exit()
Register functions to be called during program termination via quick_exit()
ATOMIC_*_LOCK_FREE
Macros that indicate whether an atomic type is lock-free
atomic_*
Data types for atomic operations
atomic_compare_exchange_*()
Compare and potentially exchange the value of an atomic object
atomic_exchange(), atomic_exchange_explicit()
Atomically change the value of an atomic object
atomic_fetch_add(), atomic_fetch_add_explicit()
Atomically add to the value of an atomic object
atomic_fetch_and(), atomic_fetch_and_explicit()
Atomically AND a value into an atomic object
atomic_fetch_or(), atomic_fetch_or_explicit()
Atomically OR a value into an atomic object
atomic_fetch_sub(), atomic_fetch_sub_explicit()
Atomically subtract from the value of an atomic object
atomic_fetch_xor(), atomic_fetch_xor_explicit()
Atomically OR a value into an atomic object
atomic_flag_clear(), atomic_flag_clear_explicit()
Atomically clear a flag
atomic_flag_test_and_set(), atomic_flag_test_and_set_explicit()
Atomically set a flag
atomic_init()
Initialize an atomic object
atomic_is_lock_free()
Determine whether atomic operations on an object are lock-free
atomic_load(), atomic_load_explicit()
Atomically read the value of an atomic object
atomic_signal_fence()
Fence between a thread and a signal handler executed in the same thread
atomic_store(), atomic_store_explicit()
Atomically set the value of an atomic object
atomic_thread_fence()
Generic memory order-dependent fence synchronization primitive
c16rtomb(), c32rtomb()
Convert a wide character into a multibyte character
call_once()
Dynamic package initialization
CMPLX(), CMPLXF(), CMPLXL()
Compute the value of a complex number from its real and imaginary parts
cnd_broadcast()
Unblock threads waiting on a condition
cnd_destroy()
Destroy a condition variable
cnd_init()
Initialize a condition variable
cnd_signal()
Unblock a thread that's waiting on a condition variable
cnd_timedwait()
Wait on a condition variable, with a time limit
cnd_wait()
Wait on a condition variable
exp2(), exp2f(), exp2l()
Compute the base-2 exponential function of a number
feclearexcept()
Clear the specified floating-point status flags
fedisableexcept()
Mask the specified floating-point exceptions
feenableexcept()
Unmask the specified floating-point exceptions
fegetenv()
Get the current floating-point environment
fegetexceptflag()
Get the states of the specified floating-point status flags
fegetprec()
Get the current floating-point precision
fegetround()
Get the current floating-point rounding direction
feholdexcept()
Save the floating-point environment, clear all flags, and ignore future errors
feraiseexcept()
Raise the specified floating-point exceptions
fesetenv()
Set the current floating-point environment
fesetexceptflag()
Set the states of the specified floating-point status flags
fesetprec()
Set the floating-point precision
fesetround()
Set the floating-point rounding direction
fetestexcept()
Determine which of the specified floating-point status flags are set
feupdateenv()
Restore the floating-point environment and raise any previously raised exceptions
fdim(), fdimf(), fdiml()
Compute the positive different between two floating-point numbers
fma(), fmaf(), fmal()
Multiply two floating-point numbers and then add a third number
fmax(), fmaxf(), fmaxl()
Determine the maximum of two floating-point numbers
fmin(), fminf(), fminl()
Determine the minimum of two floating-point numbers
_fnmatchv()
Check to see if a file or path name, given as an I/O vector, matches a pattern
fpclassify()
Categorize a floating-point number
fs_crypto_domain_add_dynamic()
Create a dynamic encryption domain and unlock it if requested
fs_crypto_domain_add_flags()
Create an encryption domain and unlock it if requested
fs_crypto_domain_hard_lock()
Lock a domain
fs_crypto_domain_lock_dynamic()
Lock a dynamic domain
fs_crypto_domain_remove_dynamic()
Destroy a dynamic domain
fs_crypto_domain_unlock_dynamic()
Unlock a dynamic domain
fs_crypto_domain_whitelist_configure()
Perform whitelist configuration for a domain whitelist
fs_crypto_domain_whitelist_ctrl()
Perform a control action for a domain whitelist
fs_crypto_domain_whitelist_ctrl_access_grant()
Grant a client access to a domain
fs_crypto_domain_whitelist_ctrl_access_revoke()
Revoke a client's access to a domain
fs_crypto_domain_whitelist_get_flags()
Get the flags for a domain whitelist
fs_crypto_domain_whitelist_set_flags()
Set the flags for a domain whitelist
fstatat()
Get information about a file or directory
futimens()
Set the access and modification times for a file
hwi_find_compatible()
Find a specific instance of an item
InterruptAttachArray()
Attach an interrupt handler (that returns an array of sigevents) to an interrupt source
_IO_READ_GET_NBYTES()
Calculate the number of bytes specified in a io_read_t message; see iofunc_read_verify()
_IO_WRITE_GET_NBYTES()
Calculate the number of bytes specified in a io_write_t message; see iofunc_write_verify()
iofunc_attr_init_sized()
Initialize the per-name attribute structure associated with a device
iofunc_mount_fini()
Clean up the iofunc_mount_t structure
iofunc_mount_init()
Initialize the iofunc_mount_t structure
iofunc_set_time()
Set the timestamp resolution for iofunc functions and structures
iofunc_stat_format()
Populate a stat structure, specifying the form
isgreater()
Determine whether one floating-point number is greater than another
isgreaterequal()
Determine whether one floating-point number is greater than or equal to another
isless()
Determine whether one floating-point number is less than another
islessequal()
Determine whether one floating-point number is less than or equal to another
islessgreater()
Determine whether one floating-point number is less than or greater than another
isnormal()
Determine whether a floating-point number is normal
isunordered()
Determine whether a floating-point number is unordered
log2(), log2f(), log2l()
Compute the base-2 logarithm of a number
llrint(), llrintf(), llrintl()
Round a floating-point number to the nearest integer value, using the current rounding direction
llround(), llroundf(), llroundl()
Round a floating-point number to the nearest integer value
lrint(), lrintf(), lrintl()
Round a floating-point number to the nearest integer value, using the current rounding direction
lround(), lroundf(), lroundl()
Round a floating-point number to the nearest integer value
max_align_t
A type whose alignment requirement is at least as strict as that of every scalar type
mbrtoc16(), mbrtoc32()
Convert a wide character into a multibyte character
memory_order
Enumerated type for how regular, non-atomic memory accesses are to be ordered around an atomic operation
mkdtemp()
Make a unique temporary directory name
mkostemp(), mkostemps()
Make a unique temporary filename and open the file, specifying some flags
mkstemps()
Make a unique temporary filename that includes a suffix, and then open the file
MsgSendPulsePtr(), MsgSendPulsePtr_r()
Send a pulse (containing a pointer) to a process
mtx_destroy()
Destroy a mutex
mtx_init()
Initialize a mutex
mtx_lock()
Lock a mutex
mtx_timedlock()
Lock a mutex, with a time limit
mtx_trylock()
Attempt to lock a mutex
mtx_unlock()
Unlock a mutex
nan(), nanf(), nanl()
Return a quiet NaN
nearbyint(), nearbyintf(), nearbyintl()
Return a rounded integer value
nexttoward(), nexttowardf(), nexttowardl()
Compute the next representable floating-point number
procmgr_set_type_id()
Allows a function to change its own type identifier
posix_spawn_file_actions_addopen()
Add an “open a file” action to a spawn file action object. This function is now fully implemented.
posix_spawnattr_gettypeid()
Get the type identifier of a spawn attributes object
posix_spawnattr_settypeid()
Set the type identifier of a spawn attributes object
pthread_mutex_consistent()
Mark as consistent the state that's protected by a mutex
pthread_mutexattr_getrobust()
Get the robust attribute from a mutex attribute object
pthread_mutexattr_setrobust()
Set the robust attribute in a mutex attribute object
pthread_rwlockattr_getclock()
Get the clock attribute from a read-write lock attribute object
pthread_rwlockattr_setclock()
Set the clock attribute in a read-write lock attribute object
quick_exit()
Exit the calling program without completely cleaning up resources
_readdir64_r()
Read a directory and get stat information
readdir64_r()
Read a directory (reentrant)
recvmmsg()
Receive multiple messages from a socket
remquo(), remquof(), remquol()
Compute the floating point remainder
resmgr_detach_ctp()
Remove a pathname from the pathname space
scalbln(), scalblnf(), scalblnl()
Load the exponent of a radix-independent floating point number
SchedGetCpuNum()
Get the index of the CPU that a thread is currently running on
sendmmsg()
Send multiple messages to a socket
signbit()
Determine whether a floating-point number is negative
slog2_find_buffer()
Find the handle for a buffer with a given name
static_assert()
Display a diagnostic message at compile time
stpcpy()
Copy a string and return a pointer to the end of the result
stpncpy()
Copy a fixed-length string and return a pointer to the end of the result
strcasestr()
Find one string inside another, ignoring case
shutdown_system_with_reason()
Shut down the system, after saving a string that explains why.
SignalKillSigval(), SignalKillSigval_r()
Send a signal to a process group, process, or thread
slog2_hash()
Convert an input string into an obfuscated non-reversible hash string
slog2_obfuscate()
Obfuscate file and directory names by replacing some characters
SysSrandom(), SysSrandom_r()
Install a source of entropy for the kernel's pseudorandom number generator
tgamma(), tgammaf(), tgammal()
Compute the gamma function of a number
thrd_create()
Create a thread
thrd_current()
Get the calling thread's ID
thrd_detach()
Detach a thread from a process
thrd_equal()
Compare two thread IDs
thrd_exit()
Terminate a thread
thrd_join()
Join thread
thrd_sleep()
Make a thread sleep
thrd_yield()
Yield to other ready threads at the same priority
ThreadCtlExt(), ThreadCtlExt_r()
Control a thread, specifying the process and thread IDs.
timespec_get()
Get the number of seconds and nanoseconds since a given epoch
trunc(), truncf(), truncl()
Round to a truncated integer value
tss_create()
Create a thread-specific storage key
tss_delete()
Delete thread-specific storage
tss_get()
Get a thread-specific data value
tss_set()
Set a thread-specific data value
utimensat()
Set the access and modification times for a file
vslog2fa()
Log a printf-style string in a slog2 buffer (varargs)

Discontinued

Instead of using: Use:
atoh(string) strtoul(string, NULL, 16)
chsize() ftruncate()
eof() Check the result of read()
fgetchar() fgetc(stdin)
flushall() fflush(NULL)
fp_exception_mask() fedisableexcept(), feenableexcept()
fp_exception_value() fetestexcept()
fp_precision() fegetprec(), fesetprec()
fp_rounding() fegetround(), fesetround()
fputchar() fputc(c, stdout)
gamma() lgamma()
getprio() pthread_getschedparam() or SchedGet()
mphys() mem_offset()
pci_*() See the PCI Server User's Guide
setprio() pthread_setschedparam() or SchedSet()
strcmpi(), stricmp() strcasecmp()
strnicmp() strncasecmp()
strnset(), strset() memset()
tell(), tell64() lseek(fd, 0, SEEK_CUR)

The following have no direct replacement:

Changed content

64-bit architecture
The prototypes for the following have changed:

The data types have changed for some members of the following:

Math library (libm)
We've replaced the math library, resulting in changes to the following:
aio_read()
The asynchronous operation now gives an error of EISDIR if the given file descriptor is for a directory.
cache_init()
If you specify NULL for the DLL name, this function now uses the library specified by the LIBCACHE_DLL_PATH environment variable, instead of constructing a name and searching the library paths for it.
chroot()
  • The ability to change the root directory is now controlled by the PROCMGR_AID_CHROOT ability, which you can set by calling procmgr_ability().
  • This function now changes the current working directory to the given path.
ConnectAttach(), ConnectFlags()
There's a new _NTO_COF_NOEVENT flag that prevents the server from sending sigevents over the channel to the client. This is a security measure that you should typically use when a higher-privileged process is connecting to a lower-privileged process's channel. Only the client can clear this bit.
ConnectClientInfo(), ConnectClientInfoAble(), ConnectClientInfoExt()
  • The flags member of the _client_info structure can now include these bits:
    • _NTO_CI_BITS_64 — the sender is using a 64-bit architecture.
    • _NTO_CI_CHROOTchroot() has been applied to the client process.
    • _NTO_CI_SANDBOX — the client process has been constrained to a sandbox.
  • If an ability ID is a temporary one (i.e., it has PROCMGR_AID_UNCREATED ORed into it), ConnectClientInfoAble() looks it up again. If the ability has been created, ConnectClientInfoAble() replaces the temporary ID with the permanent one; otherwise it marks the ability as denied.
ConnectFlags()
  • The ability to request information about another process is now controlled by the PROCMGR_AID_XPROCESS_QUERY ability enabled, which you can set by calling procmgr_ability().
  • Only the kernel can clear the _NTO_COF_INSECURE flag.
errno
  • We've set the value of EALREADY to 237, and removed EALREADY_OLD, EALREADY_NEW, and EALREADY_DYNAMIC, which we added to smooth the transition to the new value of EALREADY.
  • We've added ENOTRECOVERABLE.
fcntl()
We've implemented the F_DUPFD_CLOEXEC command, which is similar to F_DUPFD but also sets FD_CLOEXEC.
flock()
We've corrected the behavior of this function: if you open the same file multiple times in a process, an flock() on one file descriptor referring to a file now locks out an flock() on a different fd.
fnmatch()
The flags can now include FNM_CASEFOLD (a BSD extension) and FNM_LEADING_DIR (a GNU extension).
fopen()
You can now add x to the w and w+ specifiers to prevent this function from overwriting the file if it already exists.
fpathconf()
The configurable limits now include _PC_CASE_PRESERVING and _PC_CASE_SENSITIVE.
ioctl()
We've deleted the unimplemented SIOCDARP, SIOCGARP, and SIOCSARP commands.
iofunc_attr_t
This structure now includes mtime_ns, atime_ns, and ctime_ns fields that hold the nanosecond values for the POSIX time members, mtime, atime, and ctime.
iofunc_lock()
As a QNX Neutrino extension, F_FLOCK is ORed into the l_type member of the flock structure to indicate that the message originated as a call to flock() instead of a call to fcntl(). Your resource manager can check this bit and behave appropriately.
iofunc_lseek()
We've changed the zero member of _io_lseek to flags. The only flag is currently _IO_LSEEK_IGNORE_NON_SEEKABLE.
iofunc_notify()
  • There's a new _NOTIFY_ACTION_EDGEARM action that considers input conditions as met only if new data has arrived since the last call to ionotify() with this action.
  • This function now also handles _IO_NOTIFY64 messages.
iofunc_ocb_t
The flags member can now include the IOFUNC_OCB_MMAP_UNIQUE bit, a hint for the mmap() handler to provide a unique mapping.
iofunc_read_verify()
  • This function now also handles _IO_READ64 messages.
  • The xtype can now include _IO_XTYPE_READDIR.
  • The xtype can now include a flag (_IO_XFLAG_DIR_STAT_FORM_*) that specifies the type of stat structure to return when reading from a directory.
iofunc_stat_default()
The _io_stat structure now includes a format member, and iofunc_stat_default() fills in the corresponding form of struct stat.
iofunc_utime()
This function now also handles _IO_UTIME64 messages.
iofunc_write_verify()
This function now also handles _IO_WRITE64 messages.
ionotify()
There's a new _NOTIFY_ACTION_EDGEARM action that considers input conditions as met only if new data has arrived since the last call to ionotify() with this action.
j0(), j1(), jn()
These functions are now in libm.
lio_listio()
The number of entries in the list array is now limited only by memory. You can use any type of sigevent if the mode is LIO_NOWAIT.
mallopt_flags()
Because the virtual memory manager doesn't support MAP_NOINIT, this function no longer refers to the MALLOC_MMAP_NOZERO environment variable.
mem_offset(), mem_offset64()
These functions now succeed only if the memory in question is locked; they set errno to EAGAIN if the memory is unlocked.
mktemp()
We've adopted the OpenBSD implementation of this function, which generates file names that are less predictable. As a result, the template must now include at least six “X” wildcard characters, and the error codes have changed. Note that POSIX 2008.1 removed the specification for this function.
mmap(), mmap_device_memory(), mprotect()
  • The mmap() function now enforces the POSIX requirement that you specify either MAP_SHARED or MAP_PRIVATE.
  • In order to simultaneously set PROT_EXEC and PROT_WRITE, your process must have the PROCMGR_AID_PROT_WRITE_AND_EXEC ability enabled (in addition to PROCMGR_AID_PROT_EXEC).
  • The new virtual memory manager doesn't support MAP_NOINIT, MAP_BELOW16M, or MAP_NOX64K. You can use typed memory instead of MAP_BELOW16M.
  • We've deleted the long-deprecated MAP_PRIVATEANON flag. Use MAP_PRIVATE | MAP_ANON instead.
_msg_info
The flags field can now include the following:
  • _NTO_MI_BITS_64 — the sender is using a 64-bit architecture.
  • _NTO_MI_BITS_DIFF — the sender and receiver are using different word-size architectures.
  • _NTO_MI_CHROOTchroot() has been applied to the client process.
  • _NTO_MI_SANDBOX — the client process has been constrained to a sandbox.
MsgKeyData()
There's a new _NTO_KEYDATA_CALCULATE_REUSE flag that lets you reuse a previously generated key.
msync()
There's a new MS_CLEAN_ONLY flag that makes the function operate only on clean pages.
munmap_flags()
Because the virtual memory manager doesn't support MAP_NOINIT, this function no longer supports UNMAP_INIT_OPTIONAL or UNMAP_INIT_REQUIRED. There are currently no flags defined for this function.
open()
O_CLOEXEC and O_NOFOLLOW are now defined by POSIX.
pathconf()
The configurable limits now include _PC_CASE_PRESERVING and _PC_CASE_SENSITIVE.
posix_madvise()
There's a new POSIX_MADV_DISCARD_NP flag that makes the virtual memory manager discard the backing store for lazy private mappings (similar to madvise(MADV_DONTNEED) in Linux).
posix_spawn()
  • You can now pass a relative path to this function.
  • The POSIX_SPAWN_PADDR64_SAFE extended flag is no longer supported. Use typed memory for specific allocations.
pread()
This function now gives an error of EISDIR if the given file descriptor is for a directory.
procmgr_ability()
The new abilities include:
  • PROCMGR_AID_CHANNEL_CONNECT
  • PROCMGR_AID_CHROOT
  • PROCMGR_AID_MAC_POLICY
  • PROCMGR_AID_POWER
  • PROCMGR_AID_PROT_WRITE_AND_EXEC
  • PROCMGR_AID_RLIMIT_PEER
  • PROCMGR_AID_SANDBOX
  • PROCMGR_AID_SETTYPEID
  • PROCMGR_AID_SRANDOM
  • PROCMGR_AID_XPROCESS_QUERY
  • PROCMGR_AID_XTHREAD_THREADCTL

This function now gives an error of ENXIO if the process indicated by pid is no longer valid.

procmgr_ability_lookup()
If you look up an ability that hasn't yet been created, the identifier that this function returns includes the PROCMGR_AID_UNCREATED bit. You can use the temporary identifier with ConnectClientInfoAble() (which will see if the ability has been created and give you a permanent identifier), but not with procmgr_ability().
procmgr_event_notify(), procmgr_event_notify_add(), procmgr_event_trigger()
  • The new flags include:
    • PROCMGR_EVENT_PROCESS_DEATH — be notified of every process that dies.
    • PROCMGR_EVENT_APS_BANKRUPTCY — be notified when an adaptive partition goes bankrupt.
  • We've updated the examples to use /proc/pid/ctl instead of /proc/pid/as.
pthread_mutex_init()
This function now returns EOK instead of EBUSY if you initialize a mutex that's already been initialized.
pthread_mutex_lock(), pthread_mutex_timedlock(), pthread_mutex_trylock(), pthread_mutex_unlock()
The behavior of these functions now depends on whether or not you're using a robust mutex; see pthread_mutexattr_settype().
read(), readblock(), readv()
These functions now give an error of EISDIR if the given file descriptor is for a directory.
resmgr_attach()
There's a new _RESMGR_FLAG_DETACH_CTP flag that indicates that the manager will use resmgr_detach_ctp() on the path.
ROUTE protocol
We've updated the data structures and the list of flags.
SchedCtl()
  • The following control commands are new:
    • SCHED_CONT_APP — make an app continue
    • SCHED_STOP_APP — stop an app
  • The following commands are no longer supported:
  • The SCHED_APS_SCHEDPOL_NO_LONG_REPORTING scheduling policy is no longer supported.
  • For SCHED_APS_CREATE_PARTITION:
    • If you don't specify a name for the partition, it's set to the partition's ID. If you provide a name, it must be no longer than APS_PARTITION_NAME_LENGTH, not including the trailing null character, can't start with a digit, and can't include any slashes (/).
    • You can use the new budget_percent_scale member of the sched_aps_create_parms structure to specify the number of digits to the right of the decimal point in budget_percent.
  • The SCHED_APS_BNKR_LOG and SCHED_APS_BNKR_RECOMMENDED responses for bankruptcy are no longer supported.
setrlimit()
There's a new RLIMIT_NOCONN_NP limit that specifies the maximum number of connections that a process can create.
shm_ctl(), shm_ctl_special()
  • We've clarified the circumstances in which you can call these functions.
  • Memory defragmentation isn't currently supported, so the SHMCTL_NODEFRAG flag has no effect.
  • The meanings of the bits in the special argument for shm_ctl_special() for ARM processors have changed.
  • We've discontinued SHMCTL_ISADMA; use typed memory instead.
  • We've discontinued SHMCTL_NOX64K; manually align the memory instead.
shm_open()
You can now create an anonymous shared memory object by specifying SHM_ANON for the name.
shutdown_system()
The shutdown type now includes SHUTDOWN_SHELFMODE.
sigevent
  • There are now 32- and 64-bit versions of this structure, along with several new macros for initializing it:
    • SIGEV_PULSE_INT_INIT()
    • SIGEV_PULSE_PTR_INIT()
    • SIGEV_SIGNAL_CODE_INT_INIT()
    • SIGEV_SIGNAL_CODE_PTR_INIT()
    • SIGEV_SIGNAL_VALUE_INT_INIT()
    • SIGEV_SIGNAL_VALUE_PTR_INIT()
  • You can no longer use a sigevent to make a thread run as critical when you're using adaptive partitioning. As a result, we've removed the following:
    • the SIGEV_FLAG_CRITICAL bit
    • the SIGEV_MAKE_CRITICAL() and SIGEV_CLEAR_CRITICAL() macros
slog2*()
We've discontinued the <slog2.h> file, which simply included <sys/slog2.h>. You should include <sys/slog2.h> instead.
slog2_register()
  • We've documented the SLOG2_DISCARD_NEWLINE and SLOG2_TRY_REUSE_BUFFER_SET flags.
  • The flags can now include SLOG2_HINT_SKIP_BUFFER_0, SLOG2_HINT_SKIP_BUFFER_1, SLOG2_HINT_SKIP_BUFFER_2, and SLOG2_HINT_SKIP_BUFFER_3. They're hints to ignore buffer 0 through 3, respectively, when parsing. To force the parsing of these hidden/skipped buffers, invoke slog2info with the -v option.
socket()
There's a new SOCK_CLOEXEC bit that you can OR into the type to make the socket close if the program calls one of the exec*(), posix_spawn*(), or spawn*() functions.
spawn()
  • The SPAWN_PADDR64_SAFE extended flag is no longer supported. Use typed memory for specific allocations.
  • You no longer need to set the SPAWN_SEARCH_PATH flag, although it's still used internally.
stat
There are now several different versions of this structure, depending on the architecture (32- or 64-bit) and the version of POSIX.
SyncMutexLock()
This function now indicates an error of EOWNERDEAD if the owner of the lock died while holding it.
ThreadCtl()
  • There's a new _NTO_TCTL_SHR_MUTEX command that sets the new _NTO_TF_SHR_MUTEX and _NTO_TF_SHR_MUTEX_EUID flags that control if and how a thread shares mutexes. If you don't set either flag, the thread doesn't share mutexes with any threads outside its process. This is the default setting for procnto's threads; for threads in other processes, the default is _NTO_TF_SHR_MUTEX.
  • There's a new _NTO_TCTL_LOW_LATENCY flag that hints to the scheduler that it should schedule the thread on the same CPU as the one that the kernel is currently on.
timer_settime(), timer_timeout(), TimerSettime(), TimerTimeout()
You can now use the timer tolerance to specify a high-resolution timer. For more information, see Tolerant and high-resolution timers in the “Understanding the Microkernel's Concept of Time” chapter of the QNX Neutrino Programmer's Guide.
TimerInfo()
The ability to request information about another process is now controlled by the PROCMGR_AID_XPROCESS_QUERY ability, which you can set by calling procmgr_ability().
y0(), y1(), yn()
These functions are now in libm.