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:
- _cmdfd()
- ds_clear()
- ds_create()
- ds_deregister()
- ds_flags()
- ds_get()
- ds_register()
- input_line()
- pccard_*()
- posix_spawnattr_addpartid()
- posix_spawnattr_addpartition()
- posix_spawnattr_getpartid()
Changed content
- 64-bit architecture
- The prototypes for the following have changed:
- mallopt()
- memcpyv()
- MsgRead(), MsgRead_r()
- MsgReadv(), MsgReadv_r()
- MsgReceive(), MsgReceive_r()
- MsgReceivePulse(), MsgReceivePulse_r()
- MsgReceivePulsev(), MsgReceivePulsev_r()
- MsgReceivev(), MsgReceivev_r()
- MsgReply(), MsgReply_r()
- MsgReplyv(), MsgReplyv_r()
- MsgSend(), MsgSend_r()
- MsgSendnc(), MsgSendnc_r()
- MsgSendsv(), MsgSendsv_r()
- MsgSendsvnc(), MsgSendsvnc_r()
- MsgSendv(), MsgSendv_r()
- MsgSendvnc(), MsgSendvnc_r()
- MsgSendvs(), MsgSendvs_r()
- MsgSendvsnc(), MsgSendvsnc_r()
- MsgWrite(), MsgWrite_r()
- MsgWritev(), MsgWritev_r()
- resmgr_msgread()
- resmgr_msgreadv()
- resmgr_msgreply()
- resmgr_msgwrite()
- resmgr_msgwritev()
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:
- acos(), acosf(), acosl()
- acosh(), acoshf(), acoshl()
- asin(), asinf(), asinl()
- asinh(), asinhf(), asinhl()
- atan(), atanf(), atanl()
- atan2(), atan2f(), atan2l()
- atanh(), atanhf(), atanhl()
- cabs(), cabsf()
- cbrt(), cbrtf(), cbrtl()
- ceil(), ceilf(), ceill()
- copysign(), copysignf(), copysignl()
- cos(), cosf(), cosl()
- cosh(), coshf(), coshl()
- erf(), erff(), erfl()
- erfc(), erfcf(), erfcl()
- exp(), expf(), expl()
- expm1(), expm1f(), expm1l()
- fabs(), fabsf(), fabsl()
- floor(), floorf(), floorl()
- fmod(), fmodf(), fmodl()
- frexp(), frexpf(), frexpl()
- hypot(), hypotf(), hypotl()
- ilogb(), ilogbf(), ilogbl()
- j0(), j0f()
- j1(), j1f()
- jn(), jnf()
- ldexp(), ldexpf(), ldexpl()
- lgamma(), lgamma_r(), lgammaf(), lgammaf_r(), lgammal(), lgammal_r()
- log10(), log10f(), log10l()
- log1p(), log1pf(), log1pl()
- logb(), logbf(), logbl()
- log(), logf(), logl()
- modf(), modff(), modfl()
- nextafter(), nextafterf(), nextafterl()
- pow(), powf(), powl()
- remainder(), remainderf(), remainderl()
- rint(), rintf(), rintl()
- round(), roundf(), roundl()
- scalbn(), scalbnf(), scalbnl()
- scalb()
- sin(), sinf(), sinl()
- sinh(), sinhf(), sinhl()
- sqrt(), sqrtf(), sqrtl()
- tan(), tanf(), tanl()
- tanh(), tanhf(), tanhl()
- y0(), y0f()
- y1(), y1f()
- yn(), ynf()
- 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_CHROOT — chroot() 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_CHROOT — chroot() 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.