QNX Technical Articles
QNX® Software Development Platform 6.5.0 Service Pack 1: Release Notes
Date of this edition: January 7, 2021
![]() |
Changes to these notes since June 28, 2012 are highlighted below
with this icon:
![]() |
Target OS: This development platform produces software that's compatible with targets that are running QNX® Neutrino® 6.5.0 SP1.
Host OS: You can install this package:
- as a self-hosted QNX Neutrino development system
- or on one of the following development hosts:
- Microsoft Windows 7 Professional 32- and 64-bit, Vista Business 32- and 64-bit, XP Professional SP3, or 2000 SP4
- Linux Red Hat Enterprise Linux 5.4 Desktop 32- and 64-bit, Red Hat Fedora 12, Ubuntu Workstation 9.10, 11.04, and 12.04 32- and 64-bit, or openSUSE 11.2
You must have already installed QNX SDP 6.5.0.
You can also install the QNX Neutrino RTOS as a virtual machine on VMware Workstation 6.5 or 7.0, VMware Player 3.0, and Microsoft VirtualPC 2007. We provide a VMware image of a runtime installation of QNX Neutrino; for more information, see “Using the VMware image of a QNX Neutrino runtime system,” below.
If you intend to use the QNX SDP on VMware, to ensure that VMware is supported for your host, search the compatibility guide located at http://www.vmware.com/resources/compatibility/search.php.
If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website, http://community.qnx.com/.
![]() |
|
Contents
- What's new in QNX Neutrino 6.5.0 SP1?
- Kernel
- Startup
- Core networking
- Filesystems
- Graphics: Advanced Graphics ¦ Composition Manager ¦ Photon microGUI
- Libraries and header files
- Drivers
- Documentation
- I/O devices
- QNX Database (QDB)
- Security
- Using the VMware image of a QNX Neutrino runtime system
- Compiler, tools, and utilities
- Debugging information for shipped binaries
- Discontinued items
- Experimental items
- The memory manager's backward-compatibility mode
- Known issues
- Installing and uninstalling
- Kernel
- Libraries and header files
- Filesystems
- Startup
- Adaptive partitioning
- Booting
- BSPs and DDKs
- Compiler, tools, and utilities
- Device drivers
- Flash filesystems & embedding
- IDE
- Documentation
- Instant Device Activation
- I/O devices
- Multimedia
- Networking
- Graphics: Advanced Graphics ¦ Photon microGUI
- Persistent Publish/Subscribe
- Runtime kit
- Host-specific: Windows hosts ¦ Linux hosts
- Web browsers
- Getting started with the documentation
- Technical support
- List of fixes
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.
For the most up-to-date version of these release notes, go to our website, www.qnx.com, log in to your myQNX account, and then go to the Download area.
![]() |
Make sure that Plug and Play OS is disabled in the BIOS before you run QNX Neutrino self-hosted. |
What's new in QNX Neutrino 6.5.0 SP1?
This service pack includes kernel memory management enhancements, io-pkt enhancements, new USB communication class support, updated support for the latest x86 platforms, Rob Krten's The QNX Neutrino Cookbook: Recipes for Programmers, and numerous bug fixes.
- Kernel
- Core networking
- Filesystems
- Graphics: Advanced Graphics ¦ Composition Manager ¦ Photon microGUI
- Libraries and header files
- Drivers
- Documentation
- I/O devices
- QNX Database (QDB)
- Security
- Using the VMware image of a QNX Neutrino runtime system
What's new: Kernel
- The libstartup processor configuration data structures
now allow CPU-specific configuration for page table encodings.
On ARMv6 and ARMv7 processors, the MMU allows page tables to be cacheable. This can significantly improve performance because the hardware page table walk can look up page table entries in the L1 or L2 caches instead of accessing main memory.
This behavior is processor-specific (some processors can look up only in the L2 cache, whereas others can look up in both L1 and L2). The libstartup CPU configuration data structures now enable the appropriate behavior for each CPU implementation.
Because this behavior is implemented only by ARMv6 and ARMv7 processors, it's available only using ARMLE procnto-v6 and ARMLE-v7 procnto variants. (Ref# 81892, 142187)
- When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE is now correctly logged. (Ref# 76574)
What's new: Startup
- We've adopted the latest P4080 U-Boot, which supports 36-bit physical addresses. (Ref# 85415, 142206)
- In order to make startup faster and reduce jitter, nanospin_calibrate() now tries to read the calibration data from values stored in the system page. The startup for some boards includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. (Ref# 88926, 142221,156183)
![]() |
|
What's new: Core networking
- dhcp.client
- This utility now:
- runs an optional script, /etc/dhcp/dhcp-check, that takes the environment as dhcp-up does, but returns a value indicating if the configuration is acceptable (0 means OK; other values result in a DHCPDECLINE) (Ref# 107211, 142270)
- has an -H option that indicates that you don't want to apply the hostname locally. This could be useful in cases where you use the -h option to identify the client, and you want to apply a different hostname locally, or you simply wish to ignore the server hostname assignment. (Ticket ID 91459) (Ref# 107213, 142271)
- gns
- We've corrected a memory leak that occurred when a message buffer was allocated but never freed. (Ref# 78242, 142156)
- io-pkt*
-
- The io-pkt* manager now supports the ALTQ feature. You can use pfctl to manage it. (Ref# 107832, 142280)
- There's a new -P option that you can use to specify the priority to use for io-pkt's main thread. The default is 21. (Ref# 135755, 159504)
- The io-pkt* manager now supports TUN/TAP.
To create the interfaces, use ifconfig:
ifconfig tun0 create ifconfig tap0 create
For more information, see the NetBSD documentation:
- http://netbsd.gw.com/cgi-bin/man-cgi?tun++NetBSD-current
- http://netbsd.gw.com/cgi-bin/man-cgi?tap++NetBSD-current
(Ref# 101145, 107307)
- The TCP/IP module supports the following new options:
- pfil_ipsec
- (io-pkt-v4-hc and io-pkt-v6-hc only) Run packet filters on packets before encryption. The default is to do it after encryption. (Ref# 74025, 147353, 154855)
- timer_pulse_prio=priority
- In order to improve performance, io-pkt now uses a timer pulse instead of a timer interrupt. This option specifies the priority to use for the timer pulse. The default is 21. (Ref# 81324, 101841, 154965, 155100)
- lsm-autoip.so
-
- By default, AutoIP no longer uses routes to direct the link-local network to use the routable IP address of the interface, nor does it route by default to the link-local IP address. If the old routing behavior is necessary, use the old option. Using routing this way was problematic depending on the peer configuration, as well as when multiple interfaces were present. The force option now has no effect unless you've also specified old. (Ref# 77436, 77649, 77122, 107201, 142269, 153193; Ticket ID 90966)
- The lsm-autoip.so module no longer selects the same IP address every time after the first challenge. (Ref# 150959)
- This module is no longer loaded if the selected interface isn't present. (Ref# 150968)
- pf
- The packet filter now supports IPv6 fragments. (Ref# 147358; Ticket ID 92278)
What's new: Filesystems
- Flash filesystems
We've deprecated the DCMD_F3S_LOCKDOWN and DCMD_F3S_ULOCKDOWN devctl commands. Use DCMD_F3S_LOCKSSR, DCMD_F3S_READSSR, and DCMD_F3S_WRITESSR instead.
- fs-dos.so
- This filesystem now supports a DCMD_FSYS_LABEL_RAW devctl() command that you can use to get the raw volume label before any character conversions are done. (Ref# 125315, 142318)
- fs-etfs-ram
- We now ship an ARMLE-v7 version of fs-etfs-ram. (Ref# 102375, 142260)
- fs-nfs2
This filesystem doesn't support files larger than 2 GB. This is a limitation of the NFS2 protocol, not of the implementation. (Ref# 39060, J473719)
- fs-nt.so
- This filesystem now supports NTFS partitions on devices with a disk sector size that's greater than 512 bytes. (Ref# 149806)
- Power-Safe (fs-qnx6.so) filesystem
-
- You can use mkqnx6fs's new -v option to
specify a volume name of up to 16 characters.
(Ref# 95589, 142239, 152288)
You can't specify both a UUID and a volume name. - There's now an alignio option that makes the filesystem try to align all reads and writes in sizes and offsets of the file system block size. (Ref# 110977, 142294)
- You can use mkqnx6fs's new -v option to
specify a volume name of up to 16 characters.
(Ref# 95589, 142239, 152288)
What's new: Graphics
Advanced Graphics
- libimg
- This library now supports the invocation of the set_value_f() callout when progressive JPEGs are loaded via img_load*(). (Ref# 100825, 142253)
Composition Manager
After 6.5.0, the current version of QNX Composition Manager will be deprecated. A replacement subsystem tentatively called QNX Screen will be provided as part of a future SDP release.
Photon microGUI
We're deprecating the Photon microGUI and will remove it in a future release.
- phuser
- We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. (Ref# 126546, 142322)
What's new: Libraries and header files
- ChannelCreate()
More than one channel in a process can now have one or both of _NTO_CHF_COID_DISCONNECT and _NTO_CHF_THREAD_DEATH set. (Ref# 83053, J1579013)
- dladdr()
- This function now provides the full path (instead of the base name) of the object, in order to match the behavior on other OSs. (Ref# 80928, 159484)
- fp_rounding()
- This function now sets the L bit and the mask so that older processors (that don't implement the L bit) act as though the mask were set. (Ref# 81314, 142185; Ticket ID 00104989)
- InterruptLock(), InterruptUnlock()
The swp instruction has been deprecated by ARM and is no longer supported in many newer ARM cores. In order to support new cores properly, you need to use the ldrex and strex opcodes. Accordingly we've changed some of the inline code in <neutrino.h> for ARM. (Ref# 79521)
The 6.5.0 versions of InterruptLock() and InterruptUnlock() aren't compatible with 6.5.0 SP1. If you use these functions, you must rebuild your programs in order to update the inline code. - libc.so
- We've corrected an error in the handling of DT_FINI_ARRAY:
- If you manually defined DT_FINI_ARRAY, the first destructor in the DT_FINI_ARRAY list wasn't called. The effect of this omission depended on what that destructor was intended to do. On all platforms except ARMLE-v7, this is the only case in which your software would have been affected.
- On ARMLE-v7, the following also occurred:
- DT_FINI_ARRAY was generated for any initialized C++ object. Depending on the exact ordering, one destructor wasn't called (most probably that of the first object to get initialized).
- If your application called dlopen() for a C++ shared object with global C++ objects and then closed it by calling dlclose(), the process would have crashed when it exited. After the dlclose(), the destructor wasn't called but remained registered in the __aeabi_atexit array. When the application exited, an attempt was made to call (the long gone) function, resulting most probably in a SIGSEGV or other odd behavior (e.g., if the virtual address got occupied by something else after the above mentioned dlclose()).
- If you used __attribute__((destructor)), the first destructor in the array wouldn't be called.
(Ref# 77236, 142152)
- libps.a
- We now provide a PIC version of this library. (Ref# 80433, 142176)
- MALLOC_BAND_CONFIG_STR
We've changed the band configuration from:
MALLOC_BAND_CONFIG_STR="8:16,32,0:24,32,0:32,32,0:48,24,0:64,24,0:80,24,0:96,16,0:128,8,0"
to:
MALLOC_BAND_CONFIG_STR="8:12,32,0:20,32,0:28,32,0:44,24,0:60,24,0:76,24,0:92,16,0:124,8,0"
The bands are now four bytes smaller. (Ref# 100244, 146824)
- MsgCurrent()
- Calling MsgCurrent() on the rcvid pertaining to a low-priority client no longer causes a priority boost given to your thread by a blocked high-priority thread to be lost. (Ref# 50399, 142142, 151626)
- nanospin_calibrate()
- In order to make startup faster and reduce jitter, nanospin_calibrate() now tries to read the calibration data from values stored in the system page. The startup for some boards includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. (Ref# 88926, 142221,156183)
- <sys/pps.h>
- We now ship this header file. (Ref# 78433; Ticket ID 91172)
- pthread_mutex_timedlock()
- This function's behavior is now compliant with POSIX. (Ref# 111650, 142296)
- TimerTimeout()
- This function no longer includes internally used bits in the flags that it returns. (Ref# 82818, 142191)
What's new: Drivers
What's new: Audio device drivers (deva-*)
New drivers:
- deva-ctrl-usb.so
- Sound driver for USB audio devices (Ref# 106691, 160998)
Other changes include:
- deva-ctrl-intel_hda.so
- The Intel HDA Audio driver now supports the Cirrus CS4207 Audio codec. (Ref# 90047, 142225)
What's new: Block-oriented drivers (devb-*)
- devb-eide
- This driver now recognizes drives that are larger than 127 GB. (Ref# 87717, 142219)
- devb-loopback
-
- This driver is now able to mount images that are larger than 2 GB. (Ref# 79548, 142168; Ticket ID 91175)
- The following options are new:
- heads=num
- Specify the number of heads (default 1).
- tracks=num
- Specify the number of sectors per track (default 1).
(Ref# 133385, 159492)
What's new: Character drivers (devc-*)
- devc-serusb
- This driver now supports these devices:
- Cinterion AHx module (Ref# 124687, 142316)
- Sierra Wireless AR8550 3G dongle (Ref# 117569, 142488)
as well as the following features:
- CDC ACM; the driver automatically detects ACM devices, based on the USB Class code (Ref# 68333, 80267, 142175)
- a DCMD_CHR_RESET devctl() command that resets the device (but not all drivers use this command) (Ref# 80267, 142175)
- a drt option that lets you specify the data-ready timeout (Ref# 116850, 142306)
What's new: Flash filesystem drivers (devf-*)
- devf-generic
- The following options are new:
- -D — enable automatic detection of ECC mode.
- -x — enable software ECC mode.
Don't mix ECC-enabled partitions and ECC-disabled partitions; the driver doesn't support this. The arguments to the -t option have changed. You can now specify the high water, low water, and maximum number of threads for the driver's thread pool.
We've documented the following options:
- -A — when registering the path names for the partitions with resmgr_attach(), use the _RESMGR_FLAG_AFTER flag to force the path to be resolved after others with the same pathname at the same mountpoint.
- -L limit — the number of retries to make if the physical flash erase functions for a unit fails. The default is 0.
(Ref# 154800)
What's new: Graphics drivers (devg-*)
We've documented the following drivers:
- devg-lx800.so
- Graphics driver for AMD Geode LX chipsets (Ref# 100760)
- devg-unichrome.so
- Graphics driver for VIA Unichrome chipsets (Ref# 100760)
What's new: Human interface device drivers (devh-*)
- devh-usb.so
- This driver now has a priority option that you can use to change the priority of the removal thread. (Ref# 94754, 142236; Ticket ID 00107965)
- hidd_device_reset()
- This function gives you a way to reset the device from a program.
(Ref# 99210, 142245)
Use this function with caution if the HID device is part of a composite USB device. Issuing a device reset causes a low-level BUS reset for the entire device, which could potentially cause problems with drivers managing the other interfaces of a composite device. - hidd_get_interface_string()
- A new function that you can use to retrieve the HID interface descriptor string. (Ref# 87005, 142213)
- hidd_send_report()
- This function now reports an ETIMEDOUT error when a device times out. (Ref# 87204, 142216)
What's new: Input device drivers (devi-*)
- devi-hid
- This driver can now switch to 4-point calibration from the default 3-point. (Ref# 118340, 142309)
What's new: Network drivers (devn-*, devnp-*)
The new drivers include:
- devnp-ecm.so
- Driver for the CDC ECM USB Ethernet control module (Ref# 74350, 142146, 154151)
- devnp-ncm.so
- Driver for the USB CDC NCM network control module (Ref# 110669, 142479, 154151)
Other changes include:
- devn-asix.so
- This driver now supports AX88172A and AX88772B USB Ethernet dongles. (Ref# 69383, 133449, 159418, 160786, 160936)
- devnp-e1000.so
- The following options are new:
- int_mod=N
- The interrupt moderation value. The default is 20000 interrupts/sec; a value of zero disables interrupt moderation.
- force_link
- Force the link speed/duplex. The default is to autonegotiate the advertised speed/duplex.
- max_read=N
- The maximum PCIe read request size. N must be 128, 256, 512, 1024, 2048, or 4096 bytes.
- tx_reap=N
- The maximum number of transmit descriptors to reap. The default is 64.
Other changes include:
- The default number of receive descriptors is now 512, and the maximum is 4096.
- The default number of transmit descriptors is now 4096, and so is the maximum.
(Ref# 137666, 146600, 159635, 160941)
- devn-fd.so
- We now ship an ARMv7 version of this driver. (Ref# 93951, 142233)
- devn-pegasus.so
-
- This driver now supports the busnum and devnum options. (Ref# 79524, 142165)
- Removing the Pegasus dongle from a hub no longer causes io-pkt-v4 to spin. (Ref# 82861, 142192; Ticket ID 00105359)
- devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, devnp-rum.so
- The documentation now says that you must use io-pkt-v4-hc or io-pkt-v6-hc with these drivers (io-pkt-v4 doesn't support Wi-Fi). (Ref# 77970)
- devnp-e1000.so
- This driver now supports Intel 82579 chipsets. (Ref# 86807, 142211)
- devnp-shim.so
- By default, this driver now copies each received packet in the shim layer as it's passed from the driver to io-pkt. This means that the driver and shim can now be removed via ifconfig enX destroy or by physical removal of the device (if supported by the driver), without causing the shim to crash. This driver has a new shimrxcopy option that controls this feature. (Ref# 116999, 142487)
If you're interested in writing a new network driver, ask your sales representative for the Writing Native Network Drivers for io-pkt technote as well as some sample driver code. Both are available free of charge. (Ref# 88626)
What's new: USB drivers (devu-*)
- devu-ehci.so
- New options:
- ports=port:port...
- Set the enumeration order of each root port. Use colons to separate the port numbers. (Ref# 101449, 142470; Ticket ID 91910)
- memory=name
- Use the specified typed memory for DMA descriptors (endpoint descriptor, transfer descriptors, and so on). (Ref# 73666, 142145, 154304)
- devu-ohci.so
- New options:
- isoptd=num
- Restrict the number of isoch frames each TD can transfer (default 8).
- memory=name
- Use the specified typed memory for DMA descriptors (endpoint descriptor, transfer descriptors, and so on).
(Ref# 73666, 142145, 154304)
What's new: Documentation
- The QNX Neutrino Cookbook: Recipes for Programmers
- QNX Software Systems has bought the rights to this book by Rob Krten, and we've updated it for QNX SDP 6.5.0 SP1. (Ref# 98337)
- QNX Neutrino Library Reference
-
- We've corrected the description of mem_offset() and mem_offset64(). You must always specify NOFD for the fd argument; to get the offset and length of a mapped typed memory block, use posix_mem_offset() or posix_mem_offset64(). (Ref# 160360)
- The documentation for mq_open() and sem_open() now mentions that if you want to use O_CREAT, O_EXCL, or O_NONBLOCK when you call these functions, you need to include <fcntl.h>. (Ref# 77620)
- The entry for munmap() in the Neutrino Library Reference now says that you can munmap() just a part of an area mapped with mmap(). (Ref# 80441)
- The entry for pci_attach_device() now describes the PCI_USE_MSI and PCI_USE_MSIX and includes an example that shows how you can detect whether or not a device supports MSI or MSI-X. (Ref# 103614, 162456; Case 00104937, 00110660)
See also the “What's New” appendix in the QNX Neutrino Library Reference.
- Utilities Reference
-
- The documentation now uses the correct name for the bzcat command. (Ref# 77634)
- The entry for io-audio now describes the following card options that apply to all sound drivers:
- unit=number
- The card number to mount the driver as.
- dindex=number
- The device number that additional following options apply to.
- play_name=name
- The symbolic name to assign to the PCM playback device.
- cap_name=name
- The symbolic name to assign to the PCM capture device.
as well as the following memory (-m) options:
- pool_size=kbytes
- The size of the DMA memory pool to create, in KB.
- pool_name=string
- The name of a shared memory object to map and use as DMA memory pool. This object must be physically contiguous memory.
and the following global (-o) options:
- intr_thread_prio=priority
- Set the priority of the interrupt service threads. The default is 50.
- sw_mixer_rate=[FAHQ|FA|Lvalue]
- Set the method of selecting the sampling frequency used by the PCM software mixing device if the underlying hardware device supports multiple rates.
- sw_mixer_samples=num
- Adjust the fragment size used by the software mixer to something other than the default of 2048 samples.
(Ref# 163533)
- The entry for io-display no longer says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
- The entry for lsm-pf-*.so now says that you need to specify which version of this module that you want io-pkt-* to load. (Ref# 78737)
See also the “What's New” appendix in the Utilities Reference.
- Technotes
- We've corrected the rtinstall script in the technote on creating a runtime kit, so that it exits if you try to install the runtime on a disk that already has a Power-Safe (fs-qnx6.so) filesystem partition (type 179) on it. (Ref# 78567, 142158)
What's new: I/O devices
- io-audio
- There's a new global data_thread_prio option that you can use to specify the priority of the software mixer thread. The default is 25. (Ref# 136343, 159648)
- io-usb
- New options:
- -r num
- Set the number of enumeration retries (default 3).
- -t memory=name
- Set the typed-memory name (default none, using sysram).
(Ref# 73666, 142145, 154304)
What's new: QNX Database (QDB)
New functions:
- qdb_column_decltype()
- Retrieve declared type for a column in a result set
- qdb_interrupt()
- Interrupt a long-running query
- qdb_stmt_decltypes()
- Retrieve declared column types for a prepared statement
Other changes include:
- qdb_column_name()
- We've corrected the synopsis.
- qdb_setoption()
- New option: QDB_OPTION_COLUMN_DECLTYPES
(Ref# 87028, 150556)
What's new: Security
- We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. (Ref# 126546, 142322)
- We've addressed a potential security vulnerability with the
LD_DEBUG_OUTPUT environment variable
that could have been exploited to form a security attack.
This issue was originally reported to QNX Software Systems
by Tim Brown, Nth Dimension.
You can use LD_DEBUG_OUTPUT to specify the name of the file where the dynamic linker writes its output. The vulnerability occurs if you use LD_DEBUG and LD_DEBUG_OUTPUT with a setuid binary:
- If the file specified by LD_DEBUG_OUTPUT exists, it's overwritten with the debug output, and the existing permissions are preserved.
- If the file doesn't exist, then a new file is created, owned by root and the user, and writable by both.
This could be exploited in different ways, including creating new files in arbitrary locations. We've addressed this issue by disabling the use of LD_DEBUG_OUTPUT with setuid binaries. (Ref# 84330, 85746, 90385, 142204, 142217)
Using the VMware image of a QNX Neutrino runtime system
We provide a VMware image of a QNX Neutrino 6.5.0 SP1 runtime system in target/650SP1-VM.tar on the installation DVD; it's also available in the Download area of our website.
To install this image, do the following:
- Extract the VMware target from the DVD. For example, on Windows, open a Windows Explorer window, double-click on the target650SP1-VM.tar file, and then extract the 650SP1-VM folder to some location on your hard drive (e.g., My Documents).
- To launch, either:
- Start VMware Player, browse to where you saved the
650SP1-VM folder, and then choose
650SP1-VM.vmx.
Or:
- Navigate to where you saved the 650SP1-VM folder, and then double-click the VMware configuration file, 650SP1-VM.vmx.
- Start VMware Player, browse to where you saved the
650SP1-VM folder, and then choose
650SP1-VM.vmx.
- If VMware Player displays a dialog saying that the virtual machine was moved, select Create and click OK.
If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website, http://community.qnx.com/.
What's new: Compiler, tools, and utilities
- enum-usb
- This utility now supports:
- devices that don't have an interface 0 (Ref# 81195, 142183)
- Cruzer Blade USB sticks (Ref# 92272, 142228)
- Philips GoGear Muse in both MSC (umass) and MTP (PFS) modes (Ref# 111905, 142298)
- HTC Droid Incredible devices (Ref# 113846, 142481; Ticket ID 92104)
The configuration file for enum-usb now supports a NoMSString option. Some devices don't support Microsoft-defined USB descriptors and will go haywire if queried for them. This option prevents queries from being made for these descriptors. (Ref# 92272, 103720, 142228)
- fdisk
-
- This utility now supports logical partitions and multiple partitions of the same type. (Ref# 57864, 142143)
- When you use add partitions, the start and end LBA addresses are now aligned on cylinder boundaries. (Ref# 108132, 142283)
- We've corrected some off-by-one errors in fdisk's interactive mode. Note that you can no longer edit the start and end cylinders of an extended partition. (Ref# 108164, 142284)
- pidin
-
The -M option now works correctly. (Ref# 93157, J144209)
- If a shared object contains text relocations, pidin mem now displays the correct name (appended by “!”), instead of zero. (Ref# 85530, 142208)
- The pidin -F "%M" command no longer crashes. We've also improved the way that this format code and the -M memory options work. (Ref# 93169, 142231)
- slogger
- New options:
- -m — use CLOCK_MONOTONIC instead of the default CLOCK_REALTIME as the clock source.
- -u event_id — generate a user-string trace event, with the given event ID, for all messages received.
- tar
This utility no longer fails when you create an archive on a NOR flash filesystem. (Ref# 77866, J169731)
Debugging information for shipped binaries
We generate the QNX SDP binaries with debugging information (-g) and map files. With few exceptions, all binaries are available with debugging information, but this data as well as the .ident information are stripped and stored in a separate binaryName.sym file. These files are linked together, so gdb understands where to find the symbol data.
There's now no need for a separate debug version of all the binaries. There's a separate tar file containing all the .sym files that will be untarred alongside each binary. This file is available in the Download area of our website, as well as in the debugging_info directory on the QNX SDP DVD.
What it means to you:
- The target binaries are now stripped.
- The target binaries don't have any SRCVERSION information in them (i.e. use -s won't work).
- All Neutrino binaries are built with -g (i.e. full debug).
- We now produce linker map files for all Neutrino binaries.
- The full debug symbols for a binary called some_binary (along with the SRCVERSION information) are stored in a file called some_binary-buildid.sym.
- The binary and its associated symbol file are “linked” so gdb knows how to find the symbols.
These *-buildid.sym files are in CPU-specific tar files. The usage of these tar files is straightforward. Suppose you want to debug the ls command for x86. You could just add the entire set of debug files to your target (you need to be root, of course):
- Get the target-x86-debug-date.tgz file.
- cd $QNX_TARGET
- tar -zxf path/target-x86-debug-date.tgz
Then ntox86-gdb $QNX_TARGET/bin/ls would load the debugging symbols from the .sym file automatically. Since this is the full debugging information, you can point gdb at the location of source for ls.
You don't have to extract the entire tar file. In fact all that matters is that the .sym file be in the same directory as the binary. So you could simply copy $QNX_TARGET/x86/bin/ls and the x86/bin/ls-*.sym file (from the debug tar file) to your current directory, and then run gdb there.
In order to get a list of the source files used to build a binary (e.g. to determine the associated licensing), use the .sym file instead of the binary. So continuing with the example above, to get a list of the source files used in building ls, type:
use -s $QNX_TARGET/x86/bin/ls-*.sym
Discontinued items
The following items will be removed from a future release of QNX SDP and will become part of a separate product:
- Web Browser Engine (based on the WebKit open-source web browser engine)
![]() |
The Web Browser Engine in 6.5.0 SP1 doesn't include any ARMv7 binaries. |
After 6.5.0, the current version of QNX Composition Manager will be deprecated. A replacement subsystem tentatively called QNX Screen will be provided as part of a future SDP release.
We've deprecated the following items, and we plan to remove them from a future release:
fs-cd.so; use fs-udf.so instead.
- the Photon microGUI
Graphics Framework
- MIPS targets
- SH4 targets
libmalloc and libmalloc_g; replaced by librcheck
- lsm-autoip.so (to be replaced)
- the CMU version of SNMP that's currently included in QNX SDP. We recommend that you use NuDesign's SNMP instead. For more information, see the Partners area of our website. (Ref# 70524)
- graphics drivers:
- devg-ati_rage128.so
- devg-chips.so
- devg-i810.so
- devg-rage.so
- devg-sis630.so
- devg-tnt.so
- devg-coral.so (armle)
- devg-radeon.so (ppcbe)
- devg-smi5xx.so (armle, shle)
- devg-smi7xx.so (armle, shle)
(Ref# 77562)
We've deprecated the graphics drivers for chipsets that have been out of production for five years. Where possible, the source code for these graphics drivers will be posted on Foundry27.
Experimental items
![]() |
Experimental software is primarily provided for customers and the community to try out, and perhaps to get a glimpse of what might be in store for the future. For information about the use of experimental software, see the Commercial Software License Agreement (CSLA) or Partner Software License Agreement (PSLA) in the Licensing area of our website, http://www.qnx.com/legal/licensing/. |
The experimental items in QNX SDP 6.5.0 SP1 are:
- asynchronous messaging
We've deprecated asynchronous messaging and will discontinue it in a future release. (Ref# 69138, 69784)
The memory manager's backward-compatibility mode
The memory manager supports a backward-compatibility mode that you can control with the b and ~b settings for procnto's -m option. The current behavior is as follows:
- b
- Enable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, the memory manager treats the mapping as MAP_PRIVATE.
- ~b
- Disable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, mmap() returns MAP_FAILED and sets errno to EINVAL. This is the behavior specified by POSIX.
The default is b (enabled).
Known issues
QNX SDP 6.5.0 SP1 contains known issues in these areas:
- Installing and uninstalling
- Kernel
- Libraries and header files
- Filesystems
- Startup
- Adaptive partitioning
- Booting
- BSPs and DDKs
- Compiler, tools, and utilities
- Device drivers
- Flash filesystems & embedding
- IDE
- Documentation
- Instant Device Activation
- I/O devices
- Multimedia
- Networking
- Graphics: Advanced Graphics ¦ Photon microGUI
- Persistent Publish/Subscribe
- Runtime kit
- Host-specific: Windows hosts ¦ Linux hosts
- Web browsers
![]() |
We're actively investigating all known issues. |
Known issues: Installing and uninstalling
- Don't install the x86-only version of 6.5.0 SP1 on the full version of 6.5.0, or the full version of SP1 on the x86-only version of 6.5.0, or else you'll end up with an inconsistent set of software.
- The command-line prompt doesn't return after a successful uninstallation
on Linux.
(Ref# 161467)
Workaround: Press Ctrl-C.
- It's possible to have more than one version of the QNX Software Development Platform installed on your system, and it's possible to install QNX Aviage products for each version of QNX SDP. However, due to a limitation in InstallShield, you have to take some extra steps installing QNX Aviage products on Linux hosts; for details, see the installation notes for the specific QNX Aviage product. (Ref# 73411)
- Because of the changes to the head utility in QNX SDP 6.5.0,
if you're installing a QNX Aviage product on QNX Neutrino 6.5.0 or later,
then you need to start the Aviage installer like this:
HEAD_LEGACY=1 ./aviage_installer.sh
- If you install 6.5.0 on some Linux systems
(e.g., Ubuntu 8.10) and you already have more than one version
of QNX SDP installed, your PATH environment variable
might contain the value of $QNX_HOST/usr/bin for an
earlier version of QNX SDP.
(Ref# 70745)
Workaround: Manually update your PATH, so that it contains only the 6.5.0 version of $QNX_HOST/usr/bin.
- In order to run the installer and the IDE on Ubuntu 64-bit,
you need to install the 32-bit libraries:
sudo apt-get install ia32-libs
Answer “yes” to all the questions. (Ref# 70567)
- In order to install QNX SDP on Linux or Windows, the QNX license file
must be writable by everyone.
If the installer stops and warns you that this file isn't writable,
you can make it so as follows:
- On Windows, right-click on C:Program FilesQNX Software Systemslicense and choose Properties. Make sure that the “Read-only” attribute isn't checked, click Apply, and then click OK.
- On Linux, type the following:
chmod a+rw /etc/qnx/license/licenses
(Ref# 62419)
- On some Linux distributions, the QNX SDP installer incorrectly
displays accented “e” characters as a square box in the
French text of the “Language” section of the license
agreements.
(Ref# 61721)
Workaround: To display the text correctly, open a web browser and view the license agreement .txt files located in base_dir/install/qnxsdp/6.5.0, where base_dir is where you installed SDP.
- If you install SDP 6.5.0 on a Windows or Linux system that already has
QNX Momentics 6.3.2, the installer tells you that it's modifying 6.3.2
to support coexistence with 6.5.0.
Here are the details:
- Windows
- The 6.5.0 installer checks to see if the cleanup utility,
QNXWinCleanup.exe, is present under the 6.3.2 host directory
(typically C:QNX632host)
and moves it to C:Program Files.
If you uninstall 6.5.0, the uninstaller checks to see if 6.3.2 is present. If so, it moves the cleanup utility back to its original location.
- Linux
- The 6.5.0 installer replaces uninstaller.bin in
632_base_dir with a script that launches the 6.3.2 uninstaller
with a special option:
./uninstaller.bin -W beanDeleteConfigDir.active="False"
If you uninstall 6.5.0, the uninstaller checks to see if 6.3.2 is present. If so, it restores uninstaller.bin.
(Ref# 58784, 60037)
- If you've installed both QNX Momentics 6.3.2 and
the QNX Software Development Platform 6.5.0 on Linux or Windows, and you
then uninstall 6.3.2, the value of the QNX_CONFIGURATION
environment variable will be incorrect, and you won't be able to use
6.5.0.
(Ref# 58784)
Workaround: Remove the extra qconfig string from the value of QNX_CONFIGURATION.
- If you install 6.5.0, and you then install 6.3.2, you need to do the
following:
- On Windows, after installing 6.3.2 over 6.5.0, make sure to move the cleanup utility QNXWinCleanup.exe from $QNX_HOST to C:WINDOWS.
- On Linux, when you run the 6.3.2 uninstaller, use the following
command-line arguments to leave the 6.5.0 installation unaffected:
qnx632_base_dir/_uninstall/qnx632/uninstaller.bin -W beanDeleteConfigDir.active="False"
(Ref# 56879)
- VMware ESX (or a VMware workstation using SCSI disks) doesn't present
an EIDE interface to the guest OS.
It offers only a default of an LSI Logic SCSI 320 device (which we don't
support) and a second selectable option of a BusLogic 946C device as a
PCI device.
It does let you boot off an IDE CDROM, but won't let you install to an IDE disk; even if the real physical storage is an IDE device, VMware presents it virtually as one of the two aforementioned devices. (Ref# 51509)
Workaround: In order to install Neutrino on a VMware VM using the BusLogic SCSI controller emulation, you must first apply a driver update. We've included this update on the installation media:
- Boot from the installation DVD.
- On seeing the initial “Press space for options” message, press the space bar.
- Choose to apply the driver update.
- Follow the instructions on the screen using /fs/cd0 (i.e. the installation media) as the source.
For more information on installing driver updates, see “Updating disk drivers” in the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide.
- If you install QNX Software Development Platform 6.5.0 on Windows
using a third-party windows explorer (e.g., Total Commander), the
installer doesn't display the Activation window once the installation
is complete.
(Ref# 59359)
Workaround: Open the QNX SDP Activation dialog by selecting
from the Start menu, or by entering the following at the command prompt:drive:Program FilesQNX Software Systemsbinqnxactivate -a
Known issues: Kernel
- procnto
-
The procnto image filesystem doesn't support combined seeks and reads. (Ref# J2686437)
- User-specified band configurations in the standard memory allocator
may corrupt your application's memory, and may cause the
application to crash.
(Ref# 77776, J169726, 77811, J169727)
Workaround: If you specify the band configuration, make sure that the bands are 4080 bytes or smaller, and that all band sizes are multiples of 8 bytes.
- If there's a continuously-running, regular, high-frequency hardware interrupt, it's possible for a kernel call to be continually interrupted and restarted. The precise definitions of “continuously-running” and “high-frequency” are application-specific, but any regular interrupt with an interval less than the clock interrupt interval, that persists for an extended period should be carefully analyzed to ensure that it doesn't affect the operation of the application. One case where this continual restart can occur is when very large (e.g., 100 MB) messages are passed on slow processors. (Ref# 56741, J167989, 62212, J168503, 75921, J169537)
- If you debug a statically linked executable on MIPS targets,
the kernel might crash.
(Ref# 76318, 169571)
Workaround: Start procnto with the -mL option.
- A priority inversion can occur as a result of creating a thread; the procnto thread tasked with allocating the stack can become blocked on a condvar that's waiting for a lower-priority (e.g., fs-nfs3) operation to finish. (Ref# 47811, 71196, J382440, 74700; Ticket ID 47811; Case# 00100888)
- Some single-threaded resource managers—such as io-pkt,
fs-qnx6.so (which becomes single-threaded when it's
sychronizing), and QDB—may become WAITPAGE-deadlocked if the
system uses lazy page faulting.
For example, the problem could occur when io-pkt replies to a client and becomes WAITPAGE-blocked because the client's memory isn't faulted in. The procnto thread that's dispatched to handle it then gets blocked waiting on the address space lock of the client process, which is currently owned by a procnto thread that was already trying to satisfy a page fault request that involved talking to NFS, which can't finish because io-pkt is blocked waiting for the lock to be released. (Ref# 62483, J382313)
Workaround: Disable lazy page faulting by specifying the -mL option to procnto.
- If you create a shared memory object, mmap() it with MAP_SHARED, create a synchronization object (e.g., a mutex) in it, and then mmap() with MAP_PRIVATE to the same offset in the shared object, then the application and some some programs such as pidin and shutdown may hang. (Ref# 63369, J168610)
- We've observed some memory corruption for uncacheable memory with the Renesas BigSur (SH7751) board. It might be a problem with the hardware. (Ref# 27741, J166303)
- Some calls to mmap() with MAP_ANON or MAP_LAZY may be slower with QNX SDP 6.5.0 than with earlier releases on certain platforms. The difference is more pronounced for small sizes (e.g., 4 KB). For larger sizes (more than 32 KB), performance may be the same or better with 6.5.0. It might take longer to start applications and create threads. In part, this is due to the virtual memory manager's more complete data structures. (Ref# 27831, J166330, 29341, J166681)
- If you're in a directory on a remote machine, and you pipe the output
of a command to xargs, and you redirect the output to a file,
you get a “cannot fork” error.
For example:
cd /net/remote_machine/tmp find . -type f | xargs grep FAIL > report.txt /bin/sh: cannot fork - try again
It seems to be a problem with permissions. Piping the output of xargs to less works. (Ref# 29834, J166762)
Workaround: Log in as root.
- If you have multiple memory mappings to files that use the same underlying resource manager, and these mappings are first referenced simultaneously (e.g., the first reference in a program), there is the potential for a deadlock if the number of simultaneous first references exceeds the number of threads in the underlying resource manager. (Ref# 29440, J166702, 30045, 62483, J382313)
- Some older versions of VMware may show signs of instability. For example, you might get kernel faults that don't occur on real machines or with VMware 6.5. You might also see messages such as “The CPU has been disabled by the guest operating system.” (Ref# 57058, J382252)
- procnto and the underlying filesystem may become deadlocked
when you use read/write memory-mapped files with multiple threads,
under the following circumstances:
- If you have multiple mappings to files that use the same underlying resource manager, and these mappings are first referenced simultaneously (e.g., the first reference in a program), there is the potential for a deadlock if the number of simultaneous first references exceeds the number of threads in the underlying resource manager.
(Ref# 29440, J166702, 29380, J166687)
- When you use fork() to create a child process, the kernel clones the floating point register context from the parent to the child, but it doesn't clone contexts other than the CPU or FPU register sets. This isn't likely to affect your programs. (Ref# 71327, J169169)
- procnto-smp
-
- We've observed an issue in the x86 SMP kernel where a ready thread
sometimes won't run on an idling CPU:
- On interrupt entry, if the CPU is halted (because the idle thread executed a halt instruction), then the interrupted context could be mistakenly identified as “kernel” instead of “user.” This isn't a result of the halt itself, but rather that idle thread is making a kernel call to call halt.
- On interrupt exit, the behavior depends on the interrupted context, whether another CPU holds a kernel lock, etc. Under certain conditions, this issue could cause either the rescheduling not to be done and the idle thread to run until the next interrupt, or the idle thread to attempt to reacquire the kernel (with priority 0) instead of “force kernel” (with the highest priority).
(Ref# 156062, J383827)
Workaround: Specify the -h option for procnto-smp, to disable CPU halting in the idle thread.
- Some multiprocessor systems, such as the Power Book E and
the ARM Cortex-A9 MPCORE, have an
interrupt controller on each processor, but QNX Neutrino currently
assumes there's only one controller.
Unmasking an interrupt on one processor may leave it masked on other
processors.
(Ref# 60301, J382285)
Workaround: Bind all threads that mask and unmask interrupts so that the threads run only on CPU 0.
- We've observed some rare and sporadic kernel crashes on PPC Booke SMP systems. (Ref# 163317, J181759)
- We've observed an issue in the x86 SMP kernel where a ready thread
sometimes won't run on an idling CPU:
The QNX Neutrino User's Guide should say that
the limit on system RAM on x86 targets is 32 GB.
(Ref# 1564595)
Known issues: Libraries and header files
- attexit()
It isn't safe to call attexit() from a shared object that's meant to be dynamically opened using dlopen(). If you do this, your application might crash when you call dlclose(). (Ref# J521222)
- brk(), sbrk()
These functions don't do anything useful under QNX Neutrino; don't use them. (Ref# J166490, J191638, J743268)
- dlopen()
An empty entry in LD_LIBRARY_PATH (i.e., a colon that isn't followed by a path) is interpreted as
search the current directory,
but a colon at the end of the string is currently ignored. (Ref# J2499532)Workaround: If you want the current directory to be searched at the end of LD_LIBRARY_PATH, end the value with a colon followed by a period (:.).
- fdatasync(), fsync()
- Calls to these functions on a PPS file always fail with errno set to 22 (invalid argument). (Ref# 77943, J169741)
- fork()
-
This function gives a misleading error code (EINTR if the calling process's priority is above the allowable range. (Ref# J1601362)
- Unnamed semaphores aren't inherited across a fork(). (Ref# 59947, 73710, J169361)
- fpemu.so.2
- This library causes some problems on x86 targets if it's compiled with gcc 4 with optimization above -O0. To avoid these problems, we've compiled the DLL with -O0 optimization for x86. (Ref# 55883)
- ioctl()
The SIOCDARP, SIOCGARP, and SIOCSARP commands aren't implemented, but the return code is ENXIO instead of ENOTSUP. (Ref# J1589096)
- libxml.a
- This library is a Neutrino interface to version 1.1 of the Expat XML Parser, but it isn't documented. For information about this library, see <xmlparse.h> and <xmltok.h> in $QNX_TARGET/usr/include. (Ref# 56140)
- <limits.h>
The definition of USHRT_MAX is incorrect; it should be as follows:
#if __INT_BITS__-0 <= 16 #define USHRT_MAX 65535U /* maximum value of an unsigned short */ #else #define USHRT_MAX 65535 /* maximum value of an unsigned short */ #endif
(Ref# J2753844, J2753845)
- memcpyv()
This function erroneously copies some data if dparts or sparts is zero or negative. (Ref# J2891101)
Workaround: Make sure that dparts and sparts are positive.
- mphys()
This function doesn't work properly with addresses that are greater than 4 GB. We plan to remove it from the library in a future release. (Ref# J1571467)
- MsgKeyData(), MsgKeyData_r()
These kernel calls don't work properly over Qnet; if the client and server are on different nodes, the verification step fails, even if the data is correct. (Ref# J418418)
- posix_fallocate()
POSIX says that this function should return 0 or an error code, but it currently returns 0 or -1, setting errno if an error occurs. (Ref# J1279909)
- posix_mem_offset()
- POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563, J183709)
- posix_memalign()
- If you call:
posix_memalign(&ptr, 128, 128 - 2 * sizeof (void*));
the allocator loops forever. (Ref# 179337, J184371)
Workaround: Change the band configuration back to the original 6.5.0 setting:
export MALLOC_BAND_CONFIG_STR="8:16,32,0:24,32,0:32,32,0:48,24,0:64,24,0:80,24,0:96,16,0:128,8,0"
- posix_spawn_file_actions_addopen()
This function isn't fully implemented. It currently doesn't do anything, but the return code indicates success. (Ref# J701207)
- posix_typed_mem_open()
If you don't specify a leading slash in the name and you aren't in the root directory, this function fails to open the typed memory object. (Ref# J1035253)
Workaround: Start the name with a slash.
- sem_timedwait(), sem_wait()
If you use these functions with named semaphores, calls to sem_timedwait() might not be unblocked when the timer expires, and calls to either of these functions might not be unblocked by signals. (Ref# 2811281)
Workaround: Use unnamed semaphores with timeouts. For sharing, use unnamed semaphores in memory that's shared between processes.
- shm_ctl(), shm_ctl_special()
- If an error occurs, these functions set errno to ENOSYS (not EINVAL as documented). They should provide better diagnostics. (Ref# 26440, J166020)
- <sys/shutdown.h>
The ProcessInfo_t structure includes a field called class, so you can't use this header in a C++ program because class is a keyword. (Ref# J175596)
- tc*()
Some tc*() (terminal interface) functions are implemented as having cancellation points when according to POSIX, they must not or should not have them. This issue is being fixed in a newer version of QNX SDP.
The terminal interface functions that incorrectly do have cancellation points include:
- tcdrain()
- tcgetsid()
- tcsetsize()
- tcgetsize()
- tcinject()
- tcischars()
In the documentation, the safety table for each listed function has a No value in the Cancellation point column. This should be used as a guideline in writing programs that use these functions; they should not be used as cancellation points. (Ref# J2711220)
- ThreadCreate()
- This function doesn't check the priority range when PTHREAD_EXPLICIT_SCHED is set. For example, if you use the on command while logged in as a non-root user, and you specify a priority greater than 64, on still executes the command but at the priority of the calling shell. It should give an error saying you don't have permission to create at that priority. (Ref# 28763, J166539)
Known issues: Filesystems
- io-fs-media
- On ARM platforms, you can't use an io-fs-media share to store a directory structure with more than 16 MB of data. (Ref# 56601)
- chkfsys
- If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, J167473, 48764, J167474, 48765, J167475)
- fs-ext2.so
- If you try to delete a linked file or directory in a Linux Ext2 filesystem, you get a “Corrupted file system detected” error. Note that we support only read access to this type of filesystem. (Ref# 50264)
- fs-qnx6.so
- The io-blk manager lets you mount a filesystem in a file.
To do this, you basically create a normal file on a disk, and then
format it (via dinit, mkqnx6fs, mkdosfs,
etc.), as a filesystem.
You can then run a command, such as:
mount -tqnx4 /home/myfs.img /fs/test
and you'll get a mountpoint called /fs/test, which is the size of the file and is formatted as a QNX 4 filesystem.
If you used fs-qnx6.so as the real filesystem on the hardware, and then created a QNX 4 or DOS filesystem inside a file residing on the Power-Safe filesystem, the host filesystem formerly could become damaged by the modifications to the hosted filesystem. We've fixed that, but the host filesystem might not be able to confer full power-loss safety to the (by design) not power-loss-safe QNX 4 or DOS filesystem. (Ref# 74580, J169426)
Known issues: Startup
- If you load an uncompressed OS image that's larger than 3 MB on an x86
target, some binaries (e.g., ftp) may crash.
(Ref# 45838, J346829)
Workaround: Specify this attribute in the mkifs buildfile:
[image=0x700000]
- If you have a PC-compatible system with a BIOS, and the system has 4 GB or more of memory, you should specify the -x option to startup-bios. This option enables extended addressing, which lets you access physical addresses above 4 GB. We'll turn this option on by default in a future release. (Ref# 61758, J393285)
- A situation exists on PowerPC-based boards with less than 256 MB of RAM
whereby a machine check can be received.
This is due to a speculative load (for a branch not taken) from a memory
address beyond the extent of physical RAM but within the first 256 MB
window.
This condition has been detected only on a Freescale MGT5200 Lite with
64 MB of memory and only during the execution of a specific sequence of
regression and benchmark tests on the kernel.
The possibility of occurrence has existed in all previous Neutrino releases;
however, to best of our knowledge, no such failures have been reported.
(Ref# 28335, J166469)
Workaround: A requirement of startup code for PowerPC-based boards is to configure the DBAT0 register. The register is currently configured for a minimum size of 256 MB. Initializing DBAT0U[BL] to the exact (power of 2) size of physical memory will eliminate this situation from producing a machine check exception. Alternatively, if possible on the particular board, disabling the assertion of TEA will also prevent the errant (speculative load for a branch not taken) machine check when this specific situation occurs. This option should be considered in the context of the entire system. Please contact QNX for specific questions about these and other workarounds.
Known issues: Adaptive partitioning
- Overloads aren't reported to users. The Adaptive Partition scheduler detects overload and acts to limit some partitions to guarantee the percentage shares of others, but it doesn't inform anything outside of the kernel that an overload was detected. The problem is that an overload might occur (or might not occur) on every scheduling operation, which can occur at the rate of 50000 per second on a 200 MHz machine (an older, slower machine).
- SCHED_RR threads might not round robin in partitions whose portion of the averaging window is smaller then one timeslice. For example, when the timeslice is 4 ms (the default) and the adaptive partitioning scheduler's window size is 100 ms (the default), then SCHED_RR threads in a 4% partition may not round-robin correctly. (Ref# 28035, J166387)
- If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408, J166694)
- Threads in a zero-budget partition should run only when all other nonzero-budget partitions are idle. However, on SMP machines, zero-budget partitions may incorrectly run when some other partitions are demanding time. However, at all times, all partitions' minimum budgets are still guaranteed, and zero-budget partitions will not run if all nonzero-budget partitions are ready to run. (Ref# 29434, J166701)
- On ARM targets, the 10 window and 100 window averages, as reported by the aps show -v command, are sometimes garbled. However, these have no effect on scheduling. (Ref# 27552, J166243)
Known issues: Booting
- The combination of F1 and F4 for
diskboot (Safe Mode, Don't mount filesystems) doesn't work.
(Ref# 21876)
Workaround: Press F5 to start the debug shell; it simply starts fesh just after mounting the filesystems. If you want to run a consistency check a filesystem, run /sbin/chkfsys after the shell starts.
- If you install QNX Neutrino on a system that uses the
Intel Express Q35 chipset, the OS won't boot.
The ITE EIDE interface on this board isn't supported.
(Ref# 61188)
Workaround: Run the driver in PIO mode.
- Fujitsu Coral cards don't support text mode, so on x86 systems, you need two video cards: one to use in text mode, and one for the Coral card.
- QNX Neutrino might not boot on machines with an
ICH6 chipset with the hard drive on SATA, and a CD drive on EIDE.
The OS detects the SATA device and then hangs on EIDE detection.
(Ref# 40446)
Workaround: Use the -R command-line option to diskboot (if you're booting from a CD, press Space when the “Hit space...” appears, and then press F3). Using this option prevents diskboot from restarting a devb- driver. The drivers are restarted if only a CD-ROM is found. In the case of this issue, the restart means devb-ahci and devb-eide compete for the same bus, which results in a hang.
- Some Sony VAIO laptops don't assign an interrupt to a USB device;
when you're booting Neutrino, you'll see some
“InterruptAttachEvent failed” messages.
(Ref# 41237)
Workaround: Contact Technical Support to get a customized utility that enables the interrupts.
- On some Intel 3.2GHz D945G systems, the USB bus is reset by the host after
rebooting, while the host is addressing the device.
(Ref# 51935)
Workaround: Disable legacy USB support in the BIOS.
- The Dell Latitude D830 fails to boot QNX Neutrino 6.5.0 from USB mass-storage devices. (Ref# 61688, J348144)
- The bootable version of QNX Neutrino on the DVD doesn't include the documentation, in order to reduce the space requirements.
Known issues: BSPs and DDKs
- If you're building a pre-6.5.0 BSP, you may need to remove some files for the BSP to compile (and work) properly. If you have problems building a pre-6.5.0 BSP, refer to the “Building 6.4.x BSPs with QNX SDP 6.5.0” section of the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info.
- Changing the variant of a BSP to ARMv7 isn't supported, because any prebuilt libraries in the BSP are not compatible with ARMv7. For more information, see the BSP 6.5.0 information wiki, http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.5.0_BSP_Info.
- SH4 binaries linked with QNX Neutrino 6.2.1 or earlier
generate an “illegal instruction” error on exiting when you
run them on SH4A targets.
Renesas changed the nop opcode between SH4 and SH4A, and
some of our process-initialization files (inserted at link time)
used the old form.
This was fixed in QNX Neutrino 6.3.0.
(Ref# 24701)
Workaround: Relink any SH4 binaries that you linked with QNX Neutrino 6.2.1 or earlier.
Known issues: Compiler, tools, and utilities
- ksh, pipe
- There's a problem with interactions between pipe and
ksh on SH targets.
If you use multiple pipes in a command line under ksh,
all output can be lost.
For example:
# uname -a QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle # uname -a | grep renesas QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle # uname -a | grep shle QNX renesas_sh7785 6.5.0 2008/09/26-04:27:12EDT SDK_7785 shle # uname -a | grep renesas | grep shle #
(Ref# 62242)
- ld
-
- Between the 2.10.1 version of the GNU linker
in QNX Momentics 6.2.1 and the 2.12.1 version in QNX Momentics 6.3.0, a
bug was fixed in the handling of relocation addends for SH
targets. As a result of this fix, SH startup binaries
(e.g., startup-systemh) that were created prior to
QNX Momentics 6.3.0 won't work correctly if included in a boot image
generated in QNX Momentics 6.3 or later.
Workaround: Rebuild the startup binary using QNX SDP 6.5.0 SP1. The resulting startup will work with 6.2.1 or later.
- Between the 2.10.1 version of the GNU linker
in QNX Momentics 6.2.1 and the 2.12.1 version in QNX Momentics 6.3.0, a
bug was fixed in the handling of relocation addends for SH
targets. As a result of this fix, SH startup binaries
(e.g., startup-systemh) that were created prior to
QNX Momentics 6.3.0 won't work correctly if included in a boot image
generated in QNX Momentics 6.3 or later.
- mkbuild
On Windows 7, you must run mkbuild as an administrator. (Ref# J331476)
- mkefs, mketfs, mkifs
If your buildfile specifies an attribute of type=link, and you specify only one file name, you get a symbolic link from that name to itself. Specifying one file name for a link will be flagged as an error in a future release. (Ref# J587290)
- pidin
- If the first page of a memory-mapped object is written to, pidin might display /dev/zero instead of the object's name. (Ref# 43050, J382175)
- qcc
The qcc utility automatically links against some default libraries, including libc. If the last -Bstatic option on the command line appears after the last -Bdynamic option, qcc links against the static versions of the default libraries.
Workaround: Add -Bdynamic to the end of the command line.
- showmem
This utility incorrectly includes the size of bss sections in the Heap statistics, instead of in the Data statistics. (Ref# J1570591)
- traceprinter
- When a kernel call fails, the instrumentation records the errno value. However, if you use traceprinter on the .kev file in a cross-endian environment (e.g., the .kev file was generated on big-endian, and you're running traceprinter on little), the errno value that gets printed isn't swapped before being displayed. For example, an EFAULT is displayed as 0xe0000000 rather than 0xe. (Ref# 76429, J382506)
Known issues: Device drivers
- You might see a message such as “Range check failed (MEM) - Dev 1b -
Vend 168c - Class 20000 - Addr 0 - Size 10000” in the system log,
but you can ignore it.
The PCI server code allocates one byte low of PCI memory and one byte high of PCI memory and keeps these values as the range of low and high PCI memory. It does the same for I/O space. The server then scans all devices in PCI space and checks the I/O and memory ranges for each device against the stored range values to see whether they're valid or not. If a range check fails, the device is placed in the disabled state and is initialized when an application calls pci_attach_device(). The PCI server code is standard across all platforms and only the low-level, hardware specific portion changes, so there is a generic portion to all the drivers. (Ref# 50790)
- We haven't fully tested the following drivers:
- deva-ctrl-ess1938.so
- deva-ctrl-geode.so
- deva-ctrl-nmg6.so
- deva-ctrl-sb.so
- deva-ctrl-via8233.so
- devc-serzscc
- devg-flat.so
- devg-geode.so
- devg-sis630.so
- devh-touchintl.so
- devi-dyna
- devi-semtech
- devn-el509.so
- devn-pegasus.so
- devn-rtl8150.so
- devn-smc9000.so
- devp-pccard
(Ref# 61821)
Audio device drivers (deva-*)
- Audio drivers included in BSPs that were released before QNX SDP 6.4.1 are
incompatible with 6.4.1 and later.
If you try to start them, you'll get some errors about unresolved
symbols.
If you have the source code, and you try to recompile it using
gcc 4.2, you'll get some compile errors.
(Ref# 59692)
Workaround: Relink the driver binaries on Neutrino 6.5.0 SP1. For updated source code, see Foundry 27 on our website, or contact Technical Support.
Block-oriented drivers (devb-*)
- devb-adpu320
- Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772, J344494)
- devb-aha8
- You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
- devb-eide
- DMA modes don't work on these drives:
- Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111, May 2006
- Toshiba Samsung Storage Technology TS-H352C/DELH, DE02, May 2006
(Ref# 41600)
- DMA modes don't work on these drives:
Graphics drivers (devg-*)
- devg-*
-
- The flash-ph player (part of the QNX Aviage HMI Suite) doesn't work with video cards that don't provide a linearly accessible frame buffer; this includes the Fujitsu Carmine graphics card. (Ref# 61783)
- All graphics drivers hang while trapping on (discontinued)
Abit IS-20 (865GV) motherboards because of an issue in the BIOS.
(Ref# 39626)
Workaround: Use the onboard graphics controller instead. If you set the onboard display as the primary controller, any installed PCI graphics cards will still be detected / trapped.
- devg-radeon.so
-
- The devg-radeon.so driver doesn't work properly on
DVI-equipped monitors.
If you're using an ATI Radeon PCI-Express Vendor ID 0x1002, and device
ID 0x5B60, you may experience GUI failure during mode switching.
(Ref# 41905, J376749)
Workaround: Use the devg-svga.so or devg-vesabios.so graphics driver instead, or manually edit /etc/system/config/display.conf to find a display mode that works with devg-radeon.so.
- The planar YUV overlay format doesn't work properly in the devg-radeon.so driver. (Ref# 29014, J75083)
- The devg-radeon.so driver doesn't work properly on
DVI-equipped monitors.
If you're using an ATI Radeon PCI-Express Vendor ID 0x1002, and device
ID 0x5B60, you may experience GUI failure during mode switching.
(Ref# 41905, J376749)
- devg-smi5xx.so
- This driver faults or deadlocks in multicard setups. (Ref# 59790, 60369, 76945, J219818)
- devg-unichrome.so
- The usage message for this driver describes it as a generic Vesa 2.00+ BIOS modeswitcher. It's really for VIA Unichrome chipsets. (Ref# 161461, J76765)
- devg-vesabios.so
- If you use devg-vesabios.so on a Dell 830, the system
won't reset when you shut it down while in graphics mode.
(Ref# 57168, 390323)
Workaround: Use phgrafx to change the driver to devg-i830.so. You can also avoid the problem by exiting to text mode, and then typing shutdown at the command prompt.
Human interface device drivers (devh-*)
- devh-usb.so
- Autorepeat doesn't currently work on USB keyboards that are connected to the system via a Avocent KVM 4SVPUA20 switch. (Ref# 41118, J346419)
- Pressing the space bar on a ViewSonic 10191 USB keyboard when the
system displays the
“Press space bar to input boot options” message
doesn't work.
You get the menu only after the EIDE enumeration is done.
If you also have a Microsoft USB mouse connected, you get a “devh-usb.so - Unable to attach to USB device 1 (10)” message. (Ref# 41122)
Network drivers (devn-*, devnp-*)
- devn-asix.so
- This driver doesn't support the 1000 MB/s interface of the
Linksys Gigabit USB Adapter (model no. USB1000).
(Ref# 38115, J346034)
Workaround: Force the driver to use speed and duplex settings that it supports (10 and 100 Mbit/s).
- devnp-i82544.so
- The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299, J473852)
USB drivers (devu-*)
- The PCI-USBNEC101-5P-1 controller card won't allow at least the following boards to boot: SystemH, EDOSK7780, BCM1x80. (Ref# 29496)
Flash filesystems & embedding
- In previous versions of this software, a program that called
umount() without the _MOUNT_FORCE flag would
behave as if the flag was provided (i.e. the flash
filesystem would be unconditionally unmounted regardless of any
operations either pending or in progress on the filesystem).
In this release, umount() sets errno to EBUSY if any pending or in-progress flash filesystem operations exist on the filesystem unless you specify _MOUNT_FORCE. The same applies for scripts that call the umount utility without the -f option. This has implications for applications that expect _MOUNT_FORCE behavior but don't specify it.
- libfs-flash3 loses blocks with ftruncate(). (Ref# 25132)
- There's a memory leak of approximately 1 KB when you unmount a raw flash filesystem partition (e.g., dev/fsxpy). (Ref# 23643)
- When you create a file in an embedded transaction filesystem (ETFS), the parent directory's times aren't updated as POSIX requires. (Ref# 23243, J165465)
- There's currently no flash probe utility. (Ref# 23136)
- fs-flash3 doesn't have an iofdinfo() handler for mtree tests. (Ref# 18432)
- If you create a 255-character filename using the 1.1.0 flash library (libfs-flash3) and the flash filesystem is subsequently mounted using an earlier version of libfs-flash3, the filename won't appear in the filesystem, but it is still present (i.e. if the filesystem is subsequently mounted again with the 1.1.0 libfs-flash3, the filename will reappear). This behavior applies only to forward compatibility whereby an older flash filesystem library is used to mount a newer filesystem. Backward compatibility (the ability of the new filesystem library to mount older filesystems) isn't affected.
Known issues: IDE
The IDE contains the following known issues:
- General
- Application Profiler perspective
- System Profiler perspective
- Memory Analysis perspective
- System Information perspective
- System Builder perspective
- C/C++ development
- Debugging
See also the list of host-specific issues, later in these notes.
Known issues: General
- We pre-index our documentation, but the first time you search for anything in the IDE's Help system, it has to combine the indexes (and index any Eclipse documents that haven't been indexed). This should take less than a minute.
- If you use
Workaround: Use the search in
.
, links that go
to the IDE User's Guide don't work.
Links that go to other documents work.
(Ref# 77552, J331149)
- You might see a message like this when you start the IDE:
Subscription License Expired - Your QNX License could not be obtained, some QNX functionality will be disabled.
This message appears only if QNX Software Systems has a contract with you to support server-based licenses. It indicates one of the following:
- You need to configure your license server.
- More users are trying to use the IDE at the same time than there are available licenses for.
(Ref# 51688, J236666)
- If you choose , and you already have the latest version of qconn, the updater simply exits without telling you that your qconn is up to date. (Ref# 50207)
- The Eclipse editor doesn't behave correctly on very long lines (more than 4500 characters). At the end of a long line, the cursor doesn't position itself properly between characters, selections and changes are very slow, and the column number is reported incorrectly. (Ref# 29586, 21053; Eclipse-CDT PR 68116)
- Pressing F1 for context-sensitive help doesn't always give you much information. (Ref# 21034, J467095)
- If the IDE can't open the browser to display the documentation, it
may give you an error message of:
An exception occurred while launching help. Refer to the log for more details.
The problem could be that the IDE couldn't find your default browser. Check the web browser listed in your preferences (see
) to make sure it's a browser that's installed on your system.If this doesn't fix the problem, check the log file; see
. If you've installed the Eclipse SDK, use the Error Log view. (Ref# 29971)
Known issues: Application Profiler perspective
- If you're using Sampling and Call Count Instrumentation,
the Application Profiler checks the samples only for processor 0 on
a multiprocessor system.
(Ref# 77220, J393694)
Workaround: If you're profiling an application on a multiprocessor system, bind all the threads so that they run on processor 0.
- If you use Mudflap, disable it, and then enable application profiling,
the output might still go to mudflap.output.
(Ref# 67197)
Workaround: When you disable Mudflap and enable Application Profiling in the Launch configuration, click Apply, then Close, and then run the application.
- The Application Profiler can allocate CPU time to the wrong line
if you're profiling code that has profiling and debugging information,
and if you linked against a static library that doesn't have
profiling and debugging information.
(Ref# 21024)
Workaround: Build everything with debugging information, or use -gdwarf-2 instead of -gstabs.
Known issues: System Profiler perspective
- The System Profiler requires a minimum color depth of 16 bits; otherwise, the timelines might appear to be blank. (Ref# 23763)
- The text at top of the Summary page isn't displayed.
(Ref# 45814)
Workaround: Close and then reopen the System Profiler perspective to restore the summary information.
Known issues: Memory Analysis perspective
- When you request the termination of the Memory Analysis service, it might take longer than expected. (Ref# 46228)
- In the Memory Analysis perspective, if a function causes a buffer overflow, memory leaks aren't detected correctly. (Ref# 42312)
- You might see some allocations take place before your application's main() function starts. This is normal; some of the system libraries allocate space as they're initialized. (Ref# 29698)
- If a process is not running as the root on the target machine, the Attach mode will not function properly.
(Ref# 44762, J328853)
Workaround: Run the process as the root. If the process is launched using qconn, then qconn should be run as root.
- The Memory Analysis Tool changes the behavior of a program that uses fork.
(Ref# 29032)
Workaround: If your program uses fork, you must disable the control thread of the Memory Analysis Tool (from the Launch Configuration, select
and disable Create control thread).In addition, it is not possible to attach to this type of process because the Memory Analysis Tool needs to run a control thread.
Known issues: System Information perspective
- In the System Information perspective, if you use continuous logging and the currently selected process ends, the IDE loses focus. (Ref# 41630)
Known issues: System Builder perspective
- In the System Builder, having the same binary and directory name in the overrides can result in an incorrect path for the binary. (Ref# 40287)
Known issues: C/C++ development
- If the Makefile for a regular C++ make project
uses implicit rules such as the following:
all : cc2 cc2 : cc2.o cc2.o : cc2.cpp
then the link stage doesn't work properly. (Ref# 62006)
Workaround: To avoid this, use an explicit rule for linking:
cc2 : cc2.o $(CXX) -o cc2 cc2.o -lang-c++
- The IDE sometimes ignores an explicit build request for a project, such as
those invoked by using the Build Project entry in the C/C++ Project
view's right-click menu, if the project uses an externally built
library.
(Ref# 20966)
Workaround: Use an explicit target in the make command.
Known issues: Debugging
- Breakpoints set in .gdbinit don't show up in the user interface. (Ref# 55810, J393602)
Known issues: Documentation
- usbd_io()
The entry for this function in the USB DDK documentation doesn't include all the return codes. This function can return the following:
- EAGAIN
- The device has been reset.
- EBADF
- Improper usbd_connect() call.
- EMLINK
- Too many URB links.
- ENODEV
- The device was removed.
- ENOENT
- The requested URB couldn't be found in the stack side. For example, the configuration, interface, or endpoint wasn't present, or it wasn't in the correct state.
- ENOSPC
- Not enough transmission buffers.
- EOK
- Success.
(Ref# J623946)
- usbd_free_urb()
The entry for this function in the USB DDK documentation says that it returns EOK, but it actually returns a pointer to the next URB in the chain (if any). (Ref# J177149)
- isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper()
Note that these functions take an integer argument, but the value must be representable as an unsigned char or be EOF; the behavior for other values is undefined. (Ref# 120364, J174062)
- iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), towupper()
Note that these functions take a wint_t argument, but the value must be a wide-character code that corresponds to a valid character in the current locale, or must be WEOF; the behavior for other values is undefined. (Ref# 120364, J174062)
Known issues: Instant Device Activation
- The default startup [image=] memory location as specified
in buildfiles for Biscayne boards causes a memory error when using a
minidriver.
You get a “cannot remove all sysram”
error message.
(Ref# 23632, J345251)
Workaround: Change the memory location to 8c004000 from 8c002000 (e.g., [image=0x8c004000]).
- We've provided a mini serial port driver for the Freescale Lite5200B, but
not for the Freescale Media5200b.
(Ref# 40572)
Workaround: If you need a mini serial port driver for the Media5200b, you can modify the one for the Lite5200B. You need to change the interrupt number to 68 and use PSC6, GPIO6.
- The code for the mini serial port drivers on the
Renesas Biscayne and TI OSK5912 boards have the baud rate set to 14400.
(Ref# 40570)
Workaround: You need change the baud rate to the correct one below:
- Renesas Biscayne
- int baud=57600;
- TI OSK5912
- int baud=115200;
- In the current mini serial port driver test case for the Renesas Biscayne,
when the real serial driver attaches to the interrupt, it disables Rx and
Tx interrupts.
It might lose some data between these two stages.
(Ref# 40514)
Workaround: Change the following code so that it doesn't disable Rx (SH_SCIF_SCSCR_RE).
In mini_serial.c:
if (state == MDRIVER_INTR_ATTACH) { set_port16(mdata->port + SH_SCIF_SCSCR_OFF, SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE, 0); return 1; }
In minidriver-serscif.c, change this:
out16(port + SH_SCIF_SCSCR_OFF, SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE);
to this:
out16(port + SH_SCIF_SCSCR_OFF, in16(port + SH_SCIF_SCSCR_OFF)|SH_SCIF_SCSCR_RIE);
The baud rate and clock for Biscayne should be 57600 and 33333333.
Known issues: I/O devices
- io-usb
- In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
- The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556, J344839; Ticket ID 77965)
- io-usb might crash with a SIGSEGV when you shut down the system and you don't have any USB devices inserted. (Ref# 29495, J345914)
Known issues: Multimedia
- Multimedia TDK 1.0.1
- QNX SDP 6.4.1 and later don't support Multimedia v1.x. Applications that depend on Multimedia v1.x will no longer resolve symbols or execute under 6.4 or later. For multimedia support, you need to install the QNX Aviage Multimedia Suite. (Ref# 55967)
Known issues: Networking
- devnp-*
- When using the m_pkthdr_csum_data member in network driver code, make sure that you use only the bottom 16 bits. The top 16 bits may contain undefined data. (Ref# 44622, J473874)
- dhcp.client
There's no way in the dhcp-options file to send options that require additional data. (Ref# J169953)
- ifconfig
- The commands:
ifconfig iface_name up
ifconfig iface_name scandon't work individually for Wi-Fi drivers. (Ref# 61246, J393284)
Workaround: Combine the commands:
ifconfig iface_name up scan
- lsm-qnet.so
- Qnet might append the domain name to entries under /net,
even for nodes in the same domain.
(Ref# 75539, J474806)
Workaround: Use the setconf _CS_DOMAIN command to change the domain name to something else, and then change it back to its original value.
- The only supported bind= options for Qnet are bind=ethernet_interface and bind=ip. Other values for bind=X are still accepted (that is, no error is given), but Qnet may not work with them if the specified ethernet_interface doesn't appear. (Ref# 58234, J474325)
- Qnet currently expects all packets to be received and sent as a
single contiguous buffer.
This can be a problem if you're using jumbo packets.
(Ref# 47828, J473994)
Workaround: When you're using Qnet with an Ethernet driver that's enabled to use jumbo packets, you should set the cluster size (the mclbytes option to io-pkt*) to be the same as the packet size (the ifconfig if_name mtu command for the driver). This ensures that the packet buffers that Qnet uses are contiguous in memory.
If you specify a jumbo packet size larger than 4 KB (the default page size), you must additionally specify the pagesize=X option to io-pkt, with the same value as the mclbytes=X option. For example, to use 8100-byte packets with devnp-i82544.so, do the following:
io-pkt-v4 -d i82544 -p tcpip pagesize=8192,mclbytes=8192 ifconfig wm0 mtu 8100 mount -T io-pkt lsm-qnet.so
Be sure to mount Qnet after you change the MTU of the interface with ifconfig. If you now type:
cat /proc/qnetstats
you can see that the Qnet L4 has an MTU of 8096, which it learned from the driver (remember the 4 bytes for the trailing CRC).
All the Qnets on your LAN must have exactly the same MTU. You can specify a particular MTU to Qnet (which can be the same or less than the driver-advertised value) with the mtu_en=X option.
- Qnet treats the _CS_DOMAIN configuration string differently if it's undefined or set to a NULL string. If it's undefined, Qnet uses a domain of .net.intra; if it's set to a NULL string, Qnet applies that as the domain (for example hostname.). (Ref# 19676, J473190)
- Qnet doesn't fully support communication between a big-endian machine and a little-endian machine. However, it does work between machines of different processor types (e.g., ARMLE, x86) that are of the same endian-ness. For more information, see the Advanced Qnet Topics chapter of the QNX Neutrino Programmer's Guide.
- Qnet might append the domain name to entries under /net,
even for nodes in the same domain.
(Ref# 75539, J474806)
- fs-cifs
- If you try to remount a CIFS filesystem, either with:
mount -u cifs_mountpoint
or by calling mount() with the _MOUNT_REMOUNT flag, the filesystem is unmounted. (Ref# 77893, J169740)
- If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574, J473683)
- fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570, J473679)
- fs-cifs incorrectly sets an errno of EPERM instead of EBADF if you attempt to write to a file opened as O_RDONLY or O_ACCMODE. (Ref# 38565, J473675)
- If a component of a pathname supplied to a function isn't a directory, fs-cifs should return ENOTDIR. It currently returns ENOENT. (Ref# 38564, J473674)
- PATH_MAX for CIFS (and thus fs-cifs) isn't 1024 as in POSIX. This is set by both Windows and the CIFS specification. The pathname length can be up to 255 characters. (Ref# 38566, J274605)
- If you try to remount a CIFS filesystem, either with:
- fs-nfs2, fs-nfs3
- fs-nfs2 doesn't correctly implement the options -w size=n and -w number=n as described in the fs-nfs2 usage message. Don't use them. (Ref# 39031, J473717)
If a path ends in a slash, it must be a directory. When you access a link that has a trailing slash, fs-nfs2 and fs-nfs3 immediately return EINVAL, instead of resolving the link and reporting errors such as EPERM (permission denied) or ENOTDIR (not a directory) before returning EINVAL (invalid argument). This behavior was seen as an optimization to reduce network traffic, because this kind of file access will ultimately fail, and it's consistent with the behavior on other OSs. (Ref# 20877, J473236)
- fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022, J473716)
- fs-nfs2, fs-nfs3
- fs-nfs2 lets you modify the on-disk binary file of an executable that is executing. It should return an error with errno set to EBUSY. (Ref# 38563, J473673)
- The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484, J473667)
- NFS is a connectionless protocol.
If a server stops responding to the NFS client, it continues to try
to reach the server to complete an operation until the server becomes
available, or the user stops the operation.
While the fs-nfs2 and fs-nfs3 clients are trying
to reach the server, NFS operations are blocked until they're successful.
This isn't an issue if the client is talking only to one server, but
if an fs-nfs2 process has mounted multiple servers, the
blocked operation also block the client's ability to talk to the other
servers.
(Ref# 39084, J473720)
Workaround: Start separate client (fs-nfs2, fs-nfs3) processes for each server you wish to mount.
- gns
- A gns daemon can't act as both a client and server at the same time. If a local service is registered with a GNS client, the client can forward that information to redundant or backup servers; a server can't forward the information. (Ref# 21037, J473239)
- Currently, GNS (name_attach()) isn't compatible with the
resource manager framework.
(Ref# 20062, J473211)
Workaround: Your resource manager must handle the raw QNX messages until this is corrected.
- io-pkt*
- The stack might send zero-length mbufs to a driver for transmission.
(Ref# 44621, J473873)
Workaround: Drivers must accommodate for this by checking the length of the data in the mbuf and ignoring the mbuf if the length is zero.
- nfsd
- nfsd lets you access files only up to 16 subdirectory levels deep within the directory exported in the /etc/exports file. Deeper directory levels and files aren't accessible. (Ref# 40104, J473747)
- TCP/IP (part of io-pkt)
- The TCP/IP stack doesn't maintain the statistics for outbound packets over VLAN interfaces. (Ref# 16684, J473010)
- The TCP/IP stack doesn't maintain the statistics for the number of input and output bytes or packets if the packets are forwarded via the fast-forward feature. (Ref# 23041, J473311)
- The TCP/IP stack doesn't maintain proper interface statistics for the link speed. (Ref# 27015, J473523)
- If the default UDP socket receive-buffer size is set near its limit (for example sysctl -w net.inet.udp.recvspace=240000), UDP-based sockets become unreliable. (Ref# 27386, 159834, J181071)
Known issues: Graphics
Advanced Graphics
- libimg
- An internal structure exchanged between libimg and the
image codecs changed after we released version 2.0 of the
Advanced Graphics TDK.
Applications compiled and linked statically against the earlier versions
of imglib.a might not function properly, especially
while decoding JPEG images.
(Ref# 48003, 56557)
Workaround: Relink the applications against the newer version of imglib.a.
- Blitting
- The Advanced Graphics libffb library doesn't support blitting to a PAL8 surface from a non-PAL8 surface. Therefore, Pg_IMAGE_PALETTE_BYTE offscreen contexts can be blitted to and from only offscreen contexts of the same type. (Ref# 20391, J390203)
- Changing modes or stopping and then restarting graphics
- When changing modes or stopping and then restarting graphics using devg-i830.so, the
machine might enter a bad state and power down.
(Ref# 74803, J376820)
Workaround: Do the following:
- Boot into safe mode (during the boot process, press Space, press F1 for Safe Mode, and then press F3 so that Photon doesn't start).
- Edit the file /etc/system/config/display.conf and set
drivername=i830, set resolution values for xres and
yres, and then set a refresh rate value for refresh.
For more information about display.conf, see io-display in the Utilities Reference.
- slay and then restart io-display:
slay io-display
and then at the prompt type:
io-display -dvid=0x8086,did=MypciDeviceID
where MypciDeviceID is the PCI device ID for your specific device.
- Start Photon (use the ph script).
Photon microGUI
- ARMv7
- Photon isn't supported on ARMv7 targets.
- Arcs, Bézier curves, and ellipses
- The default line joint is a miter, which doesn't produce good results for these curves, and—contrary to what the documentation says—the setting of the line joint is ignored if you use stroked arcs or stroked ellipses. Using PgSetStrokeJoin(Pg_BEVEL_JOIN) may give smoother results once this issue is resolved. (Ref# 58185, J218669)
- Dual-head displays
- On systems with a dual-head display and screens set up to display different portions of the logical desktop, some convenience functions — such as PtFileSelection() and PtNotice() — are always constrained to the first screen. (Ref# 59614, J390343)
- PgBlitCx(), PgContextBlitAreaCx(), PgContextBlitCx(), PgMultiBlitCx()
- The documentation says you can use these functions with any form of draw context, but they support only PhDrawContext_t and PdOffscreenContext_t draw contexts. (Ref# 181238, J219968)
- phs-to-pcl
- We don't ship phs-to-pcl for PPCBE. (Ref# 61378)
- Starting Photon
- When you start Photon, you might see a “Cannot attach mouse input report (error code2)” message on the console. It's a benign message that you can ignore. (Ref# 29662)
- PhAB
- If you can't find the icon for a minimized module, use the Show Module Tree item from the Window menu to locate it. (Ref# 60529, J390347)
- The template editor currently lets you delete or rename the widget template, but doesn't provide a way to restore the default value. (Ref# 21969, J217110)
- If you're using bash as your shell in Neutrino, PhAB doesn't populate the list of targets when you try to build an application. (Ref# 22850)
- PhAB for Windows
- Applications created by one user can't be built by another user.
(Ref# 61333, J390353)
Workaround: Use Windows Security Properties to set the file permissions to give other users access.
- If you start PhAB through the IDE on a Windows XP host,
several security-alert dialogs are displayed, because the
Windows XP firewall detects the background TCP/IP communication
between the PhAB application and the Photon server.
(Ref# 22282)
Workaround: Configure Windows to unblock. Once you've done this, Windows won't display the security warnings when you restart PhAB.
- If you try to copy and paste something in PhAB when running it as a
nonadministrator user, you get an error message:
PhAB: Can't open: "clipboard.phab" (Permission denied). Please resolve the problem and re-try this operation. (No error)
Thus, copying and pasting is impossible. (Ref# 39879)
Workaround: Make sure that your HOMEDRIVE and HOMEPATH environment variables are set to point to a directory that you have permission to write into.
PhAB for Windows uses the HOME environment variable if it's set, otherwise it internally sets HOME to HOMEDRIVE followed by HOMEPATH. If these aren't valid, then PhAB will encounter difficulties.
- You can't save a PhAB project in a path that contains spaces (e.g., C:Documents and Settingssome_usermy_phab_app). (Ref# 39883, J217984)
- Applications created by one user can't be built by another user.
(Ref# 61333, J390353)
Known issues: Persistent Publish/Subscribe
- ppsparse()
-
- This function is declared in <sys/pps.h>, not <ppsparse.h> as stated in the documentation. (Ref# 168338, J182667)
- This function sets the attr_index member of the pps_attrib_t structure only when a line contains both an attribute name and a value. When you're reading in delta mode, PPS sends a message such as -attrn when an attribute is deleted. Since there's no value, the code sets attr_index to -1. (Ref# 77361, J169694)
Known issues: Runtime kit
- The paths in 650-complete.txt shouldn't start with
a slash; they're relative to ${QNX_TARGET}.
(Ref# 78566, J217913)
Workaround: Edit a copy of the file and remove the leading slashes.
For information about creating a runtime QNX Neutrino system, see the How to create a Runtime Kit from the QNX Software Development Platform technote in the installed documentation.
Known issues: Host-specific
Windows hosts
- Multiple folders for QNX SDP
- After you install 6.5.0 SP1, your system's start menu includes folders for QNX Software Development Platform 6.5.0 and QNX Software Development Platform 6.5.0 SP1. Use the 6.5.0 folder for starting the IDE, license management, and so on; use the 6.5.0 SP1 folder for starting the uninstaller.
- Coexistence on Windows 7
- Although 6.5.0 is the first version of QNX SDP that's supported on
Windows 7, you should be able to install and use earlier versions.
However, if you try to change the current version of the tools (via the
QWinCfg utility or the Configuration menu item),
QWinCfg will display a dialog that says you can't save
any changes because you aren't an administrator.
This is because of changes to the User Account Control (UAC) system on
Windows 7.
(Ref# 69243, J237620)
Workaround: Do the following:
- Start a command prompt.
- Run the ksh command.
- Type qconfig to get the installation name of the required configuration.
- Run the following command, specifying the installation name:
eval `qconfig -n "Installation_name" -e`
For example, to switch to 6.3.2, run this command:
eval `qconfig -n "QNX Momentics Development Suite 6.3.2" -e`
- IDE
- The following issues apply to the Windows-hosted version of the IDE:
- You can't do rename, delete, or move operations when the System Profiler editor is open. The editor maintains an open file pointer to the log file that it's working with; as long as that file is open, under Windows FAT32 filesystems, no modification can occur. (Ref# 28561, J327830)
- If the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
- When you do a build, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)
- Vista and Phindows or PhAB
- On Vista, Phindows and PhAB seem to interfere with the gadget toolbar;
the sidebar flickers and appears and disappears very rapidly and
often, slowing down the system.
(Ref# 62277)
Workaround: This may be related to Phindows and PhAB's use of Direct3D double buffering, which is redundant when the Vista Aero compositing is enabled. To disable double buffering:
- For Phindows, use the Double Buffering Method menu option in the Connect dialog, or pass the -d0 command-line option.
- For PhAB, set the PHINDOWSOPTS environment variable to -d0.
- echo.exe
- On Windows, the QNX-provided echo.exe interprets the Windows separator as an escape character. As a result, environment variable settings won't work if you use as a path separator; use / instead. (Ref# 19924, J142704)
- MAKEFLAGS
- Microsoft Visual Studio also uses the MAKEFLAGS
environment variable, but in a much different way than QNX Neutrino does.
The result is that Microsoft Visual Studio no longer works after you've
installed QNX Momentics.
Workaround: If you want to work with Microsoft Visual Studio (MSVS) after installing QNX Momentics on the same system, do the following:
- Open a command window and run cmd.
- Type set.
- Find the value for MAKEFLAGS and save it.
- Type set MAKEFLAGS.
- Do your MSVS work.
- To work with QNX Momentics again, type:
set MAKEFLAGS=saved_makeflags_value
- sh, ksh
- Because of the way that the MSYS versions of the shell manipulate the environment variable, PATH doesn't appear to include $QNX_HOST/usr/bin, but it does. (Ref# 59412)
- User Account Control (UAC)
- Windows Vista and Windows 7 include an account policy, called
User Account Control (UAC), that impacts various administrative
features, such as being able to create and store files in a temporary
directory (tmp).
This directory is used by various applications, such as CVS and the
split command, and various Photon applications.
To successfully run these applications on a computer running Windows Vista
or Windows 7, you must have administrator privileges and disable UAC.
(Ref# 44027)
In order to install or use Automated License Management, you must have logged in as an administrator and disable UAC. (Ref# 77791)
Workaround: To disable UAC on your Windows Vista configuration:
- Launch MSCONFIG by from the Run menu. (When you click on the launch button — the one with the windows logo commonly in the bottom left corner — the Run menu is an editable text bar with the string Start Search. Type msconfig and then press Enter.)
- Click on the Tools tab. Scroll down until you find Disable UAC, and then click that line.
- Press the Launch button.
- A cmd window will open. When the command is done, you can close the window.
- Close msconfig, and then restart your computer.
You can reenable User Account Control by selecting the Enable UAC line and then clicking the Launch button.
Disabling UAC bypasses some security features. - BSPs
- For Windows XP, the location that the BSP file for the IDE installs into
is $QNX_CONFIGURATION/qconfig_directory, and it is
write-protected for a default user.
Consequently, subsequent updates to BSPs aren't permitted in this
location because of permission errors under Windows Vista configurations
if the user doesn't have administrative permissions.
(Ref# 44668)
Workaround: Modify your user permissions. For instructions about changing these permissions, see the steps in the workaround for the problem (Ref# 44027) above.
- QNX utilities
- The Windows installation includes various executables that have the
same name as some QNX utilities, such as find, sort,
and split.
By default, Windows places the path to the Windows executables at the
beginning of the Windows PATH environment variable,
and the QNX executables appear afterward.
This means that when you run these utilities from the command line,
instead of using the QNX version, the PATH variable uses
the Windows version.
(Ref# 44457)
Workaround: If you want to use the QNX utilities for find, sort, and split from a command prompt or shell prompt, specify a fully qualified path to any of the QNX executables.
- ctags
- The current version of ctags is 5.5.4, and the documentation
included with QNX doesn't accurately describe the features for this version.
(Ref# 44457)
Workaround: See the detailed documentation at http://ctags.sourceforge.net/ctags.html.
- For Windows Vista, you receive the following error messages two times
when using ctags because the Windows sort is
being used instead of the sort utility included in
QNX Momentics:
Input file specified ctags: cannot sort tag file : No error
The ctags utility still generates tag files; however, they won't be sorted. (Ref# 43530)
Workaround: Manually call the QNX sort on the tags file.
- The current version of ctags is 5.5.4, and the documentation
included with QNX doesn't accurately describe the features for this version.
(Ref# 44457)
Linux hosts
- Installers
- The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
- Activation
-
- On some distributions, the activation dialog doesn't appear
automatically.
(Ref# 68599)
Workaround: Log out and back in again, and then start the activation program manually:
/etc/qnx/bin/qnxactivate -a
- On some distributions, the activation dialog doesn't appear
automatically.
(Ref# 68599)
- IDE
- If you try to use the IDE on some distributions of Linux (e.g., Ubuntu)
to build for QNX Neutrino 6.4.1 targets, the license check for the tools
fails.
(Ref# 76136, J393506)
Workaround: Back up your 6.4.1 licensing library, and then replace it with the 6.5.0 version. For example:
cp /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so.original cp /opt/qnx650/host/linux/x86/usr/lib/libqnxlic.so /opt/qnx641/host/linux/x86/usr/lib/libqnxlic.so
- You can create a PhAB project from the IDE in Linux, but since there is no PhAB editor on Linux, the project is unusable. (Ref# 77258, J393695)
- On Linux Ubuntu 9.04 64-bit, after you install, you'll notice that
the QNX website doesn't open in the default browser, the
Internal Web Browser view isn't functional when the IDE generates
a Code Coverage report
(
someUser@ubu90464bit:~$ qde Gtk-Message: Failed to load module "canberra-gtk-module": /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so: wrong ELF class: ELFCLASS64
(Ref# 71246, J330708)
Workaround: In the IDE, select
, and then specify an external browser.
),
and you'll receive this error message:
- The IDE won't run on some versions of Linux, such as
Open SUSE 11 and Ubuntu 8.04.
This is a bug in Eclipse; see bug 213194 at
http://www.eclipse.org.
(Ref# 66351, 66760)
Workaround: Do the following:
- On Ubuntu, type:
sudo apt-get install xulrunner
- Edit $QNX_HOST/usr/qde/eclipse/qde.ini and
add this line after the -vmargs line:
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner/xulrunner
- On Ubuntu, type:
- The IDE may give some “UnknownHost” exceptions when
you attempt to access a network on some 64-bit versions of Linux
(e.g., Ubuntu 8.0.4 64-bit).
This seems to be a problem with name resolution in the JRE on such
hosts.
(Ref# 70757)
Workaround: Edit /etc/nsswitch.conf. On the hosts line, move dns from the end to between files and mdns4_minimal.
- If you try to use the IDE on some distributions of Linux (e.g., Ubuntu)
to build for QNX Neutrino 6.4.1 targets, the license check for the tools
fails.
(Ref# 76136, J393506)
Known issues: Web browsers
- Bon Echo
-
- For the Send Link... command in the File menu to work (and for mailto: links on web pages in general), you need to set the network.protocol-handler.app.mailto configuration string. To set this string, type about:config in the Bon Echo address bar. You should set this string to be the full path to an executable that will start the desired email program. The first parameter passed is always the mailto: URL. (Ref# 59434)
- If you place the Bon Echo window so that the bottom is outside the lower part of the screen, and you then scroll down for example with the wheel, the page isn't refreshed correctly. (Ref# 61837, J218975)
Getting started with the documentation
After you've installed QNX SDP, you'll find an extensive set of HTML documentation:
- On Linux and Windows development hosts, you can read it in the Integrated Development Environment's help system. On Linux, use the qde command to start the IDE; on Windows, use the desktop icon.
- On self-hosted QNX Neutrino systems, you can read it
in the Photon helpviewer, or you can
use a web browser to display:
${QNX_TARGET}/usr/help/product/momentics/bookset.html
The “roadmap” page contains links to the various HTML booksets that accompany the OS. We recommend that you start with Welcome to the QNX Software Development Platform for an overview of QNX SDP. Next, see 10 Steps to Developing a QNX Program: Quickstart Guide for a short tutorial that will help you get started, and then refer to the other documents (System Architecture, QNX Neutrino Programmer's Guide, 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.
For questions about installing and using QNX SDP, see the QNX Momentics Getting Started forum on our Foundry27 site, http://community.qnx.com. There are other forums for specific topics, including the QNX Neutrino RTOS, development tools, networking, Board Support Packages, and so on.
List of fixes
The problems fixed in QNX SDP 6.5.0 SP1 include the following:
Software fixes
Change | Ref# |
---|---|
The devn-asix.so driver now supports the Asix 88172A chipset. | 69383 |
The devc-serusb driver now supports some new USB modems, including the FTDI Quad RS232-HS, ZTE MF668 (Rogers Rocket Stick), and Sierra Wireless USB 598. | 73383 |
When an application blocks as a result of a receive on an asynchronous or global channel, the transition to STATE_RECEIVE is now correctly logged. | 76574 |
We've corrected a problem in the filesystems' inode caches that could cause a lockup if many threads were performing simultaneous open/close/unlink operations in a loop. | 77156 |
The fs-dos.so and fs-udf.so filesystems now support Asian character sets, code pages 932, 936, and 950. (Case ID 103086) | 78317 |
We now ship the <pps.h> header file. (Ticket ID 91172). | 78433 |
We've corrected an issue with inode caching that could sometimes cause corruption in a Power-Safe (fs-qnx6.so) filesystem. | 78703 |
We've corrected an issue with the UDF filesystem which could cause an exception or other unexpected behavior on CDs using the Rock Ridge extension (RRIP). | 80829 |
The dladdr() function now provides the full path (instead of the base name) of the object, in order to match the behavior on other OSs. | 80928 |
We've fixed a memory leak that occurred when you used gf_draw_polyline() with a pen width of 2 or more. | 88440 |
We've fixed a bug in fs-dos.so, where a 64-bit inode value could be implicitly truncated to 32 bits. As a result, two different files could have had the same inode, which caused confusion (e.g., with inflator, which assumes that inodes are unique). | 95577 |
If you mount a USB device that contains a DOS filesystem using cp936 (Chinese code pages), it's now possible to use cd to enter a folder that has a Czech name. (Ticket ID 00108005) | 96652 |
We now ship an ARMv7 variant of devi-hid. | 112291 |
The USB stack now supports composite HID devices. (Ticket ID 00111514) | 116230 |
We've corrected an issue that could sometimes cause sporadic and inexplicable “ldd:FATAL: Attempt to call unresolved object” errors. | 116675 |
EFS images built by mkefs on Windows for bid-endian targets can now be mounted correctly. | 117128 |
A server thread no longer loses its priority boost when it unlocks a mutex that it acquired before the priority boost. | 119518 |
We've fixed an SMP race condition between a long and a short message of equal priority on the same channel that could happen if both were preempted. | 124250 |
Pregrowing a file beyond the capacity of the Power-Safe (fs-qnx6.so) filesystem no longer causes the filesystem to report an error of EBADFSYS. | 125537 |
The fdisk utility no longer experiences division-by-zero errors when a USB key reports 0 track sectors or heads. (Ticket ID 00112455) | 126016 |
The Qnet enforce_crc=1 option works again. (Case 00112528) | 127401 |
The devnp-e1000.so driver now makes sure that the PHY is reset before the rest of the driver is started. | 129010 |
The io-pkt-v6-hc manager no longer does a v6 route lookup if it has a valid v4 route. This eliminates a long delay when sending/receiving data over a socket. | 129214 |
We've fixed an issue that sometimes caused delays when two UHCI USB serial devices exchanged data. | 129326 |
The devc-serusb driver now handles the case where there isn't enough memory to transfer data. After multiple consecutive errors, receiving is disabled; you can attempt to reenable it by setting the CREAD terminal flag. | 131276 |
If you start io-usb with the -d ohci ,,,num_td=8, and connect an iPod through a full-speed USB hub, io-usb no longer crashes on playback from the iPod. | 131372 |
The devb-loopback driver has two new options, heads and tracks, that let you specify the disk geometry. | 133385 |
We've corrected an interaction between sending a message on a global channel and replying to a remote client, that led to a thread's being left in a reply-blocked state forever. | 133467 |
The io-pkt-* managers now have a -P option that you can use to specify the priority of the main thread. (Case 00113545) | 135755 |
The io-audio manager now has a data_thread_prio option that you can use to specify the priority of its sw mixer threads. (Case 00113545) | 136343 |
The io-usb utility now supports a -e option that you can use to specify the priority of the enumerator thread.(Case 00113545) | 139522 |
We've corrected an issue that sometimes prevented threads using round-robin or sporadic scheduling from being rescheduled correctly. | 142140 |
Calling MsgCurrent() on the rcvid pertaining to a low-priority client no longer causes a priority boost given to you by a blocked high-priority thread to be lost. | 142142 |
The fdisk utility now supports logical partitions and multiple partitions of the same type. | 142143 |
As a QNX Neutrino extension, the time you specify for the sleep utility now can be a floating point number, so you can specify fractions of seconds. | 142144 |
We've fixed a caching issue (caused by a P4080 errata) that sometimes caused random crashes in the last loaded DLL on multicore systems. | 142150 |
We've corrected an error in the handling of DT_FINI_ARRAY. For more information, see “What's new: Libraries” in these release notes. | 142152 |
The fdisk utility now supports logical partitions and extended partitions. | 142153 |
We've corrected an initialization issue for the D-Link DUB-E100 Ethernet Dongle that used to cause io-pkt-v4 to not work with the dongle. | 142154 |
The name of the VMware image is now correct. | 142155 |
We've corrected a memory leak in gns. | 142156 |
Serial drivers no longer send warnings about buffer overruns to the system logger if nothing has yet connected to the device. This warning is re-enabled once a byte is successfully transmitted without an overrun or the FIFO is flushed. | 142159 |
A gns running in client mode no longer crashes when it performs an open() for a non-_FTYPE_NAME file type for the local reflection of a global name (/dev/name/global/global-name) and that name was attached on a remote node, the name's cache entry timed out (usually after 20 minutes), and the network connection to the server is now broken. (Case 103808) | 142160 |
We've worked around the P4080 CPU 22 Errata: “If an asynchronous interrupt occurs near the same time that a stwcx. is executed, the cacheline the stwcx. is accessing may become stale in that core's backside L2. Any future load or lwarx instruction to that cacheline could then access the old data.” | 142162 |
The devnp-e1000.so driver no longer reports that a link is down when it really isn't. (Ticket ID 00103859) | 142164 |
The devn-pegasus.so driver now supports the busnum and devnum options. | 142165 |
The devb-loopback driver is now able to mount images that are larger than 2 GB. (Ticket ID 91175) | 142168 |
We've corrected an issue in ThreadDestroy() that sometimes caused a kernel crash on ARM systems. (Ticket ID 00104295) | 142172 |
The devc-serusb driver now supports a DCMD_CHR_RESET devctl() command that resets the device. Not all drivers make use of this command. | 142175 |
We now provide a PIC version of libps.a. | 142176 |
We've corrected an issue with mapping and unmapping memory that could have led to the fragmentation of virtual memory. (Ticket ID 00104760) | 142178 |
The audio drivers now use the shared DMA library instead of the static library, to ensure that the constructor can successfully initialize shared memory. | 142180 |
The kernel on ARM platforms no longer crashes when you repeatedly call ThreadDestroy(). (Ticket ID 00104295) | 142181 |
The enum-usb utility now supports devices that don't have an interface 0. | 142183 |
We've corrected the fp_rounding() function so that it sets the L bit and the mask so that older processors (that don't implement the L bit) act as though the mask were set. (Ticket ID 00104989) | 142185 |
The devnp-speedo.so driver no longer crashes when used with io-pkt-v6-hc. (Ticket ID 00104744) | 142186 |
The dhcp.client utility no longer adds duplicate entries to /etc/resolv.conf. | 142189 |
We've updated the devnp-e1000.so driver so as to reduce the time required to establish connections. | 142190 |
TimerTimeout() no longer includes internally used bits in the flags that it returns. | 142191 |
We've updated the devn-pegasus.so driver so that removing the Pegasus dongle from a hub no longer causes io-pkt-v4 to spin. (Ticket ID 00105359) | 142192 |
We've corrected an error in fs-udf.so that sometimes caused devb-eide to crash. | 142194 |
Removing the dongle while the devn-pegasus.so driver is being initialized no longer puts the driver into a bad state. | 142195 |
A deadlock no longer occurs in the block I/O drivers when you remove the device while the it's still being mounted. (Ticket ID 00105360) | 142197 |
The devn-pegasus.so driver now uses a timeout for control operations instead of using infinity. | 142198 |
We've fixed the possibility of excessive interrupt nesting due to heavy IPI activity in the ARM kernel. | 142199 |
We've corrected an issue that occurred when a thread that called TimerTimeout() was preempted and moved to STATE_READY before it could call SyncCondvarWait(), and another, higher priority, thread blocked on a mutex that the first thread held. The mutex priority-inversion code would then boost the priority of the first thread, but on SMP machines erroneously cleared the time-out flags. | 142200 |
The procnto-v6 kernel now uses the correct cache color for alias mapping used to manipulate breakpoints. It used to be possible for the dcache to contain a line for the “real” virtual address which would contain the previous unmodified value. In this case, the undefined instruction exception handler would read the faulting address and not see a breakpoint instruction so it would raise a SIGILL. | 142201 |
The chkqnx6fs utility no longer loops if corruption in the filesystem has altered the number of indirect levels. | 142203 |
For security reasons, the use of LD_DEBUG_OUTPUT with setuid binaries is now disabled. For more information, see “What's new: Security” in these notes. | 142204 |
We've added a mutex to the devu-uhci.so driver, so io-usb no longer crashes while handling certain error conditions. | 142205 |
We've adopted the latest P4080 U-Boot, which supports 36-bit physical addresses. | 142206 |
A call to open( "/proc" ) no longer erroneously fails because of a previous failed close() on a file description to procnto. | 142207 |
If a shared object that contains text relocations is remapped as private, pidin mem now displays the correct name (appended by “!”), instead of zero. | 142208 |
When MSI interrupts are requested, the PCI server now correctly allocates every second IRQ instead of allocating interrupts from the entire IRQ list. | 142210 |
The devnp-e1000.so driver now supports Intel 82579 chipsets. | 142211 |
There's a new hidd_get_interface_string() function that you can use to retrieve the HID interface descriptor string. | 142213 |
If a client unblocks a blocked read over Qnet by sending SIGINT to the thread, the server handles the unblock request and releases the client with EINTR. If the client closes the file and reopens it after a short delay, the server no longer erroneously receives a file open callback with the _NTO_MI_UNBLOCK_REQ flag set in request's _msg_info structure. | 142214 |
We've updated io-usb and some USB components to work around some hardware issues. | 142215 |
The hidd_send_report() function now reports an ETIMEDOUT error when a device times out. | 142216 |
The devf-generic driver no longer leaks memory when a customer application opens and closes a connection to it. | 142218 |
The devb-eide driver now recognizes drives that are larger than 127 GB. | 142219 |
Synchronization objects that are in x86 big pages are now cleaned up correctly. | 142220 |
In order to make startup faster and reduce jitter, nanospin_calibrate() can now read the calibration data from values stored in the system page. The startup for some boards now includes an -o option that you can use to specify the calibration data (100 loop time and overhead) to store in the system page. | 142221 |
We've corrected a threading issue that sometimes made io-pkt crash. (Ticket ID 91482) | 142222 |
The etfsctl utility now properly handles bad blocks. | 142223 |
The io-pkt manager with the devnp-e1000.so driver no longer sporadically hangs after rebooting. | 142224 |
The Intel HDA Audio driver (deva-ctrl-intel_hda.so) now supports the Cirrus CS4207 Audio codec. | 142225 |
We've corrected an issue that could corrupt messages (especially large ones) on PPC BookE systems. | 142226 |
The enum-usb utility's configuration file now supports a NoMSString option that prevents queries from being made for a Microsoft-defined USB descriptor. Some devices that don't have a descriptor go haywire if such a query is made. | 142228 |
The pidin -F "%M" command no longer crashes. We've also improved the way that this format code and the -M memory options work. | 142231 |
You can now specify a 64-bit offset when mounting an IFS image. | 142232 |
We now ship an ARMv7 version of devn-fd.so. | 142233 |
Embedded Transaction filesystems now correctly handle orphaned directories. | 142234 |
The devh-usb.so driver now has a priority option that you can use to change the priority of the removal thread. (Ticket ID 00107965) | 142236 |
The fs-udf filesystem no longer truncates a CD volume label that contains two periods in what appears to be the filename extension. | 142237 |
The mkqnx6fs utility now has a -v option that lets you specify a volume name of up to 16 characters. Note that you can't specify both a UUID and a volume name. | 142239 |
Chinese SD and USB volume labels that include an English character are no longer malformed in HMI and Photon. (Ticket ID 00108045) | 142241 |
We've corrected io-blk.so's cache coherency function to dereference the correct vnode. | 142243 |
We've moved the packing directives in <pci.h>, so that the order in which you include this and other headers doesn't affect the alignment of pthread_mutex_t in structures. | 142244 |
There's a hidd_device_reset() function that lets you reset a human interface device. For more information, see “What's new: Human interface device drivers (devh-*)” in these release notes. | 142245 |
The enum-devices utility no longer uses just the modification time to determine whether or not a configuration file has changed. Using just the modification time was a problem if you used the mkifs -nn option to set all modification times to 0. | 142246 |
The mkifs utility now uses the correct linker for ARMv7 images. (Ticket ID 00109690) | 142247 |
While building the node tree, usbd_parse_descriptors() no longer wrongly links a descriptor that should be a child of an interface descriptor as a sibling instead. (Ticket ID 00109414) | 142248 |
The usbd_parse_descriptors() now leaves class and vendor-specific descriptors untouched, instead of endianizing and making them alignment-safe. (Ticket ID 00109791) | 142250 |
On ARM, gcc doesn't preserve callee-save registers such as LR for functions marked as noreturn. We've modified the code for abort() so as to make it possible to determine who called it. | 142251 |
The hidd_report_detach() and hidd_reports_detach() functions no longer SIGSEGV if you call them from an insertion callback. | 142252 |
The libimg library now supports the invocation of the set_value_f() callout when progressive JPEGs are loaded via img_load*(). | 142253 |
The # key now works correctly on the German/Austrian keyboard layout based on the German standard DIN 2137-2. | 142254 |
The devb-ram driver no longer crashes when the capacity is less than the minimum size for a QNX 4 filesystem. | 142255 |
We've fixed a timing issue that caused a crash when a USB device was inserted or removed just as the client driver was detached from a removed device. | 142256 |
All the meta data for Joliet filesystems is now handled properly. | 142257 |
We've corrected a timing issue that caused problems when you called hidd_device_reset() just after a device has been inserted. | 142258 |
We've improved nanospin_calibrate() so that it isn't affected by interrupt latency. | 142259 |
We now ship an ARMLE-v7 version of fs-etfs-ram. | 142260 |
The enum-usb utility now starts the correct driver for MTP devices in USB mode. (Ticket ID 00110106) | 142262 |
Empty CD labels are now displayed as an empty string, to be consistent with Windows. | 142263 |
The usbd_parse_descriptors() function no longer goes into an infinite loop when parsing devices with several vendor-specific descriptors. | 142264 |
The x86 kernel with Physical Address Extension enabled no longer crashes when a user thread references addresses above 0xff000000. (Ticket ID 91857) | 142265 |
The devi-hid manager now has an -R option that lets you specify the display resolution. If you specify this option, devi-hid doesn't try to use the graphics framework or Photon to determine the resolution. | 142266 |
The devf-generic driver now supports a -x option that enables software ECC mode, and a -D option that enables the automatic detection of ECC mode. | 142267 |
We've improved some of the settings that fdisk suggests in interactive mode. | 142268 |
By default, lsm-autoip.so now has the link local and routeable IP address behave as aliases and co-exist. There's now an old option that makes the module attempt to manage the link local network using a routing table. (Ticket ID 90966) | 142269 |
The dhcp.client utility now runs an optional script, /etc/dhcp/dhcp-check, that takes the environment as dhcp-up does, but returns a value indicating if the configuration is acceptable (0 means OK; other values result in a DHCPDECLINE). | 142270 |
The dhcp.client utility now has an -H option that indicates that you don't want to apply the hostname locally. This could be useful in cases where you use the -h option to identify the client, and you want to apply a different hostname locally, or you simply wish to ignore the server hostname assignment. (Ticket ID 91459) | 142271 |
We've included a correction in the handling of DIOCCHANGERULE from the NetBSD code. (Ticket ID 91968) | 142272 |
We've corrected a memory leak that occurred when you called getaddrinfo() or gethostbyname_r(), specifying a host that didn't exist. | 142275 |
io-pkt* no longer crashes if you slay it after starting qconn. | 142276 |
We've corrected a race condition that sometimes occurred if you used io-pkt with the -t2 option. This race condition caused the thread pool to be empty when it shouldn't have been. | 142279 |
io-pkt* now supports the ALTQ feature. You can use pfctl to manage it. | 142280 |
We've corrected the endian-swapping macros so that gcc optimizes them correctly. | 142281 |
We've corrected some issues concerning alignment and mutex initialization in the devnp-e1000.so driver. | 142282 |
When you use fdisk to add partitions, the start and end LBA addresses are now aligned on cylinder boundaries. | 142283 |
We've corrected some off-by-one errors in fdisk's interactive mode. Note that you can no longer edit the start and end cylinders of an extended partition. | 142284 |
The pppd daemon no longer loops if its database is corrupted. | 142286 |
We no longer not allow recursive RFC3173 IPComp payloads, in order to address security vulnerability CVE-2011-1547. | 142287 |
We've fixed an issue that sometimes caused io-pkt-v6-hc to fault during initialization. (Ticket ID 91832) | 142288 |
If Unix domain socket corruption occurs, killing sshd no longer crashes io-pkt-v4-hc. (Case 109797) | 142289 |
The pfil_ipsec option now works correctly with TCP streams. | 142290 |
The PF_KEY interface now notifies the client of an IPSec SA softtimer expiry if no data has been sent. | 142291 |
If you try to read a PPS object, and the buffer you provide is too small, you now correctly get an error of EMSGSIZE. | 142292 |
We've cleaned up some warnings that used to occur when you compiled BSP source code. | 142293 |
The Power-Safe (fs-qnx6.so) filesystem now has an alignio option that makes the filesystem try to align all reads and writes in sizes and offsets of the file system block size. | 142294 |
We've fixed some issues that prevented UDF-Multisession CDs from being properly loaded. (Ticket ID 00110586) | 142295 |
The pthread_mutex_timedlock() function's behavior is now compliant with POSIX. | 142296 |
The enum-usb utility now recognizes the Philips GoGear Muse in both MSC (umass) and MTP (PFS) modes. | 142298 |
The getifaddrs() function no longer returns a transient ENOMEM error when the interface list is growing. | 142301 |
Issuing an ifconfig destroy command for the J5 WLAN driver no longer causes the system to freeze. | 142303 |
The fdisk command now correctly reports a size of zero for empty partitions. | 142304 |
Qnet now correctly clears the l4 list when an interface is removed (destroyed). We've also corrected an issue where a data structure was accessed after it was freed. (Ticket ID 92074) | 142305 |
The devc-serusb driver now has a drt option that lets you specify the data-ready timeout. | 142306 |
If you try to connect a corrupt USB stick, the system no longer gets into an endless “Loading...” loop. (Ticket ID 00111735) | 142307 |
The devi-hid driver can now switch to 4-point calibration from the default 3-point. | 142309 |
We've fixed a potential race condition in iofunc_attr_unlock() that could have caused multi-threaded resource manager threads to stay mutex-blocked forever. | 142312 |
The devc-ser8250 driver no longer attempts to read from the write-only FIFO Control register (FCR). | 142315 |
The devc-serusb driver now supports the Cinterion AHx module. | 142316 |
The io-pkt manager no longer crashes because of a corrupt mbuf chain after IPSec key negotiation has been established. | 142317 |
The fs-dos.so filesystem now supports a DCMD_FSYS_LABEL_RAW devctl() command that you can use to get the raw volume label before any character conversions are done. | 142318 |
We've fixed a security vulnerability in the phuser utility that could have allowed a normal user to gain root access. This issue was reported by an anonymous researcher working with the SecuriTeam Secure Disclosure project. | 142322 |
When you're tracing in ring mode, kernel buffers are now filled to 95% before the kernel moves to the next buffer. In linear mode, buffers are filled to 70% before being flushed. (Ticket ID 90752) | 142442 |
Audio dropouts no longer occur while playing from an iPod. (Ticket ID 90795) | 142443 |
The code that clears a stalled USB endpoint now returns an appropriate error code to the higher-level software. (Ticket ID 90867) | 142444 |
The io-audio manager now supports typed memory. (Ticket ID 91171) | 142445 |
We've corrected an error that made pidin occasionally crash. (Ticket ID 91383) | 142446 |
We've improved the quality of audio from USB. (Ticket ID 91515) | 142450 |
We've improving the caching of information in the FAT filesystem in order to reduce the time required to read data from it. | 142451 |
Reading an incomplete or corrupt JPEG file no longer causes a crash in the img library. (Ticket ID 91582) | 142452 |
We've corrected an issue in the devnp-ecm.so driver that caused io-pkt to SIGSEGV. (Ticket ID 91617) | 142454 |
We've corrected an initialization issue that caused crashes when some applications called dlopen() or dlclose(). (Ticket ID 91630) | 142455 |
The devb-ram driver no longer crashes if you start it with a capacity or blksize setting of 0, or with an unreasonably large address setting. (Ticket ID 91647) | 142456 |
We've corrected an issue that caused io-usb to crash. (Ticket ID 91650) | 142457 |
We've fixed an issue in io-blk that caused an immediate reset when you connected a USB stick to external devices. (Ticket ID 91739) | 142460 |
Network drivers now support routines that power up and down the phy of a Ethernet card. (Ticket ID 91777) | 142461 |
We've corrected an issue that prevented pairing with some Bluetooth devices (Ticket ID 91812) | 142464 |
We've fixed an contention issue in io-blk when automounting. (Ticket ID 91881) | 142468 |
The showmem utility no longer displays bogus Qnet node names for shared objects that are in /dev/shmem. These names appeared in rare circumstances. (Ticket ID 91900) | 142469 |
The devu-ehci.so driver now has a ports option that lets you set the enumeration order of each root port. (Ticket ID 91910) | 142470 |
The Power-Safe (fs-qnx6.so) filesystem and io-blk.so no longer call random() because this function isn't thread-safe.(Ticket ID 91915) | 142471 |
When an NFS server dies, processes that read or write to an NFS mount now get a “Host is down” error if you start fs-nfs2 or fs-nfs3 with the -s option. (Ticket ID 91978) | 142472 |
We've corrected a problem with memory allocation that caused devb-umass to fault. (Ticket ID 91997) | 142473 |
We now ship the BSD version of the tar utility. It's called bsdtar, to distinguish it from the GNU version. | 142475 |
We've updated the block-I/O common access methods to recognize some new USB peripheral devices. (Ticket ID 92047) | 142476 |
We've fixed an issue in the io-char library that sometimes caused drivers to lock up trying to drain the output buffer. (Ticket ID 92058) | 142477 |
We've fixed an issue that caused devb-umass to crash while backing up a music collection. (Ticket ID 92059) | 142478 |
We now support the NOKIA Model N8-00 USB NCM device. | 142479 |
The dhcp.client now correctly sends DHCPDISCOVER packets with a source address of 0, as required by RFC 2131, instead of with its configured alias address. (Ticket ID 92097) | 142480 |
The enum-usb utility now recognizes HTC Droid Incredible devices. (Ticket ID 92104) | 142481 |
The ATAPI driver now sets the DEV_UPSIDE_DOWN_MEDIA flag when it gets a sense code of 2/30/01(Cannot read medium: unknown format), so that the subsequent access to the device, which causes a sense code of 02/3E/00 (Logical unit hasn't self-configured yet)doesn't restart the media detection process by sending a start command. (Ticket ID 92121) | 142482 |
The devb-umass driver no longer crashes when you repeatedly connect a Samsung Galaxy phone to a USB port, select Mass Storage mode, and then disconnect the device. (Ticket ID 92122) | 142483 |
MTP players are now recognized much sooner. (Ticket ID 92139) | 142485 |
The usbd_connect() and usbd_disconnect() functions no longer leak file descriptors. (Ticket ID 92144) | 142486 |
By default, the devn-shim.so driver now copies each received packet in the shim layer as it's passed from the driver to io-pkt. The driver and shim can be removed via ifconfig enX destroy or by physical removal of the device (if supported by the driver). | 142487 |
The devc-serusb driver now supports the Sierra Wireless AR8550 3G dongle. | 142488 |
The io-usb server no longer crashes when you connect an iPod to a full-speed USB hub. (Ticket ID 92156) | 142489 |
We've corrected an issue in the resource manager code that sometimes made io-pkt crash. (Ticket ID 92161) | 142490 |
The i2c driver now correctly recognizes the iPhone. (Ticket ID 92177) | 142491 |
We've corrected the handling of encrypted packets in the pf packet filter that caused some packets to be dropped (Ticket ID 92231) | 142492 |
We've corrected an issue that caused io-usb to fault. (Ticket ID 92285) | 142493 |
We've addressed a potential URB race condition in the Usbdi library. | 142494 |
If the RTC rolls over, the memory manager no longer sets a cleanup timer that expires immediately. (Case 114408) | 142884 |
If you're running io-pkt-v6, the output from netstat -s now includes missing information about IPSec statistics. | 144710 |
The devnp-e1000.so driver has a new int_mod option that you can use to specify the interrupt moderation value. The default value is 20000 interrupts/sec; a value of 0 disables interrupt moderation. (Ticket ID 00114664) | 146600 |
Setting the MALLOC_BAND_CONFIG_STR environment variable no longer causes a crash in libc. | 146824 |
The bzdiff, bzgrep, and bzmore utilities are now executable. | 146932 |
We've corrected an error that could have caused IPv6 IPSec SA lookups to erroneously fail. | 147352 |
The io-pkt manager now supports the pfil_ipsec option for IPv6. | 147353 |
IPv6 in IPv6 tunneling now works correctly. | 147354 |
We now support IPv6 NAT-T and IPv6 PF fragmented packet normalization. | 147355 |
The pf packet filter now supports IPv6 fragments. (Ticket ID 92278) | 147358 |
The devnp-e1000.so driver now finishes its initialization before it enables interrupts. | 147963 |
The fs-nt.so filesystem now supports NTFS partitions on devices with a disk sector size that's greater than 512 bytes. | 149806 |
We've corrected an issue with a recursive lock that sometimes caused a deadlock in io-pkt and the devnp-e1000.so driver. (Ticket ID 00114936) | 149868 |
The showmem utility now correctly reports memory usage. (Ticket ID 91266) | 150669 |
The slogger utility has a new -m option that makes it use CLOCK_MONOTONIC instead of the default CLOCK_REALTIME as the clock source, and a new -u option that makes it generate a user-string trace event, with the given event ID, for all messages received. | 150729 |
The lsm-autoip.so module no longer selects the same IP address every time after the first challenge. | 150959 |
The lsm-autoip.so module is no longer loaded if the selected interface isn't present. | 150968 |
We've fixed an alignment issue that occurred when you used mkefs with the ECC feature enabled. | 151889 |
We've corrected a race condition in the transferring of messages on SMP systems that in rare circumstances could cause the kernel to crash. | 152941 |
The mqueue manager now has a -p option that you can use to specify a static priority. | 153325 |
In order to improve performance, io-pkt* now uses a timer pulse instead of attaching a timer interrupt. There's a new timer_pulse_prio option that you can use to specify the priority of the pulse (the default is 21). | 154965 |
The showmem utility no longer crashes when it encounters a larger than expected memory size. | 156091 |
The showmem utility now correctly counts memory for overlapping, but not identical, memory regions. (Case 114619) | 156094 |
The x86 startup library no longer checks to see if PIRQs (specifically PIRQ[E..H]) are configured as GPIOs. | 156564 |
We've corrected an SMP race condition that sometimes caused increased scheduling latency, i.e. a higher priority thread remained in a ready state while a lower priority thread continued to run. | 156962 |
Qnet now takes less time to start up. (Ticket ID 92223) | 159976 |
We've corrected an issue that sometimes made io-pkt crash when you also used dhcp.clinet and removed the USB device. (Ticket ID 92333) | 159986 |
We've fixed a race condition between ldd and confstr() that could cause the link loader to crash while starting a process. (Ticket ID 92349) | 160016 |
The devc-serusb driver now supports the Sierra Wireless AR series of devices. (Ticket ID 92467) | 160019 |
We've corrected a denial of service issue concerning io-pkt and Wi-Fi. (Ticket ID 92440) | 160021 |
Playback now occurs correctly if you eject and then reinsert a CDA. (Ticket ID 92367) | 160034 |
The io-usb server now recognizes Toshiba USB hard drives. (Ticket ID 91713) | 160038 |
IPv6-router-advertisements are now honored for PPP interfaces. (Ticket ID 92279) | 160050 |
Freed memory is now released as soon as possible to the system. | 160710 |
If you start io-usb with the -d ohci ,,,num_td=8 option, and then connect a USB key though a full-speed USB hub, io-usb no longer crashes. | 160753 |
If you start io-usb with the -d ohci ,,,num_td=8 option, and then connect a USB key though a full-speed USB hub, io-usb no longer crashes. | 160775 |
The devnp-asix.so driver now supports the Asix AX88772B. | 160786 |
We've corrected an issue in the cp utility that caused a fault when you tried to copy from an NT filesystem. | 160797 |
We now ship version 1.0.6 of the bzip2 utilities. | 160807 |
Applications linked against libc now emit a lot fewer “shared library events” when a process with shared libraries is loaded in the debugger. This makes launching the debugger faster. | 162680 |
Documentation fixes
Change | Ref# |
---|---|
The documentation for alloca() now describes how the builtin and non-builtin versions of this function behave differently. | 27507 |
The documentation for shm_ctl() and shm_ctl_special() now describes the SHMCTL_ISADMA and SHMCTL_NOX64K flags. | 27627 |
We've added an entry for snd_pcm_plugin_set_src_method() to the QNX Neutrino Audio Developer's Guide. | 29909 |
The form of the compress attribute that lets you specify the compression algorithm doesn't have a leading + or - sign. We've corrected the documentation for mkifs. | 60348 |
We've revised and expanded the documentation for the posix_spawn*() functions. | 62489 |
The System Architecture guide now explains the concept of the network root, and the entry for on in the Utilities Reference now contrasts the -f and -n options. | 71139 |
We've corrected various errors in the “Interpreting mudflap output” section of the IDE User's Guide. | 71869 |
We've expanded the list of practical limitations in the Adaptive Partitioning User's Guide. | 74104 |
We've listed more possible error codes in the documentation for _intr_v86(). | 74516 |
We've added an entry for round(), roundf(), and roundl() to the QNX Neutrino C Library Reference. | 75143 |
We've documented the bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzless, bzmore and bzip2recover utilities, and updated the documentation for bzip2. | 76465 |
The documentation for mketfs now explains that this utility adds cluster headers to the image file. When you write the image to flash, these headers are replaced with BSP-specific structures that hold the same information. | 77251 |
The documentation for io-blk.so and mount now explains why you have to respecify filesystem options such as noatime when you remount a filesystem (Case# 102618) | 77323 |
The System Architecture guide now explains that the pages containing binaries are demand-loaded by default, but that you can use the procnto -m to change this. | 77347 |
The documentation now explains why calling shm_ctl_special() with a special argument of 0 isn't the same as calling shm_ctl(). | 77364 |
The documentation for dumpifs now describes the -d option, which you can use to specify where to place extracted files. | 77369 |
The documentation for mq_open() and sem_open() now mentions that if you want to use O_CREAT, O_EXCL, or O_NONBLOCK when you call these functions, you need to include <fcntl.h>. | 77620 |
We've corrected the list of options for dhcpd and dhcp.client in the Utilities Reference. | 77663 |
The chapter on filesystems in the QNX Neutrino User's Guide now explains why you can overwrite a running executable in /dev/shmem without getting an error of EBUSY. | 77764 |
The documentation for qcc now describes the -save-temps option. | 77819 |
We've removed a reference to PAL8 from the documentation for io-display, and corrected the name of the disp_mode_info_t structure in the description of get_modeinfo() in the Graphics DDK documentation. | 77854 |
The documentation now says that you must use io-pkt-v4-hc or io-pkt-v6-hc with the devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, and devnp-rum.so drivers (io-pkt-v4 doesn't support Wi-Fi). | 77970 |
The QNX Neutrino Library Reference now explains how flockfile(), ftrylockfile(), and funlockfile() are related. | 78020 |
The QNX Neutrino C Library Reference now includes an entry for InterruptStatus(). | 78079 |
The documentation for io-blk.so, mount, and mount() now points out that updating a mount resets the other mount flags to their defaults. The documentation for mount() explains how you can get the current settings. | 78089 |
The maximum user or group ID in a QNX 4 filesystem is 65534. | 78195 |
We've updated the sample programs in Writing a Resource Manager so as to eliminate some compiler warnings. | 78239 |
We've corrected the names of the _MOUNT_NOATIME, _MOUNT_NOCREAT, and _MOUNT_NOSUID flags in the documentation for mount_parse_generic_args(). | 78287 |
We've added implied (_MOUNT_IMPLIED) to the list of options that mount_parse_generic_args() processes. | 78331 |
We've documented the -o priority option that you can use to specify the working priority of the internal pulse that the devc-* drivers use. | 78357 |
The iofunc_stat_default() function returns -1, to indicate to the resource manager library that it should return one part from the ctp->iov structure to the client. | 78470 |
The description of the Blocked column in the output from pidin now mentions that if the blocking process is running on a remote node, the process ID is followed by @ and the node name. | 78476 |
We've corrected the call to memset() in the example for getsockopt() in the QNX Neutrino C Library Reference. . | 78595 |
The documentation for qcc now includes c++-header in the list of supported values for the -x option, and lists the extensions that are parsed to create precompiled headers. | 78650 |
The entry forsysctl in the Utilities Reference now describes the -d, -e, -f, -M, -q, -r, and -x options. It also describes how you can use a file such as /etc/sysctl.conf to set variables whenever you boot the system. | 78736 |
After you've launched io-pkt*, you can use the mount command to load additional modules such as lsm-pf-v4.so or lsm-pf-v6.so. | 78737 |
Use commas, not question marks, to separate multiple options when opening a PPS object. | 78873 |
Because io-pkt includes the TCP/IP stack, you can't load more than one instance of the stack on a single instance of io-pkt. We've corrected the TCP/IP Networking chapter of the System Architecture guide. | 78921 |
We've corrected the name of the <ftw.h> header file in the entry for nftw() and nftw64() in the QNX Neutrino Library Reference. | 79058 |
To load lsm-pf-v4.so, or lsm-pf-v6.so, use mount with a special device of io-pkt, not tcpip. The documentation for lsm-autoip.so now shows how to load this module when you start io-pkt-*. | 79118 |
If you use the P_WAIT flag, you need to use a status macro such as WEXITSTATUS() to extract information from the value returned by the spawn*() functions. | 79150 |
If you pass a string of "/usr/" to dirname(), the string returned is "/", not "usr". We've corrected the examples in the QNX Neutrino Library Reference. | 79323 |
Typically your program calls ChannelCreate() only once, and all threads block on that channel.We've also corrected a call to MsgReplyv() in one of the examples. | 79573 |
The documentation for showmem now includes more details about using the options and interpreting the output. | 79695 |
We've corrected the synopsis for wcscpy(), wcsncpy(), wcstoul(), wcstoull(), wcsxfrm(), wprintf(), and wscanf() in the QNX Neutrino Library Reference. | 79882 |
The documentation for straddstr() now describes how the function handles null characters in the strings. | 80304 |
The ability to munmap() just a part of an area mapped with mmap() was introduced in QNX Neutrino 6.3.2; we've corrected the documentation for munmap(). | 80441 |
The getrlimit() and setrlimit() routines don't support RLIMIT_FSIZE or RLIMIT_MEMLOCK. | 80610 |
The explanation for an error of ENXIO is now clearer in the documentation for mmap(). | 81252 |
We've corrected the diagram of using the ?server option in the Subscribing chapter of the PPS Developer's Guide. | 81682 |
The entry for readdir() in the QNX Neutrino C Library Reference now mentions that ftw() provides another way to walk a file tree. | 82206 |
The descriptions of daemons and services in the default version of the /etc/inetd.conf file are commented out; uncomment the ones that you want to use in your system. | 82401 |
The ftruncate() and ftruncate64() functions can indicate an error of ENOMEM if there isn't enough memory to change the size of a shared memory object. | 82503 |
We've corrected the instructions for creating a new project in 10 Steps to Developing a QNX Program: Quickstart Guide. | 82659 |
The entry for devc-serusb in the Utilities Reference now describes the debug, drt, name, and retry device-specific options. | 83096 |
The entries for pci_read_config*() in the QNX Neutrino C Library Reference now warn that these functions can return inconsistent data if another process is extensively using the PCI bus. | 87498 |
The documentation for resmgr_attach() now says that this function indicates an error of EBUSY if an internal resource isn't available. (Ticket ID 00106344) | 88093 |
In the Understanding System Limits chapter of the QNX Neutrino User's Guide, we've updated the maximum number of processors and added the limits for ARM-v7 platforms. | 88115 |
The documentation for dlopen() now mentions that the use of LD_DEBUG_OUTPUT with setuid binaries is disabled, for security reasons. | 90385 |
The documentation for pthread_setname_np() now mentions that _NTO_THREAD_NAME_MAX is defined in <sys/neutrino.h>. | 90638 |
The SPI (Serial Peripheral Interface) Framework technote now explains how to use the device argument to spi_getdevinfo(). (Ticket ID 00105894) | 91933 |
We've updated the list of options in the documentation for devb-eide. | 93052 |
We've corrected the description of S_IFMT in the entry for stat() in the QNX Neutrino C Library Reference. | 93591 |
The documentation for gf-calib now explains why you might need to use the -D option to prevent the pointer cursor from being displayed. | 95754 |
The calling process needs to be running as root in order to map physical memory; we've updated the documentation for mmap(), mmap_device_io(), and mmap_device_memory(). | 96217 |
We've corrected the synopsis for PxConfigNextEntry() and PxConfigNextEntryCx() in the Photon Library Reference. (Ticket ID 00109615) | 98993 |
We've corrected the list of options in the entry for cam-disk.so in the Utilities Reference. | 99109 |
We've corrected the descriptions in the QDB Developer's Guide of what qdb_backup(), qdb_bkcancel(), and qdb_printmsg() return. | 99605 |
We've updated the description of the -R option to qdb in the QDB Developer's Guide. | 100763 |
We've corrected the synopsis for posix_spawn() in its entry in the QNX Neutrino C Library Reference. | 101175 |
We've corrected a call to bt_set_flags() in an example in the Backtraces technote. | 103229 |
The fcntl(), flock(), and lockf() functions can give an error of ENOSYS if the filesystem (e.g., the /dev/shmem “filesystem”) doesn't support file locking. | 103420 |
The documentation for pci_attach_device() now describes how to determine whether or not a device supports MSI or MSI-X and how to assign an interrupt in the driver. (Case 00104937, 00110660) | 103614 |
The QDB Developer's Guide now describes the special block and nonblock values that you can specify for the -t and -T options. | 103621 |
We've updated the documentation for the Dinkumware libraries. | 103671 |
We've corrected the description of what dircntl() returns. | 111113 |
The posix_spawn*() functions return error codes instead of setting errno. We've corrected the documentation. | 111758 |
We've corrected the examples of typed memory and the names of the POSIX_TYPED_MEM_* constants in the System Architecture guide. | 114978 |
It isn't safe to call posix_spawn(), posix_spawnp(), or setdomainname() from an interrupt handler. It isn't safe to call trace_logf(), trace_nlogf(), or trace_vnlogf() from an interrupt handler if the format codes or parameters include float elements. | 115067 |
We've updated the list of options in the entry for cam-cdrom.so in the Utilities Reference. | 117625 |
We've corrected the name of the _sync_attr structure in the entry for SyncTypeCreate() in the QNX Neutrino C Library Reference. | 119923 |
The pidin utility's R format and timers shorthand form report the time left before a timer's expiry and the timer interval in microseconds, not milliseconds. | 120457 |
We've corrected the synopsis for ha_fopen() in the High Availability Framework Developer's Guide. | 121752 |
The GNU C++ library type is supported on all architectures; we've corrected the documentation for qcc. | 125649 |
We've added entries for procmgr_event_notify_add() and procmgr_event_notify_delete() to the QNX Neutrino C Library Reference. | 125766 |
We've corrected the spelling of EACCES in various entries in the QNX Neutrino C Library Reference. | 126027 |
The entry for devb-eide in the Utilities Reference now describes how the driver chooses the connection mode. (Ticket ID 00113539) | 132399 |
We've corrected the descriptions in the QNX Neutrino C Library Reference of clock_getcpuclockid(), clock_gettime(), ClockId(), ClockTime(), and pthread_getcpuclockid(). | 134916 |
SchedGet() returns an actual scheduling policy value, not SCHED_ADJTOHEAD or SCHED_ADJTOTAIL. We've corrected the documentation. | 136989 |
We've corrected the explanation in Getting Started with QNX Neutrino of why you can't fork() a multithreaded process. | 139031 |
We've corrected the sample installation script in the “How to create a Runtime Kit from the QNX Software Development Platform” technote, so that the script exits if there's already a partition of type 179 on the disk. | 142158 |
If you want to set up a bridge whenever you boot your system, you need to add the appropriate commands to your /etc/rc.d/rc.local file. We've corrected the documentation for brconfig. (Ticket ID 00114672) | 144619 |
The entry for pidin in the Utilities Reference now describes all of the format codes. | 145436 |
The maximum number of active processes on an ARMv7 platform is 255, the same as on ARMv6. | 148701 |
We've documented the -o nodaemon option for devc-serpci and devc-serusb, and the -d option for mq, mqueue, and pipe. These options prevent the process from becoming a daemon. | 157100 |
We've corrected the name of the usbmgr_path option in the entry for enum-usb in the Utilities Reference. | 157297 |
If you're using posix_typed_mem_open(), you need to include <fcntl.h> in order to get the definitions of O_RDONLY, etc. | 160248 |
We've corrected the entry for mem_offset() and mem_offset64() in the QNX Neutrino Library Reference. You must call these functions with NOFD for the fd argument. | 160360 |
The entry for pci_attach_device() in the QNX Neutrino Library Reference now describes the PCI_USE_MSI and PCI_USE_MSIX flags. | 162456 |