QNX Technical Articles
QNX® SDP 7.1 Kernel Update: Release Notes
Date of this edition: May 20, 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_64 targets running the QNX Neutrino RTOS 7.1. You can install QNX SDP on the following development hosts:
- Microsoft Windows 10 Pro 64-bit, or Windows 8.1 Pro 64-bit
- macOS version 10.14 or 10.15
- Linux Red Hat Enterprise Linux 7 64-bit, or Ubuntu Desktop 18.04 LTS 64-bit, on x86_64 processors (QNX SDP isn't supported on Linux on ARM processors)
Contents
- What's in this update?
- New features
- 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?
This update includes the following packages, which you'll find under Updates -> QNX Software Development Platform in the Software Center:
Group | Name | Package | Package internal version |
---|---|---|---|
Microkernel | QNX SDP 7.1 Kernel and libc (with Debug Symbols) | com.qnx.qnx710.target.microkernel.core | 1.2.0.00949T202105071456L |
Microkernel | QNX SDP 7.1 Microkernel - kdumper (with Debug Symbols) | com.qnx.qnx710.target.microkernel.kdumper | 0.0.3.00966T202105171238L |
OS Services | QNX SDP 7.1 OS Services - IPL Support (with Debug Symbols) | com.qnx.qnx710.target.base.ipl | 0.0.3.00949T202105071456L |
QNX Hypervisor | Hypervisor Kernel Module (with Debug Symbols) | com.qnx.qnx710.target.hypervisor.kernel_module | 1.2.0.00949T202105071456L |
OS Utilities | QNX SDP 7.1 Utilities - U (with Debug Symbols) | com.qnx.qnx710.target.utils.base.u | 0.0.3.00949T202105071456L |
OS Services | QNX SDP 7.1 OS Services - Shutdown (with Debug Symbols) | com.qnx.qnx710.target.base.shutdown | 0.0.3.00949T202105071456L |
To see a list of the contents of a package, right-click it in the QNX Software Center, choose Properties, and then click Package Contents.
New features
- We no longer enable the workaround for the Qualcomm Technologies Falkor/Kryo erratum 1003 or the Qualcomm Falkor errata 1009 for Kryo on all Qualcomm chips. If you need to use the workaround, you must now set the AARCH64_CPU_FLAG_KRYO_TLB flag by specifying the -F0x40000 option for the startup. (Ref# J2879019)
- Each thread has a buffer that the kernel can use when passing
small
messages. By default each of these buffers is 256 bytes. If you specify the new -x option for procnto, each buffer is extended to be 2 KB (less some overhead), which avoids the overhead oflong
message passing and hence improves performance. This does increase memory usage because each thread has a buffer whether or not it does any message passing. Allocating the buffer might have a slight latency cost. (Ref# J2795644) - The uname utility has a new -k option that displays the kernel's version number. The current value is 1.2.0. (Ref# J2898773)
- There's a new ChannelCreatePulsePool() function that lets you create channels with fixed pools of pulses that ensure well-behaved servers can receive pulses under most circumstances. For more information, see the entry in the C Library Reference. (Ref# J2551886, J2897451)
- We've implemented posix_devctl() as an alias for devctl(). (Ref# J2879086)
Fixed issues
- We've corrected an issue in fdopendir() that could cause a crash due to incorrect initialization of file descriptors when more than ten union filesystems are configured in a system. (Ref# J2900608)
- We've removed the inline version of pthread_getspecific(). (Ref# J2881802)
- We no longer allow writable direct physical mappings that are within or overlap the primary IFS. (Ref# J2893066)
- It's now possible to set an ACL on a file with up to 4000 entries. (Ref# J2894789)
- The stat() and lstat() functions no longer fail on 32-bit targets when the target file is larger than INT_MAX bytes. (Ref# J2889556)
- We now handle the case where ClockCycles() isn't perfectly synchronized across CPUs on targets where the hardware timer behind the system clock is accessible from all CPUs. For a problem to manifest itself, the system would also have to be using tickless mode and/or using high-resolution timers, and/or doing constant reprogramming of the clock period. This would likely cause the time to roll backwards, causing issues with timer fire times, including possible fire times that seem infinite (i.e., timers not firing), causing all kinds of symptoms. (Ref# J2896371)
- You can once again mmap() files that are larger than 2 GB. (Ref# J2893667)
- Named semaphores are now closed as required by POSIX when you call exec* or posix_spawn(). (Ref# J2893091)
- We've corrected a race condition that could occur when an attempt was made to shrink a mapped file or shared object that was still being accessed by other threads, which sometimes led to a crash. (Ref# J2892000)
- Previously, applications with a dynamic section containing more than 257 entries (i.e., where readelf -d on an executable or shared library [.so] reports a value greater than 257) would cause undefined behavior. We now check this limit when loading and, if it's exceeded, fail to load. (Ref# J2895872)
Known issues
This release includes the following issues:
- If you use an ACL with more than 1200 entries on a Power-Safe (fs-qnx6.so) filesystem, you'll get undefined results. (Ref# J2894787)
- On 32-bit architectures, fstat64() fails with an error of
ENOSYS if you pass it a file descriptor that was opened with
O_DIRECTORY.
(Ref# J2896847)
Workaround: Use fstatat64() instead:
int rc = fstatat64( fd, ".", &st, 0 );
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's help system. To start the IDE:
- on Windows, choose from the Start menu, or use the desktop icon
- on Linux, run IDE_base_directory/qde,
where IDE_base_directory is where you installed the IDE
This path is probably different from that for QNX SDP 7.0. In QNX SDP 7.0, the default path is ~/qnx/qnxmomentics/qde, but in SDP 7.1, it's ~/qnxmomenticside/qde.
- 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.