Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® SDP 7.1 Documentation Update, May 2023: Release Notes

Date of this edition: May 03, 2023

QNX SDP is a cross-compiling and debugging environment, including an Integrated Development Environment (IDE) and command-line tools, for building binary images and programs for ARM v7/v8 and x86_64 targets running the QNX Neutrino RTOS. To install this update, you must have installed the QNX Software Development Platform 7.1 on one of the following development hosts based on x86-64 processors:

  • Microsoft Windows 10 Pro 64-bit or 8.1 Pro 64-bit
  • macOS version 10.14 or 10.15
  • Linux Red Hat Enterprise Linux 7 64-bit, Ubuntu Desktop 18.04 LTS 64-bit, or Ubuntu Desktop 20.04 LTS 64-bit

Contents

Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.

What's in this update?

The PDF files are now available in the qpkg also. Following are the details for both of the packages:

Name Package ID Package internal version Build ID
QNX® SDP 7.1 Documentation com.qnx.qnx710.target.docs.plugins 0.0.6.01469T202304191459L 1469
QNX® SDP 7.1 PDF Documentation com.qnx.qnx710.target.docs.pdf 0.0.6.01306T202305011156L 1306

In the QNX Software Center (QSC):

  • the Plugins qpkg is under Updates -> QNX Software Development Platform -> Documentation
  • the PDF qpkg is under Available -> QNX Software Development Platform -> Documentation

and you can use the QNX Software Center to install the packages. After installation, the QSC stores all of the PDF files in the ~/qnx710/doc folder (Linux/macOS) or the C:Usersuseridqnx710doc directory (Windows).

To see a list of the contents of a package,

  1. Right-click the package in the QNX Software Center (QSC).
  2. Choose Properties, and then click Package Contents in the Properties window.

Updates and fixed issues

This update includes enhancements, fixed issues, and clarifications to the following QNX SDP documents:

General updates

Hypervisor section

  • We've added the "Hypervisor security" section to the System Security Guide. (Ref# J2888159)

Standardizing EACCES

  • We've standardized the definition of the EACCES error throughout the documents, except in the eaccess() function. (Ref# J2933413)

QNX in the Cloud

  • We've added a new book QNX in the Cloud to include details about the QNX Amazon Machine Image. (Ref# J2929676)

QNX Momentics IDE User's Guide

  • We've added a note to mention possible issues with the connection to the target to the "Creating a target connection" section in the "Working with QNX Momentics IDE " section in the "Working with QNX Momentics IDE" chapter. (Ref# J2905992)
  • We've fixed the broken links in the "Writing and building test programs" section in the "Unit Testing" chapter. (Ref# J2926570)

Software Development Platform

OS Components

Building Embedded Systems

  • We've edited the text for the "System reboot" (previously named "System reset") section in the "Kernel Callouts" chapter. (Ref# J2930785)
  • We've edited the description of the reboot function in the "System page" chapter. (Ref# J2930785)
  • We've edited the text and added a warning regarding /dev/text to the "Scripts" section in the "OS Image Buildfiles" chapter. (Ref# J2910438)

High Availability Framework Developer's Guide

  • We've removed all the references to HAM being extensible from the "Conditions" and "Actions" sections in the "Using the High Availability Manager" chapter. (Ref# J2927716)
  • We've edited the text for the Global entity in the "Entities" section in the "Using the High Availability Manager" chapter. (Ref# J2933350)
  • We've added a paragraph to describe that HAM API is not forksafe to the "HAM API References" chapter. (Ref# J2927114)

Persistent Publish/Subscribe Developer's Guide

  • We've updated the example that uses the ionotify() function in the "Examples" chapter. (Ref# J2926278)

SMMUMAN User's Guide

  • We've edited the text to clarify that the dependency of the Virtualization Technology for Directed I/O (VT-d) on the pci_server-qvm_support.so support file is for QNX Hypervisor for Safety systems running the QNX OS for Safety system, in the "Installing SMMUMAN" and "SMMUMAN components" sections in the "smmuman" and "SMMUMAN Architecture" chapters respectively. (Ref# J2766660)

System Architecture

  • We've added the "Memory Accounting" section to the "Process Manager" chapter. (Ref# J2766660)

User's Guide

  • We've added information about configuration for different scenarios to the "Account database" section in the "Managing User Accounts" chapter. (Ref# J2887229)
  • We've updated the priority information for system limits in the "Other system limits" section in the "Understanding System Limits " chapter. (Ref# J2932558)

Programming

Getting Started with QNX Neutrino

  • We've edited the text to state that the SIGEV_PULSE_PRIO_INHERIT parameter tells the kernel to set the receiving thread's priority to the priority the process was launched at in the "setupPulseAndTimer()" section in the "Clocks, Timers, and Getting a Kick Every So Often" chapter. (Ref# J2922585)
  • We've edited the text to delete any Qnet-related references in the "Finding the process manager" topic in the "Resource Managers" chapter. (Ref# J2918096)

Programmer's Guide

  • We've updated the text to emphasize security policies in the "Process privileges" section in the "Processes" chapter. (Ref# J2926881)
  • We've added a new page "User and group IDs" to describe process user and group IDs to the "Process privileges" section in the "Processes" chapter. (Ref# J2929841)
  • We've updated the description of access restrictions for the /proc filesystem in the "Controlling processes via the /proc filesystem" section in the "Processes" chapter. (Ref# J2929128)
  • We've edited the text to clarify that any process with the PROCMGR_AID_MEM_PHYS ability has read and write access to the memory in the "Typed memory" section in the "Working with Memory" chapter. (Ref# J2930953)
  • We've modified the warning in the "Controlling processes via the /proc filesystem" section in the "Processes" chapter. (Ref# J2927883)
  • We've updated the stack size of AArch64 to 256K in the "Stack allocation" section in the "Processes" chapter. (Ref# J2934226)
  • We've added the DCMD_PROC_ABILITIES command to the "Controlling processes via the /proc filesystem" section in the "Processes" chapter. (Ref# J2923033)

System Security Guide

  • We've added the -Wvla-larger-than and -msign-return-address options to the list in the "Compiler defenses" section in the "Security Features for Developers" chapter. (Ref# J2924126, 2918993)
  • We've deleted the comment indicating PROCMGR_AID_XPROCESS_DEBUG and PROCMGR_AID_XPROCESS_MEM_READ do not apply to root processes from the "Abilities" section in the "Security Features for System Integrators" chapter. (Ref# J2929128)
  • We've added the "Ability ranges" heading to the "Abilities" section in the "Security Features for System Integrators" chapter. (Ref# J2932670)
  • We've edited the text in the policy rules (to allow the secpolgenerate utility to work) and refined the text related to creating abilities in the "Tutorial" section in the "Security Policy" chapter. (Ref# J2928237, 2926869)
  • We've added 'Apply default rules' to types in the "Security policy language" section in the "Security Policy" chapter. (Ref# J2918899)
  • We've updated the links for related references throughout the "Security policy language" chapter. (Ref# J2928405)
  • We've added a section on creating memory regions in the startup to the "Named range file" section in the "Security Policy" chapter. (Ref# J2928693)
  • We've added the "Related reference" section to the secpol_get_type_id() function in the "The libsecpol API" section in the "Security Policy" chapter. (Ref# J2924150)
  • We've documented some best practices for creating/using security policies and mentioned the secpolgenerate utility in the "Using security policies" section in the "Security Policy" chapter. (Ref# J2813876)
  • We've elaborated on how the qcrypto config file explicitly finds a match in the "Configuration file" topic in the "QNX Cryptography Library" chapter. (Ref# J2928049)
  • We've deleted the mntperms option from the "Troubleshooting" section in the "PAM" chapter. (Ref# J2925479)
  • We've revised the code for the login and su utilities section in the "PAM" chapter. (Ref# J2934719)
  • We've removed the mntperms utility from the examples in the "Pathtrust option" and "QTD option" topics in the "Using mkqnximage to Display Security Features" chapter. (Ref# J2925479)

Utilities & Libraries

C Library Reference

The following functions have been added:

clearsockprefix() (io-pkt)
setsockprefix() (io-pkt)
We've added two new socket APIs. (Ref# J2891888)

The following functions and structures have been updated:

stat(), stat64()
We've included the ESRCH error in the list. (Ref# J2928559)
spawn()
spawnl()
spawnle()
spawnlp()
spawnlpe()
spawnp()
spawnv()
spawnve()
spawnvp()
spawnvpe()
We've edited the description for all of these functions. (Ref# J2926969)
ThreadCtl(), ThreadCtl_r(), ThreadCtlExt(), ThreadCtlExt_r()
We've updated the text for the _NTO_TCTL_IO, _NTO_TCTL_IO_LEVEL and _NTO_TCTL_IO_PRIV commands in the "Description" section. (Ref# J2919231)
We've updated a note for the _NTO_TCTL_THREADS_HOLD command for the ThreadCtl() function. (Ref# J2928211)
pthread_cond_wait()
SyncCondvarWait(), SyncCondvarWait_r()
We've added the text explaining spurious wakeups. (Ref# J2918165)
sigemptyset()
We've corrected the value to 0 in the "Returns" section. (Ref# J2917557)
SignalProcmask(), SignalProcmask_r()
We've removed the EAGAIN error code from the "Errors" section. (Ref# J2928340)
shm_ctl(), shm_ctl_special()
We've edited the text for flags in the "Arguments" section and updated the EINVAL and EPERM errors in the "Errors" section. (Ref# J2927953)
slog2_reset()
slog2c()
slog2f()
slog2fa()
vslog2f()
vslog2fa()
We've added a caution to warn against using the slog2_reset() function with the listed slog2() APIs. (Ref# J2927860)
inet_ntop()
We've replaced libc with libsocket in the "Library" section. (Ref# J2927149)
aiocb, aiocb64
pthread_cond_broadcast()
We've edited the text in the "Description" section. (Ref# J2924748, J2930816)
setgid()
setuid()
We've updated the text to reflect the complex behavior of these functions, outlining their behavior under various conditions and deleted the "Related links" section. (Ref# J2929391)
ConnectClientInfoAble()
We've edited the text for the nable variable in the "Arguments" section. (Ref# J2926872)
shm_open()
We've edited the text for the name variable and added O_ANON to the oflag variable to the "Arguments" section. (Ref# J2926771)
posix_spawn(), posix_spawnp()
We've edited the text for the ENOTSUP error in the "Errors" section. (Ref# J2925072)
timer_timeout(), timer_timeout_r()
TimerTimeout(), TimerTimeout_r()
We've edited the text to state that timers are cleared after every kernel call. (Ref# J2923490)
pthread_cond_wait()
pthread_cond_timedwait()
pthread_cond_clockwait()
SyncCondvarWait(), SyncCondvarWait_r()
SyncMutexLock(), SyncMutexLock_r()
We've removed the mention of the EAGAIN error from the list of errors. (Ref# J2927931)
recv()
recvmsg()
recvmmsg()
sendto()
sendmsg()
sendmmsg()
We've added the MSG_DONTWAIT, MSG_NOTIFICATION, and MSG_WAITFORONE flags to the "Arguments" section. (Ref# J2913407)
ConnectClientInfo(), ConnectClientInfo_r()
We've changed the description of the _NTO_CI_FULL_GROUPS flag. (Ref# J2913019)
ClockCycles()
We've added a note about the need to synchronize the hardware underlying ClockCycles() across all processors. (Ref# J2499154)
getsockopt()
We've added the SO_TS_CLOCK option to the list in the SOL_SOCKET option. (Ref# J2888649)
We've added the LOCAL_CREDS option to the list in the SOL_LOCAL option. (Ref# J2917168)
sigevent
We've added a note to the SIGEV_THREAD event type. (Ref# J2921038)
pthread_attr_setstack
pthread_attr_setstackaddr
We've added this note "If you provide a stack, take into consideration that the system takes up approximately 256 bytes" to the "Description" section. (Ref# J2923198)

Utilities Reference

The following entry is new:

ubus_ctrl
We've added documentation for the ubus_ctrl utility. (Ref# J2924078)

The following utilities have been updated:

devb-nvme
We've updated the apst = latency option. (Ref# J2900614)
elfnote
We've added the -q and -S size options.
We've updated the text for the -m value and -x [exec | noexec] options as well as the "Examples" section. (Ref# J2913391)
pidin
We've rewritten the text to explain an asterisk associated with the memory size. (Ref# J2909888)
We've added the _NTO_CHF_PULSE_POOL flag to the list of flags of the [ character in the "Format characters" section. (Ref# J2931468)
mkqnximage
We've replaced VMware Player with VMware Workstation Player. (Ref# J2889308)
aps
We've added the [-P critical_priority] code to the modify command. (Ref# J2922314)
bc
We've refined the text to fix the tagging and typographical errors. (Ref# J2930338)
qchecksec
We've edited the text for the FORTIFY option from the "Description" section. (Ref# J2927960)
deva-ctrl-intel_hda.so
We've deleted the NUC7i7BNH code from the board_name=board_name option. (Ref# J2893262)
secpollaunch
We've added the launch_if option to the list of options. (Ref# J2912886)
sshd
We've added the "Running sshd as non-root" section. (Ref# J2912884)
secpolgenerate
secpolpush
We've added the -r range_file option to the "Options" section. (Ref# J2892158)
io-pkt-v4-hc, io-pkt-v6-hc
We've added the -u string option to the "Options" section. (Ref# J2931163)
pipe
We've edited the text in the "Description" section. (Ref# J2931114)
startup-* options
We've edited the description for the -A option. (Ref# J2930785)
We've added a warning to the -r addr, size [,flag] option. (Ref# J2922355)
We've removed the documentation for the -o option. (Ref# J2916280)
secpol
secpolcompile
secpolgenerate
secpolpush
We've specifically mentioned importance of using the secpolgenerate file to develop security policies. (Ref# J2813876)
io-blk.so
We've added a warning to the mntperms= octal_permissions option. (Ref# J2912935)
io-pkt-v4-hc, io-pkt-v6-hc
We've added the ipid_reserved= X option. (Ref# J2903600)
sysctl
We've added the net.inet.ip.ipv4idrsvd and net.inet.tcp.tcp_syn_initial_rto variables. (Ref# J2903600, J2895031)
devnp-e1000.so
We've deleted the pauseignore and pausesuppress options. (Ref# J2928564)
on
We've added a note to the -t tty option. (Ref# J2934208)
sort
We've corrected the code block in the "Description" section. (Ref# J2908909)
mount
We've added the io-sock code to the list of possible values for the type option. (Ref# J2898181)

QNX in the Cloud

Getting Started with QNX Amazon Machine Image

  • We've described how to connect to an existing QNX AMI instance from your host computer and the QNX Momentics IDE in the "Connecting to an Existing QNX AMI Instance" chapter.
  • We've described how to use the Amazon EC2 Console to create and launch a QNX AMI instance in the "Launching a New QNX Amazon Machine Image Instance" chapter.
  • We've provided several customization options along with code blocks in the "Customizing the QNX Amazon Machine Image" chapter.
  • We've explained how to manage your resources if you are no longer using them in the "Managing Your Amazon Resources" chapter.

Known issues

The content for the following utility has a known issue:

io-audio
The description for the FAHQ option in the sw_mixer_rate option should read as follows:
FAHQ (First active high quality) — If the requested rate is equal to or less than 48 kHz or 44.1 kHz:
  • If the requested rate is a multiple of 4 kHz, select 48 kHz.
  • If the requested rate is a multiple of 11.025 kHz, select 44.1 kHz.
If the requested rate is greater than 48 kHz or 44.1 kHz (or the rate of 48 kHz or 44.1 kHz is not supported), search the sample rate range with the same method that is used for FA. (Ref# J2925854)

See also the QNX SDP 7.1 release notes.

Getting started with the documentation

After you've installed QNX SDP, you'll find an extensive set of HTML documentation in the Integrated Development Environment (IDE) help system.

Install the IDE as a new installation (latest version) from the QNX Software Center. To see the updated documents, perform the following quick steps:

  1. Open the IDE.
  2. Close and then reopen it.

To start the IDE:

  • on Windows, choose QNX Software Systems>QNX Momentics IDE from the Start menu, or use the desktop icon
  • on Linux, run the IDE_base_directory/qde file, the IDE_base_directory is where you installed the IDE package
  • on macOS, click the icon labeled QNX Momentics IDE from the launchpad

This launches the IDE.

The roadmap page contains links to the various HTML book sets that accompany the OS. For a short tutorial that will help you get started, see the Quickstart Guide, then refer to the other documents (System Architecture, QNX Neutrino Programmer's Guide, C Library Reference, Utilities Reference, and so on).

You can install and work with multiple versions of QNX Neutrino. Whether you're using the command line or the IDE, you can choose which version of the OS to build programs for. For more information, see the IDE User's Guide or the QNX Neutrino Programmer's Guide.

Technical support

To obtain technical support for any QNX product, visit the support area on our website: https://blackberry.qnx.com/en/support/qnx-support-overview. You'll find a wide range of support options.