QNX Technical Articles
QNX® SDP 7.0 Documentation Update February 2021: Summary of Updates
Date of this edition: February 5, 2021
QNX SDP is a cross-compiling and debugging environment, including an IDE and command-line tools, for building binary images and programs for ARM v7 and v8, and x86 and x86_64 targets running the QNX Neutrino RTOS 7.0. You can install QNX SDP on the following development hosts:
- Microsoft Windows 10 Pro 64-bit, Windows 8.1 Pro 64-bit, or Windows 7 Professional 64-bit
- macOS version 10.10, 10.11, 10.12
- Linux Red Hat Enterprise Linux 7 64-bit, Ubuntu Desktop 18.04 LTS 64-bit, or Ubuntu Desktop 16.04 LTS 64-bit, on x86_64 processors (QNX SDP 7 isn't supported on Linux on ARM processors)
Contents
Updates and fixed issues
This update to the webhelp includes enhancements, fixed issues, and clarifications to the following QNX SDP 7.0 documents:
- OS Core Components:
- Adaptive Partitioning User's Guide
- Building Embedded Systems
- Core Networking Stack User's Guide
- Device Publishers Developer's Guide
- High Availability Framework Developer's Guide
- Persistent Publish/Subscribe Developer's Guide
- QNX Neutrino User's Guide
- Security Developer's Guide
- SMMUMAN User's Guide
- System Architecture
- Audio & Graphics:
- Programming:
- Utilities & Libraries:
OS Core Components
Adaptive Partitioning User's Guide
- The sample build file in the Adaptive Partitioning User's Guide has been modified to demonstrate that the critical budget can be configured using the sched_aps command.
- We've corrected some typos that existed in the
Bankruptcy
andCritical threads
sections.
Building Embedded Systems
- The multiboot ability to read in options through the command-line has been documented.
- The sched_aps command has been added to the Scripts entry.
- We've updated the formula image to show the timer_rate term in the qtime entry.
- We've updated the guide to reflect x86 removal from SDP.
- We've added more information about GUIDs for partition types.
Core Networking Stack User's Guide
- We've added ETHER_NEXT_MULTI in the sample driver code at end of the while loop in sam_set_multicast().
Device Publishers Developer's Guide
- We've added two additional modifiers, %U and %P, to the Mounting filesystems entry.
- We've updated the USB launcher introduction to include -0 and -d Apple | Android options, and added Supported third-party applications.
High Availability Framework Developer's Guide
- The description of the ename argument in the ham_attach_self() entry has been updated.
- We've added the "Arguments" section to most of the entries in HAM API references.
Persistent Publish/Subscribe Developer's Guide
- We've replaced instances of <pps.h> with <sys/pps.h> in all functions.
QNX Neutrino User's Guide
- We've updated the
Where everything is stored
section. - The section about limits in the Power-Safe (fs-qnx6.so) filesystem entry has been revised as follows:
- We've listed all logical filesystem block sizes, up to 64K.
- For the maximum file size, we've explained how this limit depends on the block size but also the maximum filesystem size, and provided a table of maximum file sizes in relation to block sizes, for all supported file sizes, which go up to 128 TB.
- We've listed the maximum filesystem sizes in relation to block sizes, for all supported filesystem sizes, which go up to 128 TB.
Security Developer's Guide
- We've added information that was missing from the
Missing PAM Modules
section of the Identification and Authentication Control documentation. - We've updated the return values for secpol_transition_type() and secpol_check_permission().
SMMUMAN User's Guide
- We've added information about installation paths to be more comprehensive.
- We've revised the smmu_mapping_add() target argument.
System Architecture
- We've described how you can use ampersands and vertical bars to specify intersections and unions when you use posix_typed_mem_open() to open typed memory objects.
- The description in the Scheduling priority entry now explains that a non-FIFO server thread that's coming out of a RECEIVE-blocked state with a message from a client that sent with an "nc" (non-cancellation point) variant of MsgSend*() is inserted at the head of the queue for that priority.
- We've added QNX Trusted Disk (QTD) to the table of partition types.
Audio & Graphics
Audio Developer's Guide
- We've corrected the related links in snd_mixer_element_info_t and snd_mixer_element_info_free().
- We've corrected the description for SND_PCM_STOP_ROLLOVER in snd_pcm_channel_params_t.
- We've removed the statement about count and status members of the channel_status_t struct and MMAP mode.
- We've corrected the return value documentation for snd_pcm_link().
Screen Graphics Subsystem Developer's Guide
- In the Screen library reference subsection of the Screen Graphics Subsystem Developer's Guide, the following changes have been made:
- We've updated the description for SCREEN_PROPERTY_SOURCE_CLIP_SIZE.
- We've made a minor modification to the documentation for screen_send_event() to indicate that the exception for calling this function is that a privileged context isn't necessary if you're sending to the same process.
- SCREEN_PROPERTY_ID is now described for buffers.
- The maximum value of count in screen_create_window_buffers() has now been clarified.
- The units of time used in the following entries have been clarified:
- Nanoseconds
- SCREEN_PROPERTY_TIMESTAMP , when used in streams and windows.
- Microseconds
- SCREEN_STREAM_METRIC_CPU_TIME
- SCREEN_STREAM_METRIC_GPU_TIME
- SCREEN_WINDOW_METRIC_CPU_TIME
- SCREEN_WINDOW_METRIC_GPU_TIME
- Milliseconds
- SCREEN_PROPERTY_TIMESTAMP, when used for events.
- Nanoseconds
- We've provided a description for each of the following screen objects:
- SCREEN_PROERPTY_GROUP
- SCREEN_PROERPTY_ID_STRING
- SCREEN_PROERPTY_KEYMAP
- SCREEN_PROERPTY_PRODUCT
- SCREEN_PROERPTY_VENDOR
- SCREEN_PROERPTY_CLASS
- screen_share_display_buffers()
- screen_context_t
- screen_device_t
- screen_display_t
- screen_event_t
- screen_group_t
- screen_pixmap_t
- screen_session_t
- screen_stream_t
- screen_window_t
- We've corrected the description for screen_share_display_buffers().
Programming
Getting Started with QNX Neutrino
- We've updated the note about close_dup() to state that a fake _IO_CLOSE results in a rcvid of 0.
- We've added a note to close_dup() handler saying framework runs it without locking the OCB structure.
PCI Server User's Guide
- We've updated the documention for the pci_device_reset() entry to state 'binary value' rather than '0b1'.
QNX Neutrino Programmer's Guide
- We've updated the band sizes.
- We've corrected the description and example of the DCMD_PROC_MAPDEBUG_BASE
- We've expanded -Wl,-hname description in the Specifying an internal name entry to say the internal name of the shared object must end with version number.
- We've added a note in the qtargets.mk include file entry saying that setting the SOVERSION macro is mandatory because the internal name must have a version number.
Writing a Resource Manager
- We've removed the warning regarding multiple threads in the same client performing simultaneous operations, creating notification races.
- We've updated the paragraph about unblocking reply-blocked clients to fix wording and advise calling MsgError() to set EINTR or ETIMEDOUT.
Utilities & Libraries
C Library Reference
- ConnectAttach()
- We've added a related link to ConnectFlags().
- devctl(),devctlv()
- We've corrected the description for the command __DION and revised the sample code in Example 1: Setting RTS on a serial port
- diapatch_timeout()
- We' ve explained that dispatch_ timeouts don't make sense in a thread-pool environment.
- dispatch_create()
- We've updated the advisory about using dispatch_create_channel().
- dispatch_create_channel()
- If the dispatch structure is for use in a resource manager, then the flags _NTO_CHF_UNBLOCK and _NTO_CHF_DISCONNECT should be set for the supplied channel.
- dispatch_timeout()
- It is not safe to call dispatch_timeout() from a multithreaded process.
- errno
- We've revised the example in the doc for errno.
- feclearexcept(), fegetenv(), fegetexceptflag(), feholdexcept(), feraiseexcept(), fesetenv(), fesetexceptflag(), feupdateenv()
- These functions always return 0.
- fgets()
- Note that this and similar functions don't set errno if the end of the file is reached.
- hcreate(), hdestroy(), and hsearch()
- Note that these entries have been updated to show these functions as non-thread-safe.
- getenv(), putenv(), and setenv()
- Note that these entries have been updated to show these functions as thread-safe.
- inotify_qnx_ext()
- The code sample in inotify_qnx_ext() now contains the inotify_add_watch() call and error-handling code.
- link()
- This function has a cancellation point.
- mmap()
- Note that on some hardware architectures, PROT_WRITE also implies PROT_READ.
- Msg*()
-
- The Returns section clarifies the effects of the _r functions on errno when successful.
- The entries for message-related functions now include the maximums for byte count, total buffer length, and number of parts.
- MsgRegisterEvent()
- We've expanded the description of MsgRegisterEvent() coid parameter to say that -1 is more convenient because you don't need the server's connection ID, but it makes the event mechanism less secure, so this setting is not recommended.
- name_attach()
- We've re-added EPERM and a note about PROCMGR_AID_PUBLIC_CHANNEL being needed to create a public channel.
- name_open()
- We've reworded the note about _IO_CONNECT messages.
- procmgr_ability()
- We've updated the description of EPERM.
- procmgr_daemon(), daemon()
- We've described how STDIN/OUT/ERR are undefined if the function fails.
- procmgr_guardian()
- We've revised the image and description.
- procmgr_timer_tolerance()
- We've corrected the description of PROCMGR_AID_DEFAULT_TIMER_TOLERANCE.
- pthread_once()
- We've clarified that if init_routine is a cancellation point and is cancelled, the effect on once_control is as if pthread_once() was never called.
- realpath()
- Note that all components of pathname must exist when you call realpath().
- select()
- The select() function entry now states that it is implemented using poll().
- sendto()
- We've revised the Errors section.
- setpgid()
- We've updated the comment in the provided code sample.
- setuid(),setgid()
- We've added links to setreuid() and setregid().
- shm_ctl(),shm_ctl_special()
- We've described how to use ARM_SHMCTL_DEV, as well as a regarding example.
- sigaction()
- We've fixed the code sample.
- slog2_register()
- We've corrected the description of the SLOG2_ALLOC_TYPE environment variable.
- strtod(), strtof(), strtold()
- We've revised the description for ERANGE .
- ualarm()
- We've added the return value -2 and its description.
- wait(), wait3(), wait4(), waitid(), and waitpid()
- If the calling process is a guardian, then it may wait on processes that are not its children.
- waitfor()
- This function has a cancellation point.
Devctl and Ioctl Commands
- CAN_DEVCTL_WRITE_CANMSG_EXT
- Added documentation for CAN_DEVCTL_WRITE_CANMSG_EXT.
- DCMD_DUMPER_NOTIFYEVENT
- The code sample for the DCMD_DUMPER_NOTIFYEVENT has been updated.
Utilities Reference
- brconfig
- We've added newmcf and nohost options.
- devb-nvme, devb-ahci, libcam
- We've updated the description about smmuman.
- devb-virtio, devc-virtio
- We've corrected the instructions for configuring vdevs for the QNX Hypervisor.
- devnp-usbnet.so
- We've added the default for the prio option.
- dhclient
- We've updated the command-line options.
- dhcpd
- We've documented the new -chroot , -group, -ne, -no-pid, -user options.
- dhrelay
- We've updated the command-line options.
- dvfsmgr-*
- We've fixed Core Temp setting in the example.
- g++, gcc
- We've combined the entries for g++ and gcc.
- io-pkt-v4-hc, io-pkt-v6-hc
-
- We've added num_pool_cache, mtag_cache, and reply_ctxt TCP/IP options to io-pkt.
- We've added the -q, -r, and -w options.
- isend, isendrecv
- We've added the new isend and isendrecv utilities.
- mkcldr
- This entry now states that the mkcldr utility functions only with QDB.
- mkefs
- We've added a link to the variable name expansion description.
- mketfs
- We've added a link to the variable name expansion description.
- mkfatfsimg
-
- We've added a link to the variable name expansion description.
- We've added documentation for the -r option
- mkifs
-
- The mkifs entry now states that you should leave the code= and data= attributes set to their default values.
- We've updated the description of the sticky bit in the dperms and perms attributes.
- If you specify [-optional] but also specify the [+followlink] attribute and a symbolic link is broken, mkifs returns an error and exits.
- We've added a link to the variable name expansion description.
- We've specified the usage of the -r option.
- We've amended the autolink attribute description to say SONAME is the shared object name and must include the version number.
- We've updated the documentation to mention than an IFS, compressed using zlib, is not bootable.
- We've removed the drop, and include attributes from the document.
- mkqnx6fs
-
- We've updated the example due to the default block size change.
- We've unified the formulae for calculating num_blocks
- mkqnx6fsimg
-
- We've corrected the num_blocks default according to the 4 KB block_size default.
- We've unified the formulae for calculating num_blocks.
- If you specify [-optional] but also specify the [+followlink] attribute and a symbolic link is broken, mkqnx6fsimg returns an error and exits.
- We've added a link to the variable name expansion description.
- We've added documentation for the -r option.
- We've added an example of creating a FAT partition on a GPT disk.
- mkxfs
-
- We've added more details about file permissions and ownership.
- We've described how this tool expands environment variables.
- We've added a link to the variable name expansion description.
- on
- We've added the new -T and -S options.
- pfctl
- We've documented the new -y option.
- pidin
- We've added the '_' format character.
- pipe
- There is no need to specify an ampersand when you start this service.
- ps
- This entry now states that the ps utility does not list zombie processes; pidin should be used instead.
- pted
-
- We've added an example of creating a FAT partition on a GPT disk.
- We've corrected the description of the -a option.
- qcc
-
- We've updated documentation on the -ansi option to state that it no longer has any effect.
- We've added a note that the -std option restricts the language libraries (libc, libc++) to the specified ISO standard, which hides any function calls and symbols that aren't part of that standard. To include everything that's defined in the header files, such as functions that are part of the POSIX standard, also use the -D option to define _QNX_SOURCE.
- We've updated the list of supported targets in the -v option and the note in the -set-default option
- We've documented the -isystem option.
- We've added a note about the effect on the default libraries of a trailing -Bstatic option.
- random
- We've fixed the terminology in random, so 'entropy' means input and 'random data' means output.
- route
- The value of the family variable for the route utility's flush command must be -inet or -inet6.
- startup-*
- We've added more details about the align argument to the -R option.
- sysctl
- We've updated the description of net.inet.arp.maxtries.
- tar
- We've updated the documentation to note that this utility is a symlink to BSD tar in QNX SDP 7.0 and 7.1.
- tcpdump
- We've updated the Options section.
- timestamp
- We've added a link to the Optimization guide.
- wdtkick
- The wdtkick description has been updated to mention the QNX Hypervisor concepts of host- and guest-physical memory.
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's help system. To start the IDE:
- on Windows, choose from the Start menu, or use the desktop icon
- on Linux, run base_directory/qnxmomentics/qde, where base_directory is where you installed the software
- on macOS, click the icon labelled QNX Momentics IDE from the launchpad
The roadmap
page contains links to the various HTML booksets 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 (www.qnx.com). You'll find a wide range of support options, including community forums.