Caution: This version of this document is no longer maintained. For the latest documentation, see

QNX® Software Development Platform 6.4.0: Release Notes

Date of this edition: October 17, 2008

Target OS: This development platform produces software that's compatible with targets that are running QNX® Neutrino® 6.4.0.

Host OS: You can install this package as a self-hosted QNX Neutrino® development system, or on one of the following development hosts:

  • We no longer support the QNX Momentics Tool Suite on the following hosts:
    • Windows NT
    • Linux Red Hat 8 and 9
    • Solaris
  • You can't install QNX SDP 6.4.0 on machines that are running 64-bit Linux Ubuntu 7.10. (Ref# 56182)
  • For the latest information about using BSPs with QNX SDP 6.4.0, see the SDP 6.4.0 BSP Information page ( found in the BSPs and Drivers project of Foundry27.
  • For the most up-to-date version of these notes, go to our website,, log into your myQNX account, and then go to the Download area.

Caution: If you installed an alpha version of this software, uninstall it before installing the production version.


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,, 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 the QNX Software Development Platform?

On Windows and Linux hosts, the QNX Software Development Platform consists of the QNX Momentics Tool Suite, which you can use to develop applications that run on a target machine that's running the QNX Neutrino RTOS.

The self-hosted version of the QNX SDP consists of the QNX Neutrino RTOS and the QNX Momentics Tool Suite.

What's new in QNX Neutrino 6.4.0?

The key improvements in 6.4 include:

For more details, see the following sections:

Migrating from earlier releases

Supported targets

We no longer support ARMBE, MIPSBE, MIPSLE, or Intel 386 targets. (Ref# 58190, 58192, 58193)

POSIX PSE52 conformance

We've made the changes described below in order to conform to PSE52, a subset of POSIX intended for realtime controllers.

What's new: Kernel

What's new: Core networking

QNX Neutrino has a new core networking stack that's based on NetBSD 4.0 stack. The main features include:

There are three variants of the networking manager:

IPv4 version of the stack with no encryption or Wi-Fi capability built in. This is a "reduced footprint" version of the stack.
IPv4 version of the stack that has full encryption and Wi-Fi capability built in and includes hardware accelerated cryptography capability (Fast IPsec).
IPv6 version of the stack (includes IPv4 as part of v6) that has full encryption and Wi-Fi capability, also with hardware accelerated cryptography.

Note: In our documentation, we use "io-pkt" to refer to all the stack variants. When you start the stack, use the appropriate variant; io-pkt isn't a symbolic link to any of them.

We've discontinued the following:

Instead of using: Use:
io-net io-pkt*
ipf, ipfs, ipfstat, ipmon, ipnat pf, /etc/pf.conf, pfctl,, N/A; not currently supported by io-pkt* Now included in io-pkt* Now included in io-pkt*, N/A N/A, Now included in io-pkt* N/A

We also no longer ship the SRI SNMP suite or the Network DDK.

The new, related binaries include:

Configure network bridge parameters
Authenticator for IEEE 802.11 networks
Watch for addresses added to or deleted from interfaces and call up/down-scripts for them
AutoIP negotiation module for link-local addresses
Transparent Distributed Processing (native QNX network) module
Name-service switch configuration file. This file replaces the lookup keyword in /etc/resolv.conf.
Command-line tool for using the OpenSSL crypto library
Packet Filter pseudo-device
Configuration file for pf
Control the packet filter (PF) and network address translation (NAT) device
Display or set parameters for a PPPOE interface
List the open sockets
Dump traffic on a network
WPA command-line client
Set WPA passphrase for a SSID
Wi-Fi Protected Access client and IEEE 802.1X supplicant

The other changes of note include the following:

What's new: Filesystems

QNX Neutrino 6.4.0 introduces the Power-safe "copy on write" filesystem. It's the default filesystem for self-hosted Neutrino systems. FFSv3 and ETFS are included in base runtime.

The new filesystems and the related utilities include:

Manipulate the attributes of a file (QNX Neutrino)
Check an entire Power-Safe filesystem for consistency (QNX Neutrino)
Shared object that supports the Power-Safe filesystem (QNX Neutrino)
Shared object that supports Universal Disk Format (OSTA-UDF/ECMA-167) filesystems
Display filesystem statistics (QNX Neutrino)
Format a Power-Safe filesystem (QNX Neutrino)

For more information, see the Filesystems chapters in the System Architecture and the Neutrino User's Guide, as well as the entries in the Utilities Reference.

Other changes include:

An ETFS filesystem is no longer mounted by default; you can use the -m option or mount -tetfs /dev/etfs2 my_mountpoint. (Ref# 41841, 57498; Ticket ID 74912)
A deadlock no longer occurs during one of our benchmark tests. (Ref# 49288, 49636)

What's new: Graphics

The new binaries include:

Generate display configuration data
Calibrate a GF touchscreen (QNX Neutrino)
QNX Advanced Graphics server

When you want to run both GF/OpenGL ES and Photon applications, you must start io-display before starting the Photon graphics server, io-graphics. In this situation, io-graphics queries io-display for the display's settings rather than its own command-line settings.

For more information on io-display and Photon, refer to Appendix: Photon in Embedded Systems in the Photon Programmer's Guide.

Configure remote access to your Photon session.

Note: We strongly recommend that you use the Advanced Graphics layering API instead of the Photon layering API, due to increased functionality and ease of use. (Ref# 60878)

What's new: Libraries and header files
Because of some changes in the way that gcc handles its runtime support routines, we've had to change the version number of to 3, to be able to support old (pre-6.4.0) binaries on a 6.4.0 system.

There are two changes that were made to gcc:

You need to update your buildfiles as follows to use the new version of

(Ref# 58590, 59482)

Dinkum libraries
We've upgraded to Dinkumware version 5.0. For information about the changes to the libraries, see The new libraries include at least the following corrections:
This function is similar to dispatch_create(), but it lets you specify the channel ID for the dispatch. This lets you safely use name_attach() in Photon applications, as well as specify channel flags for name_attach(). (Ref# 24325, 59009)

Note: If your code calls the internal (and undocumented) _dispatch_create() function, you should modify it to call dispatch_create_channel() instead.

This function now lets you encrypt or decrypt the given string, depending on the flags argument. (Ref# 40565, 40639)
This function now returns EOWNERDEAD if the owner of the lock died while holding it. (Ref# 52449, 52863)
This function supports some new special flags for PPC and ARM platforms. (Ref# 39614, 48279, 58664)
There's a new SPAWN_PADDR64_SAFE flag that permits the selective application spawn of a task that's known to be 64-bit safe or doesn't care about the physical memory location. (Ref# 52392, 60956; Ticket ID 80995)

What's new: Drivers

What's new: Audio device drivers (deva-*)

The new drivers and DLLs include:
Sound driver for the Intel High Definition Audio controllers
Mixer DLL for High Definition Audio codecs. We currently support a limited number of codecs.

Other changes include:

The changes to the Audio DDK include:

The changes to the software PCM mixer include:

We've deprecated the drivers for Creative Sblive and Cyberpro5.

What's new: Character drivers (devc-*)

What's new: Flash filesystem drivers (devf-*)

What's new: Graphics drivers (devg-*)

The new drivers include:
Graphics driver for Intel 945GX and 945GMx chipsets
Software 3D graphics module
Graphics driver for the Poulsbo chipset. Note that this graphics driver is currently undocumented. Refer to the -use message for information about using this driver.

What's new: Human interface device drivers (devh-*)

The new drivers include:
Driver for USB Egalax touch devices
Driver for USB Touch International touch devices

What's new: Input device drivers (devi-*)

The new drivers include:

Semtech input manager for Photon
Zytronic input manager for Photon

What's new: Network drivers (devn-*, devnp-*)

The new drivers include:
Driver for the ASIX AX88172/AX88178/AX88772 USB Ethernet dongle
Driver for Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers
Driver for Realtek 8169 Gigabit Ethernet controllers
Driver for wireless network adapters based on the Atheros AR5210, AR5211, AR5212, and AR5213 chips
Driver for USB (2.0) Ethernet adapters based on the ASIX AX88172 chip
Driver for Broadcom BCM1250 10/100/1000 Mbit Ethernet controllers
Driver for the Broadcom-based 802.11b/g wireless Ethernet controller
Driver for Broadcom 57xx Tigon3 10/100/1000 Mbit Ethernet controllers
Driver for Intel 82540, 82544, 82545, 82546, and 82547 Gigabit Ethernet LAN adapters
Driver for Freescale MPC85XX TSEC Ethernet controllers
Hardware Crypto Engine driver
Driver for Marvell Yukon-2 based Gigabit Ethernet adapters,
Driver for wireless adapters based on the Ralink RT2500, RT2501, RT2600, and RT2500USB chipsets
Driver for USB 2.0 wireless adapters based on the Ralink RT2501USB and RT2601USB chipsets
"Shim" driver for backward compatibility with io-net
Driver for Intel 82557, 82558, and 82559 Fast Ethernet LAN adapters

What's new: USB drivers (devu-*)

The new binaries include:

Enumerate devices on the USB bus

What's new: Documentation

What's new: Multimedia

The new binaries include:

Media Content Detector utility

What's new: Web browsers

We continue to work on other browser-related offerings that are planned for future releases or available separately from SDP. Please contact QNX directly for more information.

What's new in the QNX Momentics Tool Suite?

The QNX Momentics Tool Suite features:

For more details, see the following sections:

What's new: Compiler and tools

The changes include:

There's a new -z option that makes dumper use gzip to compress the core files. The option takes an integer argument that specifies the level of compression, in the range from 1 (fastest) through 9 (best compression). (Ref# 39662)
We've updated gdb to version 6.7. (Ref# 54030)
We've discontinued the Intel 8.1 compiler, icc. (Ref# 56606)
The -M option to qcc isn't changing to -Map as we warned in earlier release notes. (Ref# 26743, 55446)
We now include Python, the powerful object-oriented programming and scripting language. (Ref# 56492, 58443)

Note: We don't support Python on Linux or Windows. If you need Python on these hosts, you should download it from (Ref# 60935, 60940)

This is a new utility that you can use to determine how your system's memory is used. (Ref# 26719, 60931)

New utilities include:

Manage adaptive partitions
Merge lines of input files, and writes the resulting lines to standard output. (POSIX)
Display memory information
Display memory information
Decode a file that was encoded with uuencode
Encode a binary file or standard input into ASCII

We've deprecated the following items:

What's new: Integrated Development Environment

This version of the IDE includes the following fixes for previously reported issues:

What's new: PhAB

Various bug fixes

What's new: Phditto

What's new: Phindows

A word about coexistence

The QNX Momentics Tool Suite lets you install and work with multiple versions of Neutrino (from 6.2.1 and later). Whether you're using the command line or the IDE, you can choose which version of the OS to build programs for.

Note: Only versions of Momentics with different medial version numbers can coexist. For example, 6.3.2 can coexist with 6.2.1, but not with 6.3.0. Coexistence with 6.2.1 is supported only on Windows hosts.

When you install QNX Momentics, you get a set of configuration files that indicate where you've installed the software. The QNX_CONFIGURATION environment variable stores the location of the configuration files for the installed versions of Neutrino; on a self-hosted Neutrino machine, the default is /etc/qnx.

QWinCfg for Windows hosts

On Windows hosts, you'll find a configuration program called QWinCfg for switching between versions of QNX Momentics. You launch QWinCfg via the start menu (e.g. All Programs-->QNX Software Development Platform 6.4.0-->Configuration).

For details on using QWinCfg, see its entry in the Utilities Reference.

qconfig utility for non-Windows hosts

If you're using the command-line tools, use the qconfig utility to configure your machine to use a specific version of Neutrino:

Note: In the above command, you must use the "back tick" character (`), not the single quote character ('). The string that you pass to the -n option is the Installation Name field as printed by qconfig.

This command affects only the shell in which you ran qconfig. Other windows, for example, will be unaffected. To change environments in all your windows, you can run the command in your shell-initialization script or in your .profile. You can also define separate users who use different coexisting versions.

Coexistence and the IDE

When you start the IDE, it uses your current qconfig choice as the default version of the OS; if you haven't chosen a version, the IDE chooses an entry from the directory identified by QNX_CONFIGURATION. If you want to override the IDE's choice, you can choose the appropriate build target. (For more information, see the section "Version coexistence" in the IDE Concepts chapter of the IDE User's Guide.)

Discontinued items

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,

The experimental items in QNX SDP 6.4.0 are:

Known issues

QNX SDP 6.4.0 contains known issues in these areas:

Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

Known issues: Kernel

On SMP systems, the functions that lock mutexes -- such as pthread_mutex_lock(), and pthread_cond_wait() (when the thread is woken up by a pthread_cond_signal() or pthread_cond_broadcast() -- can unblock threads in the wrong order, which can cause a priority inversion. (Ref# 24522)

Known issues: Libraries and header files

Asynchronous messaging doesn't work correctly on multiprocessor systems. (Ref# 57260)
chdir(), chroot()
A bug in chdir() makes chroot() not work properly. (Ref# 21089)

Workaround: Do the following:

  1. Run export DIR_KEEP_SYMLINK=1 before starting your program.
  2. Use chdir() to go to your new root directory before you chroot() to it.

Here's an example:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <errno.h>

void print_cwd() {
    char* cwd;
    char buff[PATH_MAX + 1];
    cwd = getcwd( buff, PATH_MAX + 1 );
    if( cwd != NULL ) {
        printf( "mycwd: My working directory is %s.\n", cwd );
    } else { 
        printf("mycwd: getcwd returned Null\n"); 

int main( void )
    char* cwd;
    int rc;
    char buff[PATH_MAX + 1];

    printf("before running this, you should 'export DIR_KEEP_SYMLINK=1' \n"); 
    printf("mycwd: initial cwd:\n"); 
    printf("mycwd changing chroot to /home/ftp/\n"); 
    printf("mycwd: chroot rc=%d\n",rc);
    printf("mycwd: chdir to ad\n");
    printf("mycwd: chdir rc=%d\n",rc); 

    return EXIT_SUCCESS;
This release includes inline assembly optimization on some platforms for the ENDIAN_*() (byte-swapping) routines.

These routines are macros that determine the best method to perform the byte-swapping (as inline math using shift-and-mask operations that may be constant-folded at compile time, or as inline assembly using native CPU instructions at runtime). Due to a bug in the gcc 2.95.3 __builtin_constant_p() implementation, code compiled with gcc 2.95.3 always selects the assembly variant.

This means that if you use an ENDIAN_*() expression as a static initializer, it fails to compile. For example, if you use gcc 2.95.3 to compile the following code:

static uint32_t numbers[] = {

you'll get an initializer element is not constant compile error. (Ref# 27099)

Workaround: Do one of the following:

Note: This affects only static initializers containing ENDIAN_*() expressions, and doesn't apply to any runtime use of these ENDIAN_*() macros.
This library causes some problems on x86 targets if it's compiled with gcc 4 with optimization about -O0. To avoid these problems, we've compiled the DLL with -O0 optimization for x86. (Ref# 55883)
Synchronization objects
You should allocate synchronization objects (mutexes, condvars, etc.) only in normal memory mappings. Otherwise on certain processors, such as some PPC processors, pthread_mutex_lock(), atomic_add(), and so on will cause a fault if the control structure is allocated in uncached memory. (Ref# 61585)
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)
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)

Known issues: Filesystems

If you try to delete a linked file or directory in a Linux Ext2 filesystem, you get a "Corrupted file system detected" error. (Ref# 50264)

Known issues: Startup

Known issues: Adaptive partitioning

Known issues: Booting

Known issues: BSPs and DDKs

Known issues: Compiler and tools

The Windows version of make doesn't work with UNC paths, such as //some_machine/dir. (Ref# 24202)

Workaround: Use drive-letter mountpoints instead.

The qcp utility works only on x86 platforms. (Ref# 9500)

Known issues: Device drivers

Audio device drivers (deva-*)

Block-oriented drivers (devb-*)

High-priority threads can get starved off by lower ones via devb-* because the filesystem uses sleepon_*() functions, which don't inherit priorities. (Ref# 2109)
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
devb-doc, devb-doc3, dformat, dformat3
The Disk On Chip drivers were provided by the vendor. If you run use -i on them, the state is given as Experimental. (Ref# 23101)
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
DMA modes don't work on these drives:

(Ref# 41600)

Character drivers (devc-*)

On x86 systems, the devc-con console manager doesn't work correctly when you're using a USB keyboard. (Ref# 62053)

Workaround: Use the devc-con-hid console manager instead.

Graphics drivers (devg-*)

Human interface device drivers (devh-*)

Network drivers (devn-*, devnp-*)
If you use more than 64 Tx descriptors, the PPC version of the driver is inoperative. (Ref# 22848)

Workaround: We've temporarily changed the PPC version of this driver to use 64 Tx descriptors by default (on other targets, the default is 128). This may result in lost packets for high-throughput transmit operations.,
Slaying io-net with the and drivers isn't always successful. (Ref# 28602)

Workaround: Use kill -9 instead to kill io-net.
This network driver on the Dell PowerEdge 850 board will run only up to 100 Mbit/s, and not 1000 Mbit/s. Other boards work well at 1000 Mbit/s. (Ref# 39355)
The USB-Ethernet dongle sometimes drops packets when used on slow systems or with UHCI. (Ref# 62088)

Workaround: If you encounter problems with this driver, use the io-net driver instead.
It isn't currently possible to unmount drivers using the ifconfig ... destroy command. We'll add this capability in the next revision of the driver. (Ref# 61710)
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:

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: Code Coverage perspective

Known issues: Windows-hosted IDE

Known issues: Documentation

Known issues: Instant Device Activation

Known issues: I/O devices


Known issues: Licensing

Known issues: Multimedia,
Loading these legacy plugins causes a SIGBUS error. (Ref# 21707)

Workaround: Use the -ae option to procnto to enable alignment fault emulation.

Multimedia TDK 1.0.1
QNX SDP 6.4.0 doesn't support Multimedia v1.x. Applications that depend on Multimedia v1.x will no longer resolve symbols or execute under 6.4. For multimedia support, you need to install the QNX Aviage Multimedia Suite. (Ref# 55967)

Known issues: Networking

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

ifconfig iface_name up
ifconfig iface_name up

don't work individually for WiFi drivers. (Ref# 61246)

Workaround: Combine the commands:

ifconfig iface_name up scan
fs-nfs2, fs-nfs3
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)
If you use pppd with a serial port, io-pkt may become reply blocked. (Ref# 50977)

Workaround: Disable hardware flow control by clearing ihflow and ohflow:

stty -ihflow -ohflow < /dev/ser1
The LCP timeout has decreased from 3 seconds in io-net to 1 second in io-pkt, so some connections might get dropped. (Ref# 54799)

Workaround: You can increase the timeout to 3 seconds by using pppoectl:

pppoectl pppeo0 lcp-timeout=3000
When slinger is executing a CGI script and setting the environment variables to be passed to the script, the environment variable SERVER_ROOT is set to / instead of to the directory specified by HTTPD_SCRIPTALIAS. The actual current working directory of slinger is correct; it's just the environment variable that's wrong. (Ref# 20795)
TCP/IP v4 (now part of io-pkt)
TCP/IP v4 and v 6 (now part of io-pkt)
If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)

Known issues: Photon

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)
This print filter can have a segmentation fault when running with the -Q2 quality setting. (Ref# 60885)
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 for Windows
Note that this file, which contains a list of the applications that you want Photon to launch automatically when it starts, must be executable. (Ref# 22196)
If you create a PtButton, and you set Pt_ARG_HIGHLIGHT_ROUNDNESS to a nonzero value, the button's border is rounded, but the gradient remains rectangular. (Ref# 24980)

Workaround: Either use a flat fill (i.e. set Pt_FLAT_FILL in Pt_ARG_BASIC_FLAGS), or use an image-based button.

Pg_LAYER_ARG_EDGE_MODE (for indicating how a layer should behave if the source viewport is larger than the extent of the source data) isn't currently implemented. (Ref# 52431)

Known issues: System Analysis Toolkit

Known issues: Host-specific

QNX Neutrino self-hosted

Windows hosts

On Linux and Windows, you might need to install some international fonts in order to display the Multilingual Input documentation. (Ref# 61950)
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)
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

User Account Control (UAC)
Windows Vista includes a new account policy, called User Account Control (UAC), that will impact 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, you must have administrator privileges and disable UAC. (Ref# 44027)

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 Access Control by selecting the Enable UAC line and then clicking the Launch button.

Caution: Disabling UAC bypasses some of Vista's security features.

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.


Linux hosts

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

Getting started with the documentation

After you've installed QNX SDP 6.4.0, you'll find an extensive set of online documentation in HTML format. You can read it in the Integrated Development Environment's help system on Linux and Windows development hosts; on self-hosted QNX Neutrino systems, you can read it in the Photon helpviewer, or you can use a web browser to display:


This "roadmap" page contains links to the various HTML booksets that accompany the OS (e.g. System Architecture, Programmer's Guide, Library Reference, Utilities Reference, etc.).

Note: For the most up-to-date version of the installation and release notes, go to our website,, log into your myQNX account, and then go to the Download area.

Technical support

To obtain technical support for any QNX product, visit the Support + Services area on our website ( You'll find a wide range of support options, including community forums.

List of fixes

The problems fixed in QNX SDP 6.4.0 include the following:

Software fixes

Change Ref#
The static libc now includes strptime(), which converts a string into a time. 9132
RAD and DEG now work correctly in phcalc. 8710
PtInitDnd() now accepts a drag event. If it isn't a Ph_EV_DRAG_COMPLETE subtype, you have to cancel the drag first, using the new PhCancelDrag() function. 8280
Phindows now supports clipboard sharing when connecting to a Neutrino machine that uses with an up-to-date version of phrelay. You can use the -Ob and -OB command-line options to enable and disable clipboard sharing respectively. It's on by default. 8216
The <string.h> header file now brings in <strings.h> if _POSIX_C_SOURCE isn't set, as this is common practice on other platforms. 60983
A PpPrintContext_t job control (0xF2) subcommand (0x05 - Pp_ABORTED) has been implemented in libphrinter. As a result of this, older applications that continued to run when processing particular .phs files might now exit.

This condition is triggered when the PpPrintContext_t resource Pp_PC_MAX_DEST_SIZE is set via PpSetPC(), and the current draw stream being rendered exceeds that set value. If the Pp_PC_MAX_DEST_SIZE isn't set (the default), this condition will not be encountered. When Pp_PC_MAX_DEST_SIZE isn't set, memory is allocated to accomodate the current draw stream (the default).

The preview utility now sets verbosity level so that an error message will be sent to stderr and sloginfo if libphrinter encounters an error condition.

It is strongly advised that users utilize the AG layering API rather than the Photon layering API, due to increased functionality and ease of use. 60878
VirtualPC and VMWare must run in a Windows session that's operating with 32-bit graphics. 60669 is now included in distribution. 60612
The qcc utility no longer needs a space between the -A option and its argument. 60511
Advanced Graphics now includes a touchscreen calibration tool called gf-calib. 60462
If you build a container project in the IDE, you've set the "stop on error" option on in the build configuration, and an error occurs in one of the projects, the build now stops correctly. 60281
The maximum number of threads for flash (devf-*) drivers has increased from 4 to 100. You can use the -t option to specify the number of threads. 59876
The usage message for mount now includes the -a option. 59722
The shm_ctl() and shm_ctl_special() functions have a new flag, SHMCTL_LAZY. Setting this flag delays allocating memory until it's referenced. Calling mmap() with flags of MAP_ANON | MAP_LAZY | MAP_SHARED implicitly sets SHMCTL_LAZY on the underlying object. 59589
The IDE now includes support for parallel building for QNX Projects. 59489
There's a new dispatch_create_channel() function that's similar to dispatch_create() but lets you specify the ID of the channel to use. 59009
The PtMultiText widget no longer displays CR and LF characters. (Ticket ID 83992) 58416
In the IDE on Linux, if you aren't logged in as root, and you try to start the tftp server and bind to port 67 (which requires root privileges), the IDE now displays an error message. If you want to run tftp as a non-root user, change the port (e.g. to 6700), or make the proxy program set its user ID to root. For example:

chown root eclipse/plugins/
chmod a+sx eclipse/plugins/

(The actual commands may depend on the distro.)

The PhAB language editor, phablang now correctly saves your translations. 58212
We've corrected a memory leak in io_close(), io_stream_read(), and io_stream_skip() for image_load_surface(). (Ticket ID 83864) 58086
Indices to the -k option to the sort command are now 1-based as per POSIX instead of the old Draft 9 behavior, which was 0-based. We added the -9 option so you can choose the old behavior, but this option may be deprecated in a future release. 57998
PxConfigReadString() now terminates the string with a NULL character. (Ticket ID 83833) 57996
We've deprecated psin. 57719
PgDrawGradientBevelBox*(), PgContrastBevelBox*(), and PgBevelBox*() now strictly constrain the incoming parameters as described in the documentation. The width parameter is inclusive, i.e. the inline, depth, and outline are constrained within the width. 57454
PgSetVideoMode() returns an error if more than one layer is active via the Pg layer family of calls. By default, io-graphics is already using one layer. 56988
The <termcap.h> file now defines the standard termcap variables, PC, BC, UP, and ospeed. The prototype to tputs() is now the standard: extern int tputs(char *, int, int (*)(int)); rather than the previous, extern int tputs(char *, int, int (*)(char));. 56632
The color model is now set correctly during multi-pass drawstream rendering. ARGB issues are now addressed correctly in OSC. (Ticket ID 82983) 56426
Both phditto and phindows now have a dialog for confirming that you want to close the window. 56162
The IDE's Code Coverage tool now works with C/C++ Managed Projects. (Ticket ID 82862) 56075
MultiMedia v1.x support has been removed from 6.4. MultiMedia v1.x-dependent applications will not resolve symbols or execute under 6.4. Inquire of QNX regarding the Aviage MultiMedia Suite for multimedia support. 55967
The IDE now lets you edit the line number for a breakpoint. Right-click on the breakpoint, select Properties..., select the Common tab, and then edit the line number. (Ticket ID 82835) 55861
GCC 4.2.* replaces calls to some functions such as strcpy() with calls to other functions such as memcpy(). As a result, memory analysis can show a different trap function name. To turn off this behavior, specify the -fno-builtin option when compiling. 55514
We've discontinued 8-bit drivers and display modes in Photon. The phgrafx binary is for x86 only; we previously shipped it on other platforms, but crttrap, which it relies on, was an x86-only application, so phgrafx was never usable on non-x86 platforms. 55260
The PtOSContainer widget now correctly translates coordinates. 55060
The static libc now includes insque() and remque(), which you can use to add and remove elements of a doubly linked queue. 54815
The phauxrender library (used by some print filters) now renders Bezier curves better. 54688
PgDrawTextAreaCx() now properly processes the number of bytes. (Ticket ID 81546) 53733
Some extra notes how this feature works. 1) In project properties select Build->Tool Chain Ediror and select external make builder. On the C/C++ BUild page verify that both check boxes in make generation group are on. 2) build once desirable configuration(-s). As a result a bunch of .mk files + top level make file for each processed configuration (the last one in configuration folder) should be created. This make file can be processed from command line using make utility: make -f [configuration]/makefile [target]. 3) Every time any configuration is changed, updated or deleted, user should refresh make infrastructure either by re-generating make files or changing existing files manually. 53638
In order to conform to POSIX, pthread_cond_timedwait() and pthread_cond_wait() now return EPERM instead of EINVAL if the current thread doesn't own the mutex. 52798
We've addressed some issues with drivers/frameworks software that assume physical addresses of memory are less that 4 GB (or aren't 64-bit paddr-safe ). We've also added a new -m[~]P option to procnto, as well as a new SPAWN_PADDR64_SAFE flag for spawn*().

The new procnto -m option variant is -mP, which turns on full allocation of high memory for all processes (the default is to limit anonymous allocation below the 4 gigabyte mark - i.e. -m~P). This is mostly useful only for testing.

The new spawn flag is SPAWN_PADDR64_SAFE which allows the selective spawn of an application that is known to be 64-bit safe or that doesn't care about the physical memory location. (Ticket ID 80995)

The system monitor in Photon's shelf now correctly displays memory usage on machines with 4 GB of RAM. 52342
We've updated the phs-to-pcl filter so that it's based on the new HP APDK library, and hence supports more printers. For more information, see the entry for phs-to-pcl in the Utilities Reference. 52331
POSIX doesn't specify what should happen if you call getcwd( NULL, 0). The Neutrino version (like many others) now allocates a buffer for the name of the directory; it's up to your application to free the buffer when you no longer need it. 51435
The configuration file geode.conf has a new option, use_bios=, which you can set to 0 to try modes not supported by the BIOS. Modes not supported by the BIOS may not work. 51369
We've fixed a bug in the construction of Pg_SET_USER_CLIP draw commands that used to corrupt the draw stream. (Ticket ID 79669) 50581
The Photon file manager, pfm, now properly handles character encoding when creating files. 50536
PhAB no longer crashes when you paste PtBitmap widgets. (Ticket ID 79943) 50322
The fdisk utility now attempts to determine the type of loader (if any) on the disk. 50293
There's a new -c option to slogger that you can use to open the log file with O_SYNC to commit the log events to disk. (Ticket ID 78782) 49153
Square caps on the end of thick lines now always match the thickness of the line itself. (Ticket ID 79056) 48674
The rpcgen utility now looks for the C preprocessor in the right place on QNX Neutrino hosts. (Ticket ID 76034) 48650
The rpcgen compiler now correctly handles arrays of booleans. (Ticket ID 79034) 48648
The makefiles for new QNX projects in the IDE now work correctly with new versions of make on Linux. 48365
PgDrawEllipse() no longer experiences a sign inversion when the radius is greater than 1000. (Ticket ID 78772) 48313
The shm_ctl_special() function now supports some ARM-specific flags that give you better control over Page Table Entry contents. 48279
The Extreme2 graphics driver no longer displays the initial TV output as a pink or light blue screen. It's now black. (Ticket ID 78491) 48019
The Print selection button in the print dialog for Photon applications now functions correctly. (Ticket ID 77972) 47747
You will notice performance improvements with the Memory Analysis Tooling application if you use "Memory Errors" options. There are no performance improvements in the area of memory events collection. However, you will notice the following caveats:
  • The option Perform full integrity check on every allocation/deallocation does a linear heap traverse by definition.
  • We recommend that you not use the Perform full integrity check on every allocation/deallocation option for applications with more than 100 MB of heap allocation.
  • The option Perform leak check every (ms) will also require a complete heap traversal.
  • We recommend that you set the Perform leak check every (ms) option to 0 for applications with more than 100 MB of heap allocation. While the application is running, you can open the settings page of the Memory Analysis Tooling editor, and you can request any leaks manually.

In addition, a new option to remove all optimizations has been added that sets the MALLOC_USE_CACHE environment variable to 0. You can also change the malloc cache size (using the save variable). The default is value is 32. This value should be power a of 2, and should be between 1 and 2048.

Fill patterns now function correctly with the phs-to-ps filter. (Ticket ID 78087) 47330
Phindows now detects when the target has disconnected unexpectedly. 47183
The IDE's debugger no longer occasionally stops in the wrong thread when you're debugging multiple threads (e.g. 15-16 threads) in a process. 46983
POSIX requires that mmap() fail with EINVAL if the flags argument doesn't contain either MAP_SHARED or MAP_PRIVATE. This now happens unless you request that the memory manager use backward-compatibility mode. For more information, see the section on POSIX PSE52 conformance in these notes. 46288
The IDE now lets you disassemble any piece of code starting with known address. You have to obtain the address of the function and use the Disassembly view action Go to address to jump to the specific function. 46197
The gf_display_set_mode() function now returns GF_ERR_OK on success (as documented). 46077
You can now use gzip to compress and expand files in a RAM (/dev/shmem) filesystem, but you need to specify the -f option. 46076
The gf_cursor_t structure formerly used an anonymous enum for the cursor type, but this caused errors when you compiled C++ programs. The enumerated type is now called gf_cursor_type_t. (Ticket ID 77430) 46045
The Lanbic/Navicore driver now supports gf_display_set_layer_order(). 45863
In the IDE's Memory Analysis Toolkit, the dladdr option isn't required anymore and is disabled if you're using the new memory analysis library. 45807
The IDE's Application Profiler can now load symbols for a shared library when explicitly set in the Shared Library path field in the Launch Configuration dialog. 45711
If you use the shortcut icon for preferences in the IDE's TFTP view, you no longer get an error message when you save your changes by clicking the Apply and then the OK button. 45704
In the Statistics window of the IDE's Memory Analysis Tool, the number of errors reported is now the actual number of errors that occurred as displayed in the Errors view. 45443
The Extra Libraries dialog that is available in the IDE by right-clicking on Properties, and then selecting QNX C/C++ Project-->Linker-->Extra libraries now includes Up and Down buttons for reordering the libraries, and it provides a scrollbar if the list of extra libraries becomes too long to display. (Ticket ID 75996) 45353
When you import events from a file (a librcheck trace file) into the IDE's Memory Analysis perspective, the import process now functions properly when you use this file for events and traces and leak detection is enabled. 45107
In the IDE, if you change a QNX C/C++ Project indexer setting for a container project, the C/C++ index and a progress icon in bottom right of the Workbench window are now displayed. 45081
PhAB now preserves the grid position of icons in its workspace. (Ticket ID 76763) 44951
A project with shared libraries no longer encounters a problem when you debug shared libraries in the IDE. 44885
On Windows Vista, the IDE's Memory Analysis Tooling perspective now displays the actual Vista host's time, not UTC. 44861
The phs-to-pcl filter can now print on PPCBE targets. 44845
Clipping is now processed correctly when multiple PtOSContainer widgets are children of a common parent widget. 44677
The ph script now uses waitfor to test for existence of devices. 44675
PgConfigScalerChannel() can now set the brightness and contrast. It previously ignored them. 44564
PgGetScalerCapabilities() now indicates Pg_SCALER_CAP_BRIGHTNESS_ADJUST and/or Pg_SCALER_CAP_CONTRAST_ADJUST capabilities if supported by the driver. 44492
When performing memory analysis in the IDE, if you use a time-based collection method for memory leaks, you no longer get results that show duplicate memory leaks. 44473
PhAB for Windows now runs correctly on Windows Vista. 44260
Phindows now draws thick lines in the correct position. (Ticket ID 76189) 44028
The system monitor in Photon's shelf now displays large RAM values correctly. (Ticket ID 76001) 44014
In the IDE's System Profiler, if you open a .kev file and select a timeline with obvious activity, and you then zoom in, the thread timelines and events no longer disappear. 43684
In the IDE's Memory Analysis Tool, if you select a region that has only one allocation, (e.g., a region in the Usage view) and select Show in Trace to obtain a graphical representation, the graph now displays a single bar that corresponds to the only allocation. 43494
Our no longer uses a QNX-specific itoa(), so if an application defines its own itoa(), the application's version no longer causes calls to socket() to fail. 43281
In the Image Combine dialog box in the IDE's System Builder, the fields are automatically populated with information from the IFS properties. If you change the information for the fields in this dialog box, the values are now correctly saved and the IFS properties are updated. 43188
POSIX requires that the error numbers in <errno.h> have unique values. In order to satisfy this requirement we're changing the value of EALREADY. For details, see the section on POSIX PSE52 conformance in these notes. 42983
There's a new Advanced Graphics flag, GF_SURFACE_CREATE_SHAREABLE, that allows server side surfaces to be allocated via gf_surface_create(). 42774
When running io-display, you can now prevent a display from shutting down when all applications exit by setti ng the noautoshutdown option to 1 in the display.conf configuration file. 42650
When you zoom in on some of the System Profiler's panes (e.g. CPU Migration), the data is now correctly displayed, and the right-click menu is once again available. 42616
We've added a gf_display_wait_vsync() function that blocks on a vertical synchronization. 42532
There is now a shared version of the libgf library. 42530
You can now use the SOFT3D_NAME environment variable to specify a software fallback library for 3D rendering. This allows you to use a library other than 42529
In the IDE's Memory Analysis Tooling, if you import librcheck events from trace and event log files that were created on a target machine, the Memory Analysis perspective now correctly shows the events and traces. 42162
If you choose a debugger other than gdb, the IDE no longer gives you an "Invalid debugger type" message. 42127
Self-hosted Neutrino systems no longer include two different versions of qconfig. 42105
In the IDE, the System Profiler's Inter CPU Communication chart now has a heading of "Cross CPU Messages" instead of "Total Migrations." 42037
The kernel no longer crashes if you call TraceEvent() with unaligned data, although the kernel call will fail with EFAULT. 41995
We've added a gf_context_unset_surface() function that lets you remove a surface from a context. 41972
The driver now works properly on ViewSonic VP2030b monitors. 41905
We've added PgSyncFlush() and PgSyncFlushCx() functions that ensure that the draw stream has been flushed and processed, before unblocking the calling client. 41669
Advanced Graphics now supports 32-bit ARGB ordered surface formats (GF_FORMAT_ARGB8888). 41663
The tinit utility now has an -f option that lets you specify the file that lists the commands to start. The default is /etc/config/ttys. 41658
The phrelay utility now uses from /usr/photon/dll. 41547
Phindows now supports extended the draw modes Pg_DrawModeSRCXOR, Pg_DrawModeSRCAND, and Pg_DrawModeSRCOR. 41325
The Photon file manager, pfm can now execute applications from other locations than /usr/photon/bin. (Ticket ID 74650) 41318
The -V (verbose) option now works for phs-to-ps. 41194
Printer filters no longer run ready when they encounter broken .phs files. 41180
Some interrupt controllers have read-and-clear registers indicating the active interrupts. That is, the first read returns a bitset with the pending interrupts and then immediately zeros the register. In order to handle this type of register, we've defined a INTR_GENFLAG_ID_LOOP flag. For more details, see the Customizing Image Startup Programs chapter of Building Embedded Systems. 40731
You can now import an EFS buildfile into a project in the IDE. 40682
The libphrender library's spanlist processing no longer suffers from 16-bit overflow. (Ticket ID 73681) 39888
The module has a max_num_l4s option that lets you specify the number of interfaces. 39728
You can now use the Qnet "file" resolver (resolve=file option) to resolve IP addresses. 39612
Phindows now correctly displays window titles that contain non-ASCII characters, specified by the -s option. 38770
If you use the mount command to mount an NFS server, and you specify the argument -o ver3, and fs-nfs3 isn't running, fs-nfs2 no longer accepts the mount request. 38640
Pt_ARG_MENU_TEXT_FONT widget resource has been added to PtPanelGroup for the popup menu in single-tab mode. (Ticket ID 73009) 38582
Photon now supports a user-defined event type, Ph_EV_USER. (Ticket ID 73092) 38579
The fs-cifs filesystem now returns the errno when the mkdir() function call fails as those returned by the local filesystem. 38573
If you perform a socket operation on a file descriptor of a file on a fs-cifs mountpoint, the operation fails, and the errno returned is now correctly ENOTSOCK. 38572
Both fs-nfs2 and fs-nfs3 now support fchdir(). 38548
The exit status for fs-nfs3 is now correct. 38512
If you use the instrumented kernel to trace events while you're using mq, emitting _NTO_TRACE_COMM_SMSG communication-class events no longer causes your application to crash with an EFAULT when it calls mq_send(). 38082
We now support uuencode and uudecode. They're similar to uue and uud, but work better with pipes. 32725
The shared object now processes Pp_PC_MAX_DEST_SIZE correctly as a ulong_t, which prevents printer drawstreams from being corrupted or truncated. 30040
phs-to-ps no longer runs READY or segfaults when processing aborted printer jobs. 29940
The gf_display_snapshot() function provides screen snapshots on Carmine cards. 29893
FIFO scheduling is now honored correctly with SMP. 29847
We've corrected our recursive makefiles to clear and later reset the NAME environment variable (if it exists), so they no longer use its value to name the resulting binary. 29843
Trying to slay something on a node in a domain other than your own now works. 29840
The kernel no longer crashes when you use ClockPeriod() to set the ticksize to a very small value and you then use the SCHED_APS_SET_PARMS command to SchedCtl() to change the scheduling window size. 29832
The kernel no longer crashes when you use ClockPeriod() to set the ticksize to a very small value and you then invoke the SCHED_APS_PARTITION_STATS command to SchedCtl() at a very high frequency. 29827
If you have multiple writable mappings to the same region of a memory-mapped file (in different processes, for example), then calling msync() with MS_SYNC no longer causes a deadlock. 29574
The PtMultiText widget no longer leaks memory for text attribute font strings. (Ticket ID 72352) 29421
If you use QWinCfg on Windows to switch to QNX Momentics 6.2.1, the value of the QNX_HOST environment variable now correctly contains backslashes ("\"). 29368
The driver now works, even when you have more than 512 MB of system RAM. 29339
In the IDE's System Profiler, if there are multiple events on a pixel in a timeline, and the first event isn't a labeled type of event, the labels for other events on that pixel are now correctly shown. 29119
The PtWebClient widget now has a new Pt_CB_WEB_STATUS type called Pt_WEB_STATUS_CONTENTS. The information passed in the description field for this new status type is the string contents of the PtText or PtMultiText type-in field that just got focus. The contents string is preceded by an ordinal number identifying the control on the web page, and a colon. Currently only FORM-EDIT, FORM-PASS and FORM-TEXTAREA controls are supported. 28874
PxLoadImage() no longer misreads ARGB1555 as RGB565. 28821
The snapshot utility now works with phrelay (phditto, phindows). 28671
The driver now has a probe_phy option that controls automatic probing of the PHY device. 28648
We've removed a potential deadlock from the malloc library that could have occurred when you used vfork() and exec() if the vforked child received a termination signal while holding the malloc library mutex. 28161
In order to conform to POSIX, we've changed the ino_t type from signed to unsigned. For more information, see the section on POSIX PSE52 conformance in these notes. 27903
The phlocale utility now lets you to specify up to three different keyboard layouts, as well as a key combination for switching between them. (Ticket ID 70693) 27351
The PgDrawArc() function, when you use the Pg_ARC_PIE flag, now gives more consistent results when using thick lines. (Ticket ID 70706) 27266
The phlogin2 utility now scrolls user icons when there are more than 8 users registered in the system. (Ticket ID 70499) 26944
Phditto now properly reads the length field from incoming message headers, and so no longer runs READY. 26824
PhAB grouping no longer breaks widget anchoring. (Ticket ID 69002) 26634
Horizontal scrolling now works properly in the IDE's System Profiler. 26628
Blocked resources in PtCompoundClass_t are now properly defined as Pt_ARG_IS_POINTER. (Ticket ID 70199) 26522
PhAB no longer displays the Pt_ARG_ARM_COLOR and Pt_ARG_ARM_FILL resources for PtNumericInteger and PtNumericFloat widgets. (Ticket ID 70195) 26494
The performance of large block writes to /dev/shmem has improved. 26280
The PtMTrend widget now properly renders when data is added via PtMTrendAddData(). (Ticket ID 70044) 26155
You no longer lose your keyboard configuration when you change the machine's hostname. 26052
PfGenerateFontName() now returns a mapped font entry if the requested font name, and/or size isn't available. (Ticket ID 69964) 26043
Backtraces in the IDE's Memory Analysis now work reliably on ARM targets. 26035
Focus is now processed correctly in the PhAB resource editor when a widget was instantiated via Ctrl-W. (Ticket ID 69636) 25790
PtGenList column formatting now works correctly via phrelay. 25733
The Photon helpviewer now sets the permissions on /var/help so that any user can generate search indexes. 25628
Black-box regression tests for watchpoints in gdb no longer fail for ARM targets. 25599
The PhAB resource palette no longer overrides the default count for PtTimer. (Ticket ID 69508) 25494
The PtScrollbar is now updated correctly when you remove an item from a PtList or PtTree. (Ticket ID 69522) 25472
The phabmsg now generates the filename extension during a "Save as ..." operation. (Ticket ID 69427) 25308
If you reset your target board while you're debugging from the Windows-hosted IDE, and you've clicked Terminate and remove in the IDE Debug view, the ntoCPU-gdb.exe process no longer runs ready, consuming 100% of CPU. 25174
Photon has two new functions: PgGetSurfaceGFSid() and PdCreateOffscreenContextGF(). 24996
The Korean input method, kpim, no longer displays "illegal option" if you use the -x or -y command-line option. 24827
PtTreeModifyItemString() no longer truncates the string to the longest displayed string length. (Ticket ID 69249) 24819
The gdb debugger no longer hangs when you run it over phditto. 24817
The PhAB color editor's custom color palette is now saved between edits and between sessions. The information is stored in the user's photon configuration area, in a file called $HOME/.ph/phab/abcpal.cfg. A new Reset button under the custom color palette lets you reset it to its default state.

If there is no color information stored in your configuration area, PhAB looks for an abcpal.cfg file in the system directory where the PhAB executable (ab) is running from. It will also look in this system area when you press the Reset button.

The phrelay utility now supports the display of offscreen contexts. 24530
PtNumericInteger and PtNumericFloat no longer render focus if the Pt_FOCUS_RENDER flag bit is cleared from Pt_ARG_FLAGS. (Ticket ID 68900) 24345
Palette matching has improved. (Ticket ID 68240) 24289
The <res_plugin_api.h> is now included in the distribution under /usr/include/photon/res_plugin_api.h. 24172
The Pt_ARG_NUMERIC_TEXT_FONT resource is deprecated, and so is no longer displayed in the editor in PhAB. (Ticket ID 68691) 24111
When pppd creates a proxy arp entry, it now does it with the permanent flag set, so the entry no longer times out after approx 20 minutes. 24103
Pt_ARG_FILL_COLOR is now shown correctly as grey for PtNumericInteger and PtNumericFloat in PhAB. (Ticket ID 68680) 24093
The PtNumericInteger and PtNumericFloat widgets' up and down keys are now properly mapped when the widget orientation is Pt_HORIZONTAL. (Ticket ID 68647) 24063
PhAB no longer crashes when you attempt to import a project created with PhAB on QNX 4 . 24040
The phfont server now processes fontext rules in the order they're entered. (Ticket ID 68193) 24002
The pwm hooks now draw borders correctly. (Ticket ID 68475) 23992
PtConnection now works over QNET. 23906
24-bit images are now displayed correctly on PPCBE. (Ticket ID 67709) 23825
Compose sequences now work for Phindows and PhAB for Windows. (Ticket ID 68354) 23810
The pppd daemon now uses the /etc/ppp/options.ttyname option file. 23743
PtMultiText now honors the setting of Pt_ARG_MARGIN_WIDTH. (Ticket ID 68038) 23280
Phindows now processes mouse wheel scroll events. 22835
Filled polygons have an improved filling algorithmn. 22383
In PhAB for Windows, if you create an application and then build it, the Make Application window no longer has an extra unreadable character at the end of each line. 22190
Rounded rectangles are now rendered correctly when the fill color is Pg_TRANSPARENT. 22177
The cp utility no longer crashes when you give it a source path that's longer than the maximum allowed. 22002
Certain tools, such as bindres and usemsg, which are needed for building PhAB applications, now work correctly on Windows, even if you don't have write permission in the root of your local drive. (Ticket ID 66893) 21849
We've fixed some heap memory leaks in snapshot, and we've made the program use shared memory more efficiently. (Ticket ID 66820) 21776
The tinit utility now has a -t option that makes tinit not mask the suspend signal (SIGTSTP) in spawned processes. 21751
Chinese and Korean are now listed as supported languages in phlocale. (Ticket ID 66783) 21685
The PtRect widget now handles thick lines stroke outlines properly. (Ticket IDs 66784, 75898) 21684
The phditto program now functions the same way Phindows does in when handling -x and -y region offsets when the -u option is passed. (Ticket ID 66776) 21659
The PxConfig*() framework now properly handles characters greater than 0x7f. 21527
On the SH4 platform, gdb no longer sometimes displays "finish meaningless on outermost frame" when trying to step out of a DLL when stop-on-solib-events is on. 21502
If you have a C/C++ project that returns a value of 10, and you run it in the IDE, the Console window reports the correct return value. (Ticket ID 66347) 21300
The pv utility now displays images correctly on PPCBE. 20732
The gdb debugger no longer displays a "Compiled with unknown debugging format" warning. 20658
The tftp utility no longer terminates with a floating-point exception when printing statistics from a get or put command when you're using verbose mode. 20615
Setting the Pt_ARG_SCROLLBAR_WIDTH resource for a PtList or for a compound widget that includes a PtList now has the correct effect. 20431
During a reclaim copy, the flash filesystem now correctly handles a LAST bit that was set incorrectly. 20149
The IDE's System Builder now supports the +keeplinked attribute. 20124
The tftp utility no longer faults if you press Enter at the "To" prompt without supplying the host parameter. 20064
The IDE's Debug Variables view no longer lists the this pointer twice. 20063
The open dropdown list for a PtComboBox is longer displayed in front of the "blank" screensaver. 19767
The ptermcs utility no longer core-dumps when you save your changes. 19568
If you use PpSetPC() with Pp_PC_FILTER or Pp_PC_DRIVER, the print context now correctly uses the specified print filter. (Ticket ID 64836) 19182
The getcwd() function now follows POSIX, which states that the returned path won't contain components that are symbolic links. You can revert to the old behavior by exporting the DIR_KEEP_SYMLINK environment variable. example (new default POSIX behaviour): # cd /tmp # mkdir adir # ln -s adir alink # cd alink # /bin/pwd /tmp/adir example (old behaviour) # DIR_KEEP_SYMLINK=1 sh # cd /tmp # mkdir adir # ln -s adir alink # cd alink # /bin/pwd /tmp/alink 18912
Multiple concurrent calls to shm_unlink() for the same shared memory object no longer cause kernel corruption and crash the kernel. 18121
Phindows now supports alpha-blended images with a global source value (i.e. a constant alpha multiplier for all pixels). (Ticket ID 63678) 17548
The phs-to-pcl print filter now works correctly on PPCBE. (Ticket ID 63022) 16990
The phditto program now flushes serial connections after an open(). (Ticket ID 62119) 16733
Phrelay message headers now support 32-bit sizes, eliminating draw buffer overflows. 16565
The mountpoint specification is optional for fs-cifs, fs-nfs2, and fs-nfs3. 15446
You can now use the Tab key to complete the names of files and commands in ksh. 13090
The snapshot utility now works in a phditto session. 11487
24-bit memory contexts now work correctly on PPCBE. 10751

Documentation fixes

Change Ref#
We now package BSPs as zip files (as well as putting them in a repository on Foundry27). We've updated the Working with a BSP chapter of Building Embedded Systems to suit. 60886
QNX SDP 6.4.0 includes a new On-line Technical Support guide that will help you set up your myQNX account, register your support plans, and help you send files to QNX Technical Support. 60374
We've deprecated crttrap, and it's no longer used by the current architecture. It's been replaced by dispconf and the OS enumerator. 60303
The entry for random in the Utilities Reference now describes /dev/urandom in addition to /dev/random. This server sends any error messages to slogger, not to stderr. 59021
We've updated the description of the default thread attributes in the entry for pthread_attr_init() in the Neutrino Library Reference. 58991
The section on time zones in the Neutrino User's Guide now reflects the changes to North American time zones that went into effect March 1, 2007. Note that the libraries interpret short specifications of a time zone (e.g. EST5EDT) according to the new rules. 58906
We've corrected the prototype for end_of_draw() in the entry for disp_draw_miscfuncs_t in the Graphics DDK documentation. 58763
We've removed references to Pg_IMAGE_DIRECT_555 from the documentation. It's identical programatically to Pg_IMAGE_DIRECT_1555, but ensure the alpha bit is set accordingly if you're modifying offscreen memory directly. 58719
The wcstol(), wcstoll(), wcstoul(), and wcstoull() functions are declared in <wchar.h>, not <stdlib.h>. 58697
We've removed the lists of entries arranged by category from the Neutrino Library Reference and Utilities Reference. For information about the types of entries, see the index in each book. 58365
We've corrected the example in the entry for PtFileSel in the Widget Reference. 57928
The kernel keeps an array of the running threads (one per processor); the running thread isn't at the front of the Ready queue. We've corrected the System Architecture guide and the Neutrino Programmer's Guide. 57392
The start, requires, and driver clauses in the scripting language for enum-devices now support a /wait option that makes the enumerator pause until the command associated with the clause terminates. 57346
We've corrected the descriptions of the bwidth and ileave values for the -s option for the flash filesystem (devf-*) drivers in the Utilities Reference. These values must be powers of 2, but you don't specify them as powers of 2. For example, if the width of the data bus is 8, specify a bwidth of 8, not 3 (for 23). 57300
We've corrected the information about the alignment of struct stat structures in the data returned by a resource manager. See the "Returning directory entries from _IO_READ" section in the Writing a Resource Manager chapter of the Neutrino Programmer's Guide. 57274
It's safe to call snprintf(), sprintf(), sscanf(), swprintf(), and swscanf() from a signal handler if you aren't printing or scanning floating-point data. 57261
We've added the -o option to the entry for traceprinter in the Utilities Reference. You can use this option to send the output to a file. 57173
Neutrino supports two new filesystem utilities: chattr for changing filesystem attributes, and fsysinfo for displaying filesystem statistics. 57169
We've updated the sections on limits for the CD-ROM and DOS filesystems in the Neutrino User's Guide. 56945
The System Architecture guide and the Neutrino Programmer's Guide now describe the automatic unmasking and masking of interrupts as handlers are attached and detached. 56704
The resmgr_handle_tune() and resmgr_iofuncs() functions are declared in <sys/resmgr.h>; we've corrected the documentation. 56558
We've corrected an example of using message queues with Photon so that it correctly uses mq_notify(). (Ticket ID 82904) 56130
The Utilities Reference now includes an entry for 56090
The example in the documentation for socketpair() now points out that if you write to fd[0], you read from fd[1], and vice versa. 55765
The table of UNIX commands and their Neutrino equivalents in the Neutrino User's Guide now includes the Linux dmesg command and its equivalent, slogger. 55503
It does matter whether or not the name of a typed memory object starts with a slash. We've corrected the documentation for posix_typed_mem_open(). 55385
The documentation for chkfsys no longer says that the utility prevents itself from operating when files are open for writing on the drive. 55247
The handler function that you attach using ado_attach_interrupt() runs in user space, not in the kernel space. 54999
We've corrected the list of where dlopen() looks for shared objects. 54951
We've added more details to the documentation for pidin about the information that the fds argument gives. 54781
The len argument to PgDrawTextArea() specifies the number of bytes required to store the string. 54218
We've added entries for and to the Utilities Reference. 53593
Resource managers use the _IO_FLAG_* bits internally to indicate permissions; we've updated the documentation. 53463
The Message Passing chapter of Getting Started with QNX Neutrino no longer says that priority inheritance happens only one level deep. 53452
We've corrected the description of the SPAWN_CHECK_SCRIPT flag in the inheritance structure in the documentation for spawn(). 53327
The Utilities Reference now includes an entry for 52783
We've corrected the example in the documentation for pthread_cond_timedwait() so that it will work for timeouts of less than one second. 52174
The System Architecture guide, the Neutrino User's Guide, and the Utilities Reference now describe the Power-Safe filesystem, 52024
We've corrected the list of options in the entry for calib in the Utilities Reference. 51964
The accept() function gives an error of EINVAL if you called it on a socket that you hadn't called listen() on. 51915
The mem_offset() function gives an error of EOVERFLOW (not E2BIG) if the address is too large for the 32-bit off_t. 51779
The ntpd daemon adjusts the operating system's time, but doesn't set the hardware clock; you can use rtc to do this. 51161
The timeout value starts timing out when you call TimerTimeout(), not when the blocking state is entered. It might be possible to get preempted after calling TimerTimeout() but before the blocking kernel call. We've mentioned this in the documentation. 50428
We now support a read-only Universal Disk Format filesystem, via 50246
We've updated the entries in the Neutrino Library Reference for _RESMGR_NPARTS() and _RESMGR_PTR() to clarify that these macros return the negative of the number of parts (to distinguish the number of parts from error codes that the resource manager's handler functions might return. A return of -1 from iofunc_notify() thus indicates success. (Ticket ID 79542) 50026
The phshutdown utility has a new -u option for "unattended" shutdown. This initiates system shut down without displaying the shut down type dialog. 48161
Our documentation for pppd now links to the NetBSD documentation, which includes the exit codes for the daemon. (Ticket IDs 78436, 83868) 47882
Qnet doesn't support the combination of bind=ip and resolve=file. (Ticket ID 77285) 47612
We've documented the retries, timeout, and verbose options for,, and 46821
The Help icon for the Introduction step in the "Neutrino Inter Process Communication" cheat sheet now correctly links to the help topic about "Inter Process Communication." 46147
The chapter on Qnet in the System Architecture guide now describes how you can use the tx_retries option to control how long it takes Qnet to decide that a link is down. 46000
The description of disp_mode_info_t in the Graphics DDK documentation now describes the max_virtual_height and max_virtual_width fields. 42401
The entry for devi-hid in the Utilities Reference no longer refers to calib; you need a calibration file only for touchscreens. 42252
We've corrected the description of the abort() function in the Neutrino Library Reference. 41794
We've corrected the description of the %a and %A formatting codes for the -fprintf and -printf arguments to the find command. 41544
The socket() function sets errno to EAFNOSUPPORT if the specified address family isn't supported. 41440
The qconfig utility doesn't list the packages in any particular order. 40881
The documentation now mentions that if you use slay to change the runmask for a process, the processor for blocked threads doesn't change until the threads become unblocked (or never if the threads remain blocked). 40730
The documentation for InterruptAttach() no longer implies that Neutrino supports paging. 40135
We've corrected the descriptions in the Neutrino Library Reference of what iofunc_fdinfo_default(), iofunc_lseek(), and iofunc_lseek_default() return. 39595
The entry for mkifs in the Utilities Reference now includes the -s option, which you can use to specify which sections of an ELF binary not to strip. 39285
Asynchronous I/O (aio_*()) works across Qnet, but asynchronous messaging (asyncmsg_*()) doesn't. 39103
If you ask pidin to display thread names, and a thread doesn't have a name, pidin displays the thread's ID instead. 39027
You don't have to be root in order to set or get a thread name. We've corrected the documentation for pthread_getname_np() and pthread_setname_np(). 39026
The entry for mount in the Utilities Reference now describes the -a option, which you can use to mount all the devices listed in /etc/fstab. 38763
We've updated the section on multimedia in the System Architecture guide to describe what's in the QNX Aviage Multimedia Suite. 38498
The Writing Shell Scripts chapter of the Neutrino User's Guide now has a section on the handling of the #! line of a script. 38464
For portability, use pthread_sigprocmask() instead of sigprocmask() in multithreaded processes. 38215
We've corrected the description of the contig_len argument in the entry for posix_mem_offset() in the Neutrino Library Reference. 38121
The documentation for ham_action_control() now says that when an action item is enabled (the default), it's executed when the condition associated with it is triggered. 29791
The entry for SchedCtl() and SchedCtl_r() in the Neutrino Library Reference now mentions that the SCHED_APS_JOIN_PARTITION command indicates an error of EINVAL if the partition with the given ID doesn't exist. 29298
The depth member of the AOAudioFormat_t structure is in bytes, not bits. 28572
The entry for devc-sersci in the Utilities Reference now lists the FIFO and RTS trigger values for the SH7760, 7770, and 7780. 27945
The documentation for flashctl now describes the filesystem information that it displays if you specify the -i option. 27875
The documentation for phrelay now mentions the /etc/system/config/noditto file. If this files exists, then users aren't allowed to ditto existing Photon sessions. 27146
We've updated the usage message and documentation for tracelogger to reflect the current options. (Ticket ID 73381) 26514
If an Ethernet packet is shorter than ETHERMIN bytes, padding can be added to the packet to reach the required minimum length. In the interests of performance, the driver software doesn't automatically pad the packets, but leaves it to the hardware to do so if supported. If hardware pads the packets, the contents of the padding depend on the hardware implementation. We've mentioned this in the Core Networking User's Guide. (Ticket ID 66506) 25338
The entry for _amblksize in the Neutrino Library Reference now describes how and when you can change the value of this variable. 25273
The entry for tinit in the Utilities Reference now describes how the utility parses its configuration file. 24931
If name_attach() creates a channel, the channel will have the _NTO_CHF_DISCONNECT, _NTO_CHF_COID_DISCONNECT, and _NTO_CHF_UNBLOCK flags set. 24908
There are now entries for ham and hamctrl in the Utilities Reference. 24739
The df utility rounds its figures into 512- or 1024-byte blocks (depending on the options), and it always rounds down. If the filesystem doesn't use a block size that's a multiple of 512 bytes, some rounding errors will occur. We've noted this in the entry for df in the Utilities Reference. 23715
PtWebClient now supports three new Pt_ARG_WEB_OPTION options to control how Javascript displays dialogs: "fDisableJavascriptAlert", "fDisableJavascriptConfirm" and "fDisableJavascriptPrompt". These options are supported in Netfront only. 23297
We've updated some examples in Building Embedded Systems to use fs-nfs3 instead of fs-nfs2. 22936
We've updated the list of supported adapters in the entry for devb-ncr8 in the Utilities Reference. 22482
We've added some information about enabling and disabling hardware checksumming to the entries for devn* in the Utilities Reference. 22051
If a name server isn't responding, there's a timeout of 1.5 minutes per name server. You can't change this timeout, but many TCP/IP utilities have a -n option that you can use to prevent name lookups. (Ref# 21660; Ticket ID 66749) 21660
There's now an entry for phrelaycfg in the Utilities Reference. 20709
We've made some minor corrections to the entry for slogger in the Utilities Reference, including the description of /dev/console, what happens when multiple applications open /dev/slog for reading, and the example of alternating between files. 18978
We've corrected the description of _amblksiz in the documentation for malloc(). 18003
The entry for phuser in the Utilities Reference now explains how to choose an icon to represent a user in the login screen. 17889
The thread that receives a sigevent of type SIGEV_SIGNAL_THREAD depends on the functions associated with the sigevent. The documentation now specifies which thread gets the sigevent. 17720
The bootfile in a mkifs buildfile typically sets the _CS_PATH configuration string, and might set _CS_LIBPATH. The documentation now states that you can set environment variables, such as PATH and LD_LIBRARY_PATH, in a script file. 16063
We recommend that you use dinit to initialize the filesystem, and dloader to make it bootable. The dinit bootloader options are for backwards compatibility reasons, but aren't generally used anymore. 15828
The description of the rsrc_request_t structure in the documentation for rsrcdbmgr_attach() now includes the RSRCDBMGR_FLAG_NAME and RSRCDBMGR_FLAG_LIST flags, and the name member. 14438
We've removed the entries for the board-specific devf-* drivers from the Utilities Reference. All the flash filesystem drivers use the same options as devf-generic. 12749
The PtBarGraph widget is now documented. 10082