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
- What's in this update?
- Updates and fixed issues
- Known issues
- Getting started with the documentation
- Technical support
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,
- Right-click the package in the QNX Software Center (QSC).
- 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
- QNX Momentics IDE User's Guide
- Software Development Platform
- QNX in the Cloud
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
withlibsocket
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
withVMware 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
andnet.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.
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:
- Open the IDE.
- Close and then reopen it.
To start the IDE:
- on Windows, choose 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.