This appendix includes:
- 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.
 
Significant changes:
- 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.
 
- 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:
  
- RLIMIT_MEMLOCK
  
 
- RLIMIT_NPROC
  
 
- RLIMIT_NTHR
  
 
- RLIMIT_OFILE
  
 
- RLIMIT_RSS
  
 
 
- 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:
- _NTO_TCTL_NAME
 
- _NTO_TCTL_ONE_THREAD_HOLD
 
- _NTO_TCTL_ONE_THREAD_CONT
 
- _NTO_TCTL_RUNMASK_GET_AND_SET
 
- _NTO_TCTL_RUNMASK_GET_AND_SET_INHERIT
 
 
- 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.
 
- 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>.
 
- _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.
 
- 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
 
- 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()
 
- Added descriptions of the rest of the flags for the
  inheritance structure.
  
 
- If you set SPAWN_EXEC in the flags member of
  the inheritance structure, these functions don't return,
  unless an error occurred.
  
 
 
- 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()
 
- The timeslice for round-robin scheduling (SCHED_RR)
  is 4 * the clock period.
  
 
- You can specify sporadic scheduling at any time, not just when you
    create a thread.
  
 
 
- 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.
 
- 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().
 
- 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
 
- 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.
 
- 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.
 
Significant changes:
- 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
 
- snprintf()
	
 
- Corrected the Returns section and Classifications
 
Significant changes:
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
 
- matherr()
  
 
- Handle errors in math library functions