Operating systems, development tools, and professional
services for connected embedded systems
Home
Developer Resources
Technical Articles

QNX Technical Articles

 

QNX® Software Development Platform 6.5.0 Service Pack 1: Release Notes

QNX® Software Development Platform 6.5.0 Service Pack 1: Release Notes

Date of this edition: March 20, 2013

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:

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/.


Note:
  • For information about using BSPs with QNX SDP 6.5.0, see the BSPs and Drivers project on Foundry27.
  • For the most up-to-date version of these notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download area.

Contents

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

For the most up-to-date version of these release notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download area.


Caution: 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.

What's new: Kernel

What's new: Startup


Note:
  • If you plan to use more than 8 CPUs on an x86 platform, you must use the 6.5 version of procnto-smp and startup-bios or startup-apic. (Ref# 75180)
  • If you're running startup-apic, you must use pci-bios-v2 instead of pci-bios, but it must still be called pci-bios in order for the enumerators to work correctly. In your buildfile, add pci-bios-v2 like this:
    pci-bios=pci-bios-v2

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:

    (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

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-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)

    Note: 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)

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

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)

Note: 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.

Note: 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)

Note: 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

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:

  1. Extract the VMware target from the DVD. For example, on Windows, open a Windows Explorer window, double-click on the target\650SP1-VM.tar file, and then extract the 650SP1-VM folder to some location on your hard drive (e.g., My Documents).
  2. 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.
  3. 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
  • 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.
(Ref# 77106, 77332, 150729)

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:

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):

  1. Get the target-x86-debug-date.tgz file.
  2. cd $QNX_TARGET
  3. 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:


Note: 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:

Experimental items


Caution: 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:

Known issues

QNX SDP 6.5.0 SP1 contains known issues in these areas:


Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

Known issues: Kernel

procnto
  • User-specified band configurations in the standard memory allocator may corrupt your application's memory, and may cause the application to crash. (Ref# 77776, 77811)

    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, 62212, 75921)
  • If you debug a statically linked executable on MIPS targets, the kernel might crash. (Ref# 76318)

    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, 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)

    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)
  • 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)
  • 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, 29341)
  • 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)

    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, 30045, 62483)
  • 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)
  • 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, 29380)

  • 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)
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)

    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)

    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)

Known issues: Libraries and header files

fdatasync(), fsync()
Calls to these functions on a PPS file always fail with errno set to 22 (invalid argument). (Ref# 77943)
fork()
Unnamed semaphores aren't inherited across a fork() (Ref# 59947, 73710)
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)
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)
posix_mem_offset()
POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563)
posix_memalign()
If you call:
posix_memalign(&ptr, 128, 128 - 2 * sizeof (void*));
  

the allocator loops forever. (Ref# 179337)

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()
In the current implementation, posix_spawn() can indicate an error of EMSGSIZE. This is most likely the result of attempting to operate on too many file descriptors in the posix_spawn_file_actions_t object passed to posix_spawn() or posix_spawnp() and/or an overly large environment variable list (either through inheritance by passing NULL for the envp parameter to posix_spawn() or posix_spawnp() or by explicitly providing an overly large envp parameter). (Ref# 75606)

Workaround: Reduce the number and size of the environment variables and/or number of file descriptors being manipulated with the posix_spawn_file_actions_t object.

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)
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)
Time zones
QNX Neutrino uses a nonstandard method of defining time zones that's difficult to keep up to date. We plan to replace it in a later release. (Ref# 44425)

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, 48764, 48765)
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)

Known issues: Startup

Known issues: Adaptive partitioning

Known issues: Booting

Known issues: BSPs and DDKs

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.

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)
  • The -M option doesn't work unless you specify the c, d, or m format in the -f or -F option. (Ref# 93157)
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)

Known issues: Device drivers

Audio device drivers (deva-*)

Block-oriented drivers (devb-*)

devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
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)

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)

    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)
devg-smi5xx.so
This driver faults or deadlocks in multicard setups. (Ref# 59790, 60369, 76945)
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)
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)

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)
  • 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)

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)

USB drivers (devu-*)

Flash filesystems & embedding

Known issues: IDE

The IDE contains the following known issues:

See also the list of host-specific issues, later in these notes.

Known issues: General

Known issues: Application Profiler perspective

Known issues: System Profiler perspective

Known issues: Memory Analysis perspective

Known issues: System Information perspective

Known issues: System Builder perspective

Known issues: C/C++ development

Known issues: Team/CVS

Known issues: Debugging

Known issues: Documentation

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)
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)
IDE User's Guide
Additional documentation is required for the following areas:
  • the fast method of launching a debug session
  • debugging a DLL/shared library
  • attaching to a running process with the debugger

(Ref# 42437)

Known issues: Instant Device Activation

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)
  • io-usb might crash with a SIGSEGV when you shut down the system and you don't have any USB devices inserted. (Ref# 29495)

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)
ifconfig
The commands:

ifconfig iface_name up
ifconfig iface_name scan

don't work individually for Wi-Fi drivers. (Ref# 61246)

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)

    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)
  • 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)

    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
        

    Note: 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).


    Note: 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)
  • 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.
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)

  • If you unlink() a file on a CIFS mount point, any open file descriptors for that file become invalid. (Ref# 38574)
  • fs-cifs doesn't support POSIX file-locking functions. (Ref# 38570)
  • 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)
  • 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)
  • 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)
fs-nfs2
  • fs-nfs2 doesn't support files larger than 2 GB. (Ref# 39060)
  • 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)
  • If a path ends in a slash, it must be a directory. When accessing a link with a trailing slash, fs-nfs2 immediately returns 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. Strict POSIX behavior will be added in a future release. (Ref# 20877)
  • fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022)
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)
  • The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484)
  • 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)

    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)
  • Currently, GNS (name_attach()) isn't compatible with the resource manager framework. (Ref# 20062)

    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)

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)
TCP/IP (part of io-pkt)
  • The TCP/IP stack doesn't maintain the statistics for outbound packets over VLAN interfaces. (Ref# 16684)
  • 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)
  • The TCP/IP stack doesn't maintain proper interface statistics for the link speed. (Ref# 27015)
  • 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)

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)

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)

Workaround: Do the following:

  1. 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).
  2. 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.

  3. 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.

  4. 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)
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)
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)
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)
  • 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)
  • 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)

    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 Settings\some_user\my_phab_app). (Ref# 39883)

Known issues: Persistent Publish/Subscribe

ppsparse()
  • This function is declared in <sys/pps.h>, not <ppsparse.h> as stated in the documentation. (Ref# 168338)
  • 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 -attr\n when an attribute is deleted. Since there's no value, the code sets attr_index to -1. (Ref# 77361)

Known issues: Runtime kit

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: System Analysis Toolkit

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)

Workaround: Do the following:

  1. Start a command prompt.
  2. Run the ksh command.
  3. Type qconfig to get the installation name of the required configuration.
  4. 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)
  • 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)
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:

  1. Open a command window and run cmd.
  2. Type set.
  3. Find the value for MAKEFLAGS and save it.
  4. Type set MAKEFLAGS.
  5. Do your MSVS work.
  6. 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:

  1. 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.)
  2. Click on the Tools tab. Scroll down until you find Disable UAC, and then click that line.
  3. Press the Launch button.
  4. A cmd window will open. When the command is done, you can close the window.
  5. 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.


Caution: 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.

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
        
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)

    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)
  • 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 (Internal Browser-->Default System Web Browser), and you'll receive this error message:
    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)

    Workaround: In the IDE, select Preferences-->General-->Web Browser, and then specify an external browser.

  • 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:

    1. On Ubuntu, type:
      sudo apt-get install xulrunner
          
    2. 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
          
  • 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.

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)

Getting started with the documentation

After you've installed QNX SDP, you'll find an extensive set of HTML documentation:

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 start io-usb with the 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 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
 
©2013 QNX Software Systems Limited, a subsidiary of BlackBerry.   BlackBerry Logo