Developer Resources
Technical Articles

QNX Technical Articles


QNX Software Development Platform 6.4.0: Release Notes

QNX® Software Development Platform 6.4.0: Release Notes

Date of this edition: January 08, 2014

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:

You can also install the QNX Neutrino RTOS as a virtual machine:

If you find problems with any virtualization environment, please let us know.

  • 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)
  • We no longer include the IDE on self-hosted QNX Neutrino systems.
  • For the latest information about using BSPs with QNX SDP 6.4.0, see the SDP 6.4.0 BSP Information page (http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.4.0_BSP_Info?_message=1218739798710) found in the BSPs and Drivers project of 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.

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

The QNX Software Development Platform bundles the QNX Momentics Tool Suite, the QNX Neutrino RTOS, or both, as shown below:

On Linux and Windows: On QNX Neutrino:
QNX Momentics Tool Suite QNX Momentics Tool Suite
QNX Neutrino RTOS

The QNX Momentics Tool Suite includes the following:

On Linux and Windows: On QNX Neutrino:
Command-line tools
Libraries, documentation, and other development components
Integrated Development Environment
Command-line tools
Libraries, documentation, and other development components

We no longer include the IDE on self-hosted QNX Neutrino systems.

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
lsm-ipfilter-v4.so, lsm-ipfilter-v4.so lsm-pf-v4.so, lsm-pf-v6.so
lsm-sctp.so N/A; not currently supported by io-pkt*
nfm-autoip.so lsm-autoip.so
npm-pppmgr.so Now included in io-pkt*
npm-pppoe.so Now included in io-pkt*
npm-qnet.so, npm-qnet-l4_lite.so lsm-qnet.so
npm-qnet-compat.so N/A
npm-tcpip.so N/A
npm-tcpip-v4.so, npm-tcpip-v6.so Now included in io-pkt*
npm-ttcpip.so 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)

Required device properties for the Power-Safe filesystem

The Power-Safe filesystem was designed for and is intended for traditional rotating hard disk drive media. It operates by moving the on-disk filesystem state from one stable view to another stable view using copy-on-write (COW) to relocate modified blocks. To finalize this transition, all dirty blocks involved in the new view must be committed to persistent storage, and then a new filesystem superblock/root referencing the relocated blocks is committed.

This provides power-safe robustness, because at any point in time either the old version is completely accessible or the new version is completely accessible (with no live data being overwritten in between). Thus to mount as read-write on a given device, that device must have the following properties:

What's new: Graphics

The new binaries include:

Generate display configuration data
Calibrate a Graphics Framework (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 libc.so 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:

  • The link visibility of the runtime support symbols in libgcc has changed to be hidden. This means that each binary (executable or shared object) has its own copy. Linking against a shared library now no longer lets you use the copy that's in the shared library. Earlier binaries relied on finding these symbols in libc.so.2.
  • The other change was in the way the compiler calls the runtime support routines. It has specific knowledge of the registers corrupted by each routine, and it also assumes that the routines won't be called indirectly (i.e. the routines won't live in another executable or shared object). This means that it saves fewer registers than it used to before calling the routine (a performance improvement), but that if an executable compiled with gcc 4 is linked in such a way that it calls a runtime support routine indirectly, then register corruption will occur.

You need to update your buildfiles as follows to use the new version of libc.so:

  • Change this line:
    procmgr_symlink ../../proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

    to this:

    procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
  • If your buildfile explicitly includes libc.so.2 in the list of binaries, change it to include libc.so (or at least libc.so.3).
  • Add libc.so.2 to the list of included binaries before libc.so:
    # Include the current libc.so. It will be created as a real
    # file using its internal SONAME, with libc.so being a
    # symlink to it. The symlink will point to the last libc.so.*,
    # so if an earlier libc is needed (e.g. libc.so.2), add it
    # before libc.so.

(Ref# 58590, 59482)

Dinkum libraries
We've upgraded to Dinkumware version 5.0. For information about the changes to the libraries, see http://www.dinkumware.com/WhatsChanged.aspx. The new libraries include at least the following corrections:
  • If you call pow( x, 2.0f ), the function no longer returns infinity for small values of x.
The _cmdname() function now correctly gives the full path that the current process was invoked from. Not only does this change make _cmdname() behave as documented, but it's necessary to make _cmdfd() work correctly. (Ref# 59299)
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 devg-poulsbo.so -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

Note: This driver supports only PCI versions of the Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers. (Ref# 67333)

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. This driver is shipped only with the BSPs that need it.
Hardware Crypto Engine driver. This driver is shipped only with the BSPs that need it.
Driver for Marvell Yukon-2 based Gigabit Ethernet adapters
devnp-ral.so, devnp-ural.so
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.

Using the VMware image of a QNX Neutrino runtime system

We provide a VMware image of a QNX Neutrino runtime system in target/QNX_Eval_RT.zip on the installation DVD. 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\QNX_Eval_RT.zip file, and then drag the QNX_Eval_RT 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 QNX_Eval_RT folder, and then choose QNX_Eval_RT.vmx.


    • Navigate to where you saved the QNX_Eval_RT folder, and then double-click the VMware configuration file, QNX_Eval_RT.vmx.
  3. When 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.

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, tools, and utilities

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)
elvis, vi
We now ship version 2.2.0 of elvis. (Ref# 57481)
  • We've updated gcc to version 4.2. We no longer ship versions 2.95.3 or 3.3.5. (Ref# 54006)
  • With gcc 4.2, the char data type is now unsigned on PPC targets. (Ref# 43764)
  • If you use the -Os option with gcc to optimize for size, you no longer get some compile errors. (Ref# 19955, 21347)
  • Version 4.2 of gcc (unlike 2.95.3 and 3.3.5) doesn't report any parsing errors for seemingly simple code. (Ref# 20409)
  • Nested functions (i.e. one function declared inside another) now work properly.
  • The __cxa_atexit() function is now supported. C++ shared objects can optionally use __cxa_atexit(), which allows their destructors (normally registered with atexit()) to be called at dlclose() time. As a result, you can now use dlopen() and dlclose() on C++ shared objects. (Ref# 19702)
We've updated gdb to version 6.7. (Ref# 54030)
We've discontinued the Intel 8.1 compiler, icc. (Ref# 56606)
The MSYS version of make works with UNC paths, such as //some_machine/dir. Note that makefiles and the IDE don't support UNC paths. (Ref# 24202)
mkefs, mketfs, mkifs
You now can specify a value of none for the filter attribute. This is useful if you need to override a global filter. (Ref# 59585; Ticket ID 84523)
There's a new -P option that spawns the process, setting the SPAWN_PADDR64_SAFE flag to indicate that the process is known to be 64-bit safe or doesn't care about the physical memory location. (Ref# 52911, 61053)
Compare binaries to the officially distributed versions (QNX Neutrino)
  • The -M option to qcc isn't changing to -Map as we warned in earlier release notes. (Ref# 26743, 55446)
  • In order to use gcc's support for the PPC Altivec extensions, you no longer have to add this option:
    -I $QNX_HOST/usr/lib/gcc-lib/powerpc-unknown-nto-qnx6.3.0/3.3.5/include

    to the qcc command line. (Ref# 26109)

You can now specify a script file as an argument to the micro-embedded shell. (Ref# 17048)

New utilities include:

Manage adaptive partitions
Merge lines of input files, and writes the resulting lines to standard output. (POSIX)
A 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 http://www.python.org. (Ref# 60935, 60940)

Display memory information (Ref# 26719, 60931)
Display memory information (Ref# 26719, 60931)
Decode a file that was encoded with uuencode (Ref# 56679)
Encode a binary file or standard input into ASCII (Ref# 56679)

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

Installing packages without qnxinstall

Although QNX SDP 6.4.0 no longer includes qnxinstall, you can still install QNX package (.qpr) files. The QPR format is really nothing more than a tar file. Within it are separate packages which are themselves tar files (*.qpk) and description files (*.qpm).

The *.qpm files are package manifests, XML files describing where qnxinstall should install the files. You can ignore these files.

If you untar the .qpk files, you'll notice a directory structure usually starting with a vendor name, then a package name, and then a version. Inside the version directory, you'll see a directory structure that's basically the root of the package. Just copy everything from this root to the appropriate destination directory.

If the .qpr contains more than one package, repeat this process for each.

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

  • 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 exec() a program with a relative path, and you're using Qnet, the kernel will leak small amounts of memory, and Qnet will leak some resources. (Ref# 62502)
  • 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.4.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.4. 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)
  • 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)
  • 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)

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 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)
MsgKeyData(), MsgKeyData_r()
These kernel calls don't work properly over Qnet; if the client and server are on different nodes, the verification step fails, even if the data is correct. (Ref# J418418)
POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563)
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)
The ProcessInfo_t structure includes a field called class, so you can't use this header in a C++ program because class is a keyword. (Ref# J175596)
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)
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)
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

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)
  • As the documentation points out, an exit status of zero doesn't indicate that no problems were found with the filesystems. It merely indicates that no irrecoverable errors internal to the chkfsys utility were encountered. (Ref# 32176)
  • If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, 48764, 48765)
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

  • On most platforms, the gcc options -fpic and -fPIC are synonymous, but on PPC they're different and incompatible. We chose -fpic over -fPIC for performance reasons, and our PPC OS is built that way. (Ref# 21947)

    Workaround: If you see problems (such as relocation-truncation errors) at link time when building shared objects, consider splitting your shared object into multiple shared objects.

  • On PPC targets, ntoppc-gdb uses hardware watchpoints when they're available. If hardware watchpoints aren't available, gdb uses software watchpoints. The kernel has support for hardware watchpoints only on BookE. (Ref# 13133, 21293)
  • If you have two breakpoints exactly one instruction apart, the second breakpoint won't stop the debugger. (Ref# 20833)
  • 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 Momentics 6.4.0. The resulting startup will work with 6.2.1, 6.3, and 6.4.0.

The -S 0 option is no longer supported, but it's still listed in the use message and the documentation. (Ref# 62258)
  • The pidin mem command doesn't display the correct amount of memory if it exceeds 231 − 1 bytes. (Ref# 63642)
  • 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 qcp utility works only on x86 platforms. (Ref# 9500)
Because of a processing error when buffers wrap, sometimes garbage appears in the system log file. (Ref# 62025)

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

  • The devb-eide fails to detect EIDE devices on Renesas EDOSK7780 targets. (Ref# 60231)

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

  • This driver doesn't support the AX88178 chip. (Ref# 70621)
  • 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).

  • If you use devn-asix.so with devu-uhci.so in a VMware session, and you remove the USB dongle, io-usb fails with a segmentation fault. (Ref# 61765)
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.

  • This driver doesn't support Fiber PCNET cards with the AM79C971KC chip. (Ref# 12497)
  • We don't recommended that you use devn-pcnet.so on the BCM1250 platform, because it can lose receive interrupts. (Ref# 29714)
devn-pegasus.so, devn-rtl8150.so
Slaying io-net with the devn-pegasus.so and devn-rtl8150.so drivers isn't always successful. (Ref# 28602)

Workaround: Use kill -9 instead to kill io-net.

  • On the SH platform, the lan= option gets overridden. (Ref# 29285)

    Workaround: Fully specify the vendor ID, device ID, bus number, and device number to the driver when starting (e.g. vid=0x0bda,did=0x8150,busnum=1,devnum=2,lan=2).

  • Multicast and promiscuous modes for the rtl8150 driver aren't currently supported. (Ref# 29352)
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 devnp-axe.so 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 devn-asix.so instead.

  • The version of this driver that we ship is compiled for x86 only. If you want to use it on other platforms, download the source code for it from Foundry27. (Ref# 61983)
It isn't currently possible to unmount devnp-bcm43xx.so 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)
  • The documentation and usage message include some errors:
    • The default for the irq_thresh option is actually 9000.
    • The default for the transmit option is actually 4096.
    • This driver doesn't support the promiscuous option; the only way to enable promiscuous mode is by issuing an ioctl() command.

    (Ref# 62229)

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

  • On the HP XW6600 Workstation, you must plug a USB mouse and keyboard into a high-speed hub in order for them to be correctly detected by the io-usb subsystem. (Ref# 61680)
  • 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: Licensing

Known issues: Multimedia

soundfile.so, soundfile_noph.so
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 scan

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

Workaround: Combine the commands:

ifconfig iface_name up scan

Contrary to what the documentation says, io-pkt-* doesn't determine which version of this module to load, so you need to specify it:
Use: With:
lsm-pf-v4.so io-pkt-v4 or io-pkt-v4-hc
lsm-pf-v6.so io-pkt-v6-hc

(Ref# 78737)

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

  • This module has many options to alter how Qnet functions (e.g. timeouts, retries, and idle times). You shouldn't use these options unless you're trying to overcome an issue related to your environment. Qnet is optimized to function with its default settings. (Ref# 21298)
  • Once Qnet has a domain, you can't set Qnet to not use a domain; you can only change the domain. (Ref# 38802)
  • 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)
  • The behavior of pwrite() isn't consistent with that on other Neutrino filesystems. If you open a file with O_APPEND, the offset supplied to pwrite() doesn't override O_APPEND. The data is written to the end of the file, regardless of the file offset supplied. (Ref# 38576)
  • 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 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.

  • There's a memory leak in gns; a message buffer is allocated but is never freed. (Ref# 78242)
  • 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.

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

  • The way in which the SIOCGIFCONF ioctl() command was used in our io-net code was incorrect but it worked. We've changed the implementation, but applications that use the old method will no longer work. For more information, see the Migrating from io-net appendix of the Core Networking User's Guide. (Ref# 58035)
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)
  • If a packet is smaller than the minimum Ethernet packet size, the packet may be padded with random data, rather than zeroes. (Ref# 21460)
  • 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)
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: Graphics

The documentation incorrectly says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
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.

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)
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)
  • This print filter can have a segmentation fault when running with the -Q2 quality setting. (Ref# 55875, 60885)
  • We don't currently ship phs-to-pcl for PPCBE; it will be provided in a forthcoming release. (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)
  • 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 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)
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 aren't using ksh or sh as your login shell, the environment variables that the helpviewer uses aren't initialized. (Ref# 27250)

    Workaround: Set QNX_HELP_HOME_PAGE to /usr/qnx640/target/qnx6/usr/help/product/momentics/bookset.html, and QNX_HELP_PATH to /usr/qnx640/target/qnx6/usr/help/product (assuming you installed QNX Momentics in the default location).

  • The helpviewer might not display all the images in a document. (Ref# 57766)

    Workaround: Click the Options button, click the Others tab, and then increase the size of the image cache. Alternatively, you can view the documentation in a web browser.

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

Uninstalling QNX SDP
When you uninstall QNX SDP, Windows schedules the uninstaller for removal the next time you restart your system. If you don't restart your system, and you reinstall QNX SDP, its uninstaller will be removed the next time you restart your system. (Ref# 62183)
VirtualPC and VMware require a Windows session that's operating with 32-bit graphics. (Ref# 60669)
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.
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

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

  • 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

Known issues: Web browsers

Bon Echo
  • When you download files, the browser says that it saves the files on your desktop, but it actually saves them in your home directory. (Ref# 59830)
  • 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 6.4.0, you'll find an extensive set of HTML documentation:

The “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, www.qnx.com, 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 (www.qnx.com). 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
fs-cd will non longer crash when accessing a CD that has directory data at very high offsets. 7807
The flashcmp utility now properly removes the file extension, as documented. 7636
The current version of devg-poulsbo.so functions properly only in resolutions of 800 X 600, 1024 X 768, and 1280 X 1024. 62118
dev-tvia.so can have display artifacts, or cease to operate correctly, if the data bandwith if pushed to hard. It is not recommended to run higher than 800x600 resolution, or to use multiple layers at high resolution. 61711
Support for USB serial dongles has been added 61665
Phindows and phditto sessions to ppcbe targets now render offscreen contexts such at PtOSContainer correctly. 61541
For 6.4.0, the all installation documentation will be found under qconfig's base directory then under the subdirectory: install/qnxsdp/6.4.0. The old location, $QNX_TARGET/etc/readme directory, has been removed. 61318
Closed a window where the filesystem read code could be running before the entire partition is mounted. 61292
If the proportions of your background image are incompatible with the current display resolution, it is possible to end up your image not covering the entire backdrop. If you wish, you can configure Appearance, and deselect the 'Maintain Proportions' option, so that the image fills the entire backdrop. 61184
The on utility now has a -P option that spawns a process, setting the SPAWN_PADDR64_SAFE flag to indicate that the process is known to be 64-bit safe or doesn't care about the physical memory location. 61053
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.

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. 60878
Floating point OpenGLES is now available for ARM11 platforms. You can now build and run floating point OpenGLES applications. However our sample applications aren't included in this release and will be available in an upcoming patch. 60648
devg-poulsbo.so is now included in distribution. 60612
The qcc utility no longer needs a space between the -A option and its argument. 60511
Compiling C source with GCC now works when the source is hosted on a Linux Ext2 filesystem. 6049
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 SMP version of the kernel now works properly on the Freescale MPC8572DS board. 60178
To prevent the rebuilding of projects in the incorrect order, we've added a Build referenced projects before rebuild? option in a “QNX C/C++ Project settings changed” dialog that appears after you've changed the QNX project properties. This option is checked by default. (Ticket ID 80054) 59992
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
There used to be a very small window in which the monotonic clock might by calculated incorrectly on an SMP system, causing the clock to move backwards instead of forwards. We've corrected this problem. (Ticket ID 84567) 59650
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
Running deflate on an empty file no longer causes a floating-point exception. 59515
The IDE now includes support for parallel building for QNX Projects. 59489
The _cmdname() function now correctly gives the full path that the current process was invoked from. Not only does this change make _cmdname() behave as documented, but it's necessary to make _cmdfd() work correctly. 59299
The License Guide can be found in base_dir/install/qnxsdp/6.4.0, where base_dir is where you installed QNX SDP. 59264
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
QNX SDP 6.4.0 includes a Media Content Detector utility, mcd. 58826
We now support Windows XP SP3 as a development host. 58548
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/com.qnx.tools.ide.tftp_VERSION/os/linux/proxy
chmod a+sx eclipse/plugins/com.qnx.tools.ide.tftp_VERSION/os/linux/proxy

(The actual commands may depend on the distro.)

The phin utility now has -C, -p, and -r options that control which processes or regions to display information about. 58214
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
PxConfigReadString() now terminates the string with a NULL character. (Ticket ID 83833) 57996
The atof() and strtod() functions no longer lose precision on certain values (e.g. 1000.00 to 1024.00). 57895
The IDE's Code Coverage tool now correctly shows covered lines as being covered. (Ticket ID 83755) 57852
Running code coverage on a binary with a shared library no longer causes the tool to crash. (Ticket ID 83759) 57851
We've deprecated psin. 57719
The IDE's Code Coverage tool can now import results when the source files and the makefile are located in different directories. 57708
We've fixed the parsing that the IDE does when you import a buildfile, so that it always recognizes a # character as the beginning of a comment. 57510
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 L2 cache on i.MX31 targets can now be enabled without causing intermittent kernel crashes when using procnto-v6 variants. 56856
The flash (devf-*) filesystems now have an extent cache to speed up random seeking within a file. 56650
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
You no longer have to start setupbsp with "ksh setupbsp" 56178
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
Previously the application of a driver update would succeed and allow an installation but the subsequent rebuild of the customized boot image would fail under certain circumstances (VMware with a SCSI adapter as an example). This has now been resolved. 56042
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
We created a function for properly converting encoded baud speeds (in termio and sgtty) into unencoded baud speeds for termios, as well as a function for properly converting unencoded baud speeds into encoded baud speeds. The functions were then employed in conversion functions between the non-POSIX sgtty and termio structs to the POSIX termios struct. 55791
The pidin mem command now correctly displays information about direct physical mappings. (Ticket ID 82035) 55718
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
Duplicated projects showing up in "From Project..." dialog in Launch configuration Download tab is now fixed. 55453
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 Windows tools no longer have a dependency on Cygwin. You can no longer use Cygwin mountpoints or Cygwin-style path names. The toolchain (gcc, binutils and gdb) accepts only native Windows-style paths. Command-line users can build from either the Windows command shell or use an emulated shell such as ksh or sh. Under the emulated shells, the backslash character is treated as an escape character, so pathnames should use forward slashes, or they should have an additional backslash character. 55190
MsgCurrent() no longer causes a priority inversion. 55141
The PPC 600 startup library now ensures that the BAT settings used to map device memory are as small as possible. This ensures that a speculative prefetch can't hit an area of memory that is mapped but does not exist on the bus. (Ticket ID 82106) 55105
The mkifs command writes a minimum of 4 bytes for the image header mountpoint. If the mountpoint is less than 4 bytes long (e.g. the default value of /), mkifs now writes zeroes for the remaining bytes. 55091
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
If you use the -w option, etfsctl now writes the image to the correct location in flash, whether a raw partition is present or not. 54677
When the IDE is parsing a project tree to collect variants, it no longer interprets paths for header files such as public/ppc as a CPU - class directory. (Ticket ID 81806) 54545
In the IDE's Breakpoints view, the breakpoints are now sorted by default first by file, then by line. (Ticket ID 81602) 53934
If you view STL string variables in the IDE's Variables view, the view no longer becomes inactive. (Ticket ID 81536) 53928
The IDE's Debugger can now display 64-bit variables in hexadecimal. 53871
PgDrawTextAreaCx() now properly processes the number of bytes. (Ticket ID 81546) 53733
The nto.link linker script has been updated to work with gcc 4.2. 53712
We provide utilities to completely remove a QNX installation from your system. This may be required in the event of an interrupted or failed installation. Utilities for Linux and Windows have been provided on the DVD in the Utilities folder. 53536
The chapter Debugging in the IDE in the IDE User's Guide contains information about the added support for GDB catchpoints, such that you can set event breakpoints for these types of events: exception caught and exception thrown. For more information, see “Adding event breakpoints”. 53300
When you're doing postmortem debugging in the IDE using a core file, and the application has a shared library object, the symbols for the shared library are now loaded. 53210
When you duplicate an image in the IDE's System Builder, all properties are now copied properly. 53164
We now support Linux SuSE 10.3 as a development host. 52938
In the IDE's Variable view, if you cast a variable from a base class to a derived class, the cast variable is now displayed correctly; the extra members added by the derived class are now displayed. (Ticket ID 81276) 52907
The IDE's Variable view no longer shows the private/public subgrouping for member variables. (Ticket ID 81267) 52895
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
The IDE now lets you select a variable in the Variables view, and then do a “show memory”, which opens the Memory view for that location. 52686
The IDE's Debugger now supports Event Breakpoints (which correspond to gdb catchpoints). The number of types of event breakpoints actually supported depends on the version of gdb you're using. 52683
The IDE's Debugger now lets you attach gdb commands to a breakpoint. These commands are executed automatically when the breakpoint is hit. 52682
The IDE's Disassembly view has a new feature that lets you jump to an arbitrary address and show the disassembly of that code. 52680
The IDE's C/C++ editor now has a context menu that lets you add watch expressions. 52679
The IDE's Debugger is now better at locating source code. 52658
We've addressed some issues with drivers/frameworks software that assume physical addresses of memory are less than 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
You can now drag lines, words, and text blocks in the IDE's editor. 51890
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 shm_ctl_special() function now lets you set some hardware-specific cache attribute bits in the page table entries. For more information, see the QNX Neutrino Library Reference. 51227
The IDE's System Builder now determines the format of a BSP's IPL. If it's in binary format, the System Builder doesn't needlessly convert it. (Ticket ID 80149) 50938
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
You can now access /dev/shmem on ARM targets over Qnet. (Ticket ID 79776) 49874
The Memory view of IDE's System Information perspective displays better information about anonymous memory mapped by a process. 49751
The Malloc Information view in the IDE's System Information now displays the maximum allocatible memory for a process, instead of the number of outstanding blocks multiplied by the maximum size of the range. 49703
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
We've corrected the unmasking of interrupts in the SH version of the kernel, significantly reducing the latency times. 49127
In the IDE, if you build a debug variant of a project that's in a Container project, and the debug folder is missing, you now get a message in the output for the container project that the debug variant doesn't exist and that the release variant won't be built. 48887
The IDE now includes a Full Trace Event Log view that shows more events and lets you use the scrollbar to view more events. You can open this view via the Window-->Show View dialog. 48847
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
When you create a new QNX project, the IDE now prompts you if the default file will overwrite an existing file in the project directory. The New Project wizard now also lets you disable the generation of a default file. (Ticket ID 78551) 48298
The kernel no longer hangs when you start procnto with the -ml~i option and then use ftruncate() to reduce the size of a shared memory object. (Ticket ID 77976) 48061
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
We've added a QCONN_ALT_MALLOC environment variable that you should use when starting qconn to specify the name of any special version of libc that you're using (e.g. QCONN_ALT_MALLOC=libspecialLib.so.2 qconn). Without this name, the IDE's System Information perspective shows incorrect memory information because it can't find the right malloc() information. (Ticket ID 78507) 47976
In the IDE's System Profiler, you can now synchronize trace events with the time from the Neutrino target's hardware clock. 47816
The UNALIGNED_RET64() macro now works correctly on PPC targets. (Ticket ID 78366) 47759
The Print selection button in the print dialog for Photon applications now functions correctly. (Ticket ID 77972) 47747
The kernel can now support more than 256 MB of RAM on SH systems. For more information, see “What's new: Kernel” earlier in the release notes. 47671
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.

Memory errors are now flushed out from qconn into the IDE even if memory tracing is disabled. 47352
In the IDE's Memory Analysis, there's now a backtrace for memory errors even if memory tracing is disabled. 47351
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
Error and Memory allocation backtracing in the IDE now work properly for non-x86 targets and for C++ code. 47072
The name_open() function once again gives an error of ENOENT instead of ENOSYS if the given name doesn't exist. (Ticket ID 77801) 47032
You can now copy and paste projects using the IDE's Project Explorer view. 47010
The IDE now supports parallel builds for QNX projects. 47003
You can now drag and drop files from the filesystem into the IDE and edit them there. 46998
When you import a container project, the IDE now remembers the project's previous location. 46989
The IDE's Problems view now shows line numbers for assembly errors. To enable assembly error parsing,enable Assembly Error Parser in the project properties. 46980
The IDE now remembers whether local variables were expanded or collapsed in the Variables view. 46979
The macro _DEXTRA_VALID() in <dirent.h> no longer generates a “comparison between signed and unsigned integer expressions” warning. (Ticket ID 77874) 46757
When you copy scripts in the IDE's Target Filesystem Navigator, execute permissions are retained if the host system allows it. (Ticket ID 77855) 46726
You can now use the update site for the IDE over an HTTPS proxy. 46580
On PPC targets, if dlopen() reports a missing symbol after loading a DLL, it now correctly returns and indicates a failure, instead of calling exit(). (Ticket ID 83069) 46504
The system logger, slogger, no longer displays a message on the console when it switches between log files, unless you start it in verbose mode. 46349
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 libmalloc library (and the librcheck replacement library) now use less stack memory for operations. 46266
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 pidin mem command no longer shows more than one entry of memory usage for shared libraries. 46114
We've improved support for unnamed namespaces in the IDE's Debugger. 46107
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
Added checking in FFS(devf) filesystem recovery to support new cleanup mechanism. 45992
The fprintf() and fscanf() functions now use the given stream's _Flock mutex instead of the one belonging to stdout or stdin. (Ticket ID 77106) 45900
We've fixed some issues with profiling large applications with more than 6 shared libraries in the IDE. 45767
We've improved the IDE's C/C++ indexer (used in code navigation). 45765
By default, the IDE now uploads the stripped versions of shared libraries. The Upload tab in the Launch Configuration dialog has an option for changing this behavior. 45764
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
An EBADFSYS error will now fall-through opens on a union filesystem (as ENOENT, ENOSYS, ENXIO, ESRCH, EROFS currently do) and allow pathname resolution to another mountpoint. 45631
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
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
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
The IDE's launch configuration now lets you use binaries that are located outside the workspace. 44808
We've added extern "C" {...} to <sys/cache.h>, so libcache now works with C++ code. 44679
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
The IDE's System Profiler now includes a Thread Call Stack view that shows the call stack of the currently selected timeframe. If address translation is enabled, you will get the actual function name instead of the address. For this feature to work, you need to instrument the binary with Functions Instrumentation. It supports navigation to the source code if address translation is enabled. 44593
If you pass mmap() a suggested result address and size parameters that, when added together, are a value that exceed what can fit into a pointer (i.e. the addition wrapped around), the system now adjusts the suggested result address so that no wraparound occurs before seeing if it can use the value. 44567
PgConfigScalerChannel() can now set the brightness and contrast. It previously ignored them. 44564
The debugging messages from the shared library loader in libc.so when DL_DEBUG is set are now clearer. 44495
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
We no longer ship the x86 Runtime Kit, but we provide a technote that describes how you can create your own CD based on an existing QNX Neutrino 6.4.0 CD. 44103
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
When you create a QNX project in the IDE, a static+shared+debug dependency now results in the correct library name. 43844
The timeouts for waitfor across /net are now more accurate. (Ticket ID 75782) 43696
Timeouts for on -W across /net are now more accurate. (Ticket ID 75782) 43695
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
Dual graphics display configuration is essentially a manual procedure. By default, the graphics subsystems attempts to disable any secondary graphics device. This is done for several reasons: 1) Particular graphics cards, when activated, can lock up the system, and there's no safeguard to protect against such incompatibilities. 2) Particular graphics cards, even when just installed in the same system, will lock up the system when powered on. 3) Special configuration of the secondary device is often required, especially on BIOS equiped boards. Usually this special configuration is accomplished via a graphics configuration file (they reside in /usr/photon/config). Although several examples are provided, many will require altering for the specific chipset being utilized. One thing to ensure is that the memory window specified in the configuration file is correct for the particular card being utilized.

The use of a graphics configuration file is specified in /etc/system/config/display.conf, with the modeopts option to the driver.

Our libsocket.so 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
The IDE's System Builder now lets you add the contents of an entire directory from the host site into the image. 43118
We've added dependency checking for libraries to the IDE. If a library changes, the main application is relinked (QNX projects). 43028
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
In the IDE, if you delete a target, you can now reuse the name. 42778
There's a new Advanced Graphics flag, GF_SURFACE_CREATE_SHAREABLE, that allows server side surfaces to be allocated via gf_surface_create(). 42774
Postmortem debugging in the IDE now works correctly with multiple shared libraries. (Ticket ID 75316) 42678
When running io-display, you can now prevent a display from shutting down when all applications exit by setting the noautoshutdown option to 1 in the display.conf configuration file. 42650
We've added two functions, mq_timedsend_monotonic() and mq_timedreceive_monotonic() (defined in <mqueue.h>), that let you set monotonic kernel timeouts. Note that the timeout parameter is an absolute time relative to the montonic clock. For example:

ClockTime(CLOCK_MONOTONIC, NULL, &timenow);
to.tv_sec = timenow/1000000000LL + my_timeout_secs;
to.tv_nsec = timenow % 1000000000LL;
result = mq_timedsend_monotonic (mq, msg, sizeof (msg), 0, &to);

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 devg-soft3d.so. 42529
The pidin utility now displays dashes instead of zeroes for the code, data, and stack sizes if no memory information for the process is available from procnto. 42519
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
FPU is supported on the AMCC440EP processors with the appropriate startup 41996
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
Prior to 6.4.0 there was no way to track pulse leaks -- that is, a process not receiving pulses. This can cause a growth in kernel memory usage, since pulse structures are allocated in the kernel. With 6.4.0 a pidin channels command will show the length of the send/receive/reply and pulse queues. 41882
An ETFS filesystem is no longer mounted by default; you can use the -m option or mount -tetfs /dev/etfs2. (Ticket ID 74912) 41841
We've added a devn-rtl8169.so driver that supports the Realtek 8110SB (GigE) Network Interface. This driver is currently available only for x86 platforms. 41800
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 wframe_updated.so from /usr/photon/dll. 41547
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
We've fixed fs-dos so that it doesn't continually recalculate the free cluster count for removable devices. 41085
In the IDE, you can now create a project whose name includes a number sign (#). 40957
In the IDE, if you stop a build, a subsequent build is now an incremental one instead of a complete rebuild. (Ticket ID 74311) 40927
You can now import an EFS buildfile into a project in the IDE. 40682
For conformance to POSIX, pthread_create() and pthread_join() can no longer be interrupted by a signal (i.e. they can no longer fail with an error of EINTR). 40666
The libphrender library's spanlist processing no longer suffers from 16-bit overflow. (Ticket ID 73681) 39888
The lsm-qnet.so module has a max_num_l4s option that lets you specify the number of interfaces. 39728
Continuously calling select() with a timeout of 0 no longer causes an internal signal queue to grow in an unbounded manner. 39687
The dumper utility now has a -z option that you can use to compress the core files. 39662
You can now profile shared libraries without needing to specify -Wl,-E to the linker when building the application. 39600
Repeatedly running tracelogger in ring mode no longer makes the system leak memory. 39178
Phindows now correctly displays window titles that contain non-ASCII characters, specified by the -s option. 38770
The tracelogger utility now exits properly in ring mode, even when you specify -n0. 38753
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
The debug path note is no longer automatically added when use messages are added and effect the program name of the executable. 38408
Long executable names no longer cause a buffer overflow. 38199
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
The devc-con[-hid] console driver now supports international keyboard layouts. By default, the original US101-layout is used. If at startup time the file /etc/kbd.tbl is present, it's loaded and used instead. You can reload this file at runtime by pressing Ctrl-Alt-Space. The default US-101- and a DE-102- (German) layouts are provided as ${QNX_TARGET}/etc/kbd.tbl.*. 37638
We now provide an optimized version of memcpy() for all platforms. 37231
The libPtWeb.so 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 invoke the SCHED_APS_PARTITION_STATS command to SchedCtl() at a very high frequency. 29827
You can now configure the memory allocator using various options and tuning parameters. These options are described in the Heap Analysis chapter of the QNX Neutrino Programmer's Guide. 29730
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 pidin command no longer crashes when you specify -F "%M" and a process has no memory objects. 29522
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 devg-radeon.so driver now works, even when you have more than 512 MB of system RAM. 29339
When you're using tr, you can now specify ranges of characters with or without square brackets. 28971
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 devn-speedo.so driver now has a probe_phy option that controls automatic probing of the PHY device. 28648
The tracelogger utility now reports additional attributes, and you can add attributes to the log. For more information, see the Utilities Reference. 28612
devc-con[-hid] now supports international keyboard layouts. By default, the original US101-layout is used. If at startup time the file /etc/kbd.tbl is present, it is loaded and used instead. You can re-load this file at runtime by pressing Ctrl+Alt+Space (If using VMWare, you may need to press this twice). The default US-101- and a DE-102- (German) layouts are provided as ${QNX_TARGET}/etc/kbd.tbl.* 28465
Umounting removable or not present filesystems no longer causes a devno leak. 28376
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
The kernel will no longer report a crash in "vmm_fault" if you happen to pass in an address in that is a particular address range to a kernel call. The range is unique to each architecture, but is always outside of the normal user space addresses. 28048
When using high warning levels on the compiler, you no longer get duplicate prototype warnings when including <stdio.h>. 27983
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
Prior to 6.4.0 the -m option to dumper would create a core file that didn't contain any non-stack memory. This prevented gdb from determining which shared libraries were loaded at the time of the core.

Now, dumper -m dumps just enough of the non-stack memory to allow gdb to determine the loaded shared objects.

The phlocale utility now lets you 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
There's a new showmem utility that displays memory information. For more information, see the Utilities Reference. 26719
PhAB grouping no longer breaks widget anchoring. (Ticket ID 69002) 26634
Horizontal scrolling now works properly in the IDE's System Profiler. 26628
We've added more information to the “Out of interrupt events” message. If you suspect that you have an issue with too many interrupts, add the -vv option to procnto in your buildfile in order to get the additional details. 26545
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
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 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
The mkifs utility now adds a dummy startup header that indicates the compression type to compressed, non-bootable image filesystems. 24471
PtNumericInteger and PtNumericFloat no longer render focus if the Pt_FOCUS_RENDER flag bit is cleared from Pt_ARG_FLAGS. (Ticket ID 68900) 24345
The Pt_ARG_NUMERIC_TEXT_FONT resource is deprecated, and so is no longer displayed in the editor in PhAB. (Ticket ID 68691) 24111
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
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
If you pipe the output of pidin to another command, it no longer displays couldn't fill_info messages. 22989
Phindows now processes mouse wheel scroll events. 22835
Filled polygons have an improved filling algorithmn. 22383
Rounded rectangles are now rendered correctly when the fill color is Pg_TRANSPARENT. 22177
The rint() function no longer crashes with a SIGFPE on ARMLE targets. (Ticket ID 67292) 22165
Added ISO9660 Interchange Level 3 support to fs-cd. 22087
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
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
Spawning a process remotely no longer causes the remote procnto to leak file descriptors. 21182
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
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
We now ship comm, a POSIX utility that selects or rejects the lines that are common to two files. 19760
Signals are no longer left pending on SMP systems. 19321
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 nto*-* binutils are now built for specific targets; there are no more ntomulti- variants. 19174
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 IDE now supports extensions of cpp and cxx for C++ source files. 17409
The micro-embedded shell, uesh now accepts a script file as an argument. 17048
Photon has improved window moving performance on SMP machines. 17017
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 no longer link a program that doesn't have a main() function. 15055
Our implementation of dlopen() now supports RTLD_NEXT. 13416
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
We've changed the message send/signal pending/sync waiting queues to a new data structure so that we can quickly find the proper insertion point for new items, maintaining a priority-ordered list. This improves performance when (for example) many pulses are queued. 10963
24-bit memory contexts now work correctly on PPCBE. 10751

Documentation fixes

Change Ref#
The n argument to the mbsrtowcs() and mbstowcs() functions is the number of wide characters, not the number of bytes. 62130
We've added posix_spawn() to the description of process primitives in the Process Manager chapter of the System Architecture guide. 61972
We've removed pthread_once(), pthread_testcancel(), pthread_setcancelstate(), and pthread_setcanceltype() from the list of POSIX pthread*() functions that don't involve any microkernel thread calls. See the QNX Neutrino Microkernel chapter of the System Architecture guide for the corrected list. 61870
In the Profiling an Application chapter in the IDE User's Guide, various procedural steps and their corresponding figures were updated to reflect the new and updated features in the Application Profiler tool. For information about these enhancements, see the What's New chapter. 61269
The Common Wizards Reference chapter in the IDE User's Guide contains information about the new option Use parallel builds on the Behavior tab that lets you determine whether the IDE can perform builds in parallel, and if so, how many can occur. 61092
A returned value of NULL from readdir() is ambiguous; if you need to determine if it indicates an error (as opposed to the end of the directory stream), set errno to EOK before each call to this function. 60916
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
The rtsold daemon now has an -a option that lets you autoprobe the outgoing interface. 60742
The rwhod daemon now has -i and -u options for setting the broadcast interval and the user to run as. 60701
The data files that ruptime, rwho, and rwhod use are now in /var/rwho instead of /usr/spool/rwho, to conform to the Filesystem Hierarchy Standard. 60700
In the chapter Developing C/C++ Programs in the IDE User's Guide, instructions were added to “Creating the equivalent of a make project” that describes how to create a Makefile that can be launched outside the IDE. 60679
The Migrating from Earlier Releases chapter in the IDE User's Guide was updated to include the steps required to upgrade the IDE for this release. 60506
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
If you're using Instant Device Activation on an ARM platform, your minidriver handler function must be written as Position Independent Code (PIC). This means that when your handler is in the MDRIVER_KERNEL, MDRIVER_PROCESS, or MDRIVER_INTR_ATTACH state, you must not use global or static variables. 60274
The What's New chapter in the IDE User's Guide was updated to include the new features and improvements made to the IDE for this release. 59949
The msync() function sets errno to EINTR if the call is interrupted by a signal. (Ticket ID 84291) 59870
All references to MIPS were removed from the IDE User's Guide. 59845
If the number of elements on the specified message queue is equal to its mq_maxmsg, and O_NONBLOCK wasn't set (in the oflag argument to mq_open()), the call to mq_send() blocks. We've corrected the documentation. (Ticket ID 84498) 59814
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
We've corrected the synopsis for img_load_resize_file() in the Advanced Graphics Developer's Guide. 58926
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
If you destroy a mutex by calling pthread_mutex_destroy(), don't reuse it without reinitializing it first by calling pthread_mutex_init(). 58491
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
The jtag_reserve_memory() function in the startup library clears the memory only if the resmem_flag argument is zero. We've corrected the description in Building Embedded Systems. 58131
We've updated the platform-specific limits for SH and ARMv6 in the Understanding System Limits chapter of the Neutrino User's Guide. 58102
We've corrected the example in the entry for PtFileSel in the Widget Reference. 57928
In the Building OS and Flash Images chapter in the IDE User's Guide, a workaround was added in “Creating a project for an OS image” to describe how to create an EFS project, because the QNX System Builder EFS Project is no longer available in the Import wizard. 57853
The chapter Managing Source Code in the IDE User's Guide contains information about the included support for Subversion (the SVN Team Provider and Subversive SVN connectors). For information about using SVN, see “SVN and the IDE.” 57519
We've removed references to the deprecated flashcmp utility from the documentation, and we updated the “Building a flash filesystem image” section of the Making an OS Image chapter of Building Embedded Systems. 57499
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
The chapter Using Code Coverage in the IDE User's Guide contains various updates for the new features and improvements made to the IDE for this release. For a list of these enhancements, see the What's New chapter. 57345
Throughout the IDE User's Guide, many updates were made to include changes based on the integration with the Eclipse 3.3 Platform, and the integration with CDT 4.0. For a list of changes, see the http://www.eclipse.org website. 57342
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
We've corrected the note about valid dates in the System Architecture guide. Valid dates on a QNX Neutrino system range from January 1970 to at least 2038. The time_t data type is an unsigned 32-bit number, which extends this range for many applications through 2106. The kernel itself uses unsigned 64-bit numbers to count the nanoseconds since January 1970, and so can handle dates through 2554. 56749
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
It is safe to call ClockCycles() from an interrupt handler. 56293
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 devn-micrel8841.so. 56090
If you specify the -V option, the devf-* drivers display the filesystem and MTD version information, and then exit. 55958
In the Debugging in the IDE chapter in the IDE User's Guide, documentation was added for the Debugger tab to describe the new option Use full path to set breakpoints that lets you set breakpoints for files with the same name in the project, but their paths are different, and you want to ensure that the breakpoints are set for the appropriate file. (Ticket ID 82239) 55779
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
We've updated the default linker specification in the documentation for mkifs. (Ticket ID 82413) 55150
The bind() function sets errno to ENOTSOCK if the given file descriptor isn't for a socket. 55103
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 devh-egalax.so and devh-touchintl.so 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 chapter Debugging in the IDE in the IDE User's Guide contains updated information about the new features in this release. For a list of these changes, see the What's New chapter. 53306
The Debugging in the IDE chapter in the IDE User's Guide contains information about how to use the Abatron BDI2000 JTAG Debugger, the Lauterbach Trace32 In-Circuit, and the Macraigor Usb2Demon Debugger with a QNX Neutrino kernel image. For more information, see “Using JTAG debugging.” 53277
The chapter Profiling an Application in the IDE User's Guide contains detailed information about the many new feature updates made to the Application Profiler tool. For a list of these features, see the What's New chapter. 53262
The chapter Finding Memory Errors in the IDE User's Guide contains information about how to export trace data session information in either CSV or XML format, and how to import memory analysis sessions from a trace file or XML format. 53241
The Debugging in the IDE chapter in the IDE User's Guide contains information about how to use various JTAG debuggers to write a QNX Neutrino image directly into RAM. 53222
The Utilities Reference now includes an entry for devn-rtl8169.so. 52783
We've updated the phs-to-pcl filter to be based on HP's Appliance Printing Development Kit (APDK), a library that generates PCL output for a wide range of HP printers. 52595
ConnectAttach() can give an error of ENXIO; we've updated the documentation. 52523
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, fs-qnx6.so. 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 fs-udf.so. 50246
We've corrected the description of CLOCK_SOFTTIME in the entry for timer_create() in the Neutrino Library Reference. 50115
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 I2C framework currently implements only a single-threaded resource manager; we've corrected the I2C (Inter-Integrated Circuit) Framework technote. 49900
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
In the chapter Finding Memory Errors in the IDE User's Guide, a note was added to “Analyzing a running program” to describe that if a program uses fork, the control thread of the Memory Analysis tool must be disabled because attaching the Memory Analysis tool creates a second thread, and fork only works with single-threaded programs. In addition, steps were added to show how to disable the control thread option for memory analysis. 47858
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 cam-cdrom.so, cam-disk.so, and cam-optical.so. 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
We're now using the NetBSD 3.0 version of tftpd, so we've updated its entry in the Utilities Reference. 45378
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
We've corrected the information about returning struct stat structures from 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. 41335
The Interprocess Communication chapter of the System Architecture guide now includes a section on typed memory. 41310
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
The entry for malloc() in the Neutrino Library Reference now describes the environment variables that you can use to control memory allocation. You can also set these variables with mallopt(). 39608
We've corrected the descriptions in the Neutrino Library Reference of what iofunc_fdinfo_default(), iofunc_lseek(), and iofunc_lseek_default() return. 39595
The Writing an Interrupt Handler chapter of the Neutrino Programmer's Guide now has a section on the potential problems of using shared interrupts. 39363
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
We've now documented the asynchronous I/O (aio_*) functions. 39104
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 corrected the description of the MS_CACHE_ONLY flag (a QNX Neutrino extension) in the entry for msync() in the Neutrino Library Reference. 38584
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 expanded the entries for posix_typed_mem_get_info() and posix_typed_mem_open() in the Neutrino Library Reference. 38122
We've corrected the description of the contig_len argument in the entry for posix_mem_offset() in the Neutrino Library Reference. 38121
We've updated the sample programs in the Audio Developer's Guide. 29922
We've corrected the example in the documentation for mq_timedreceive(). 29795
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
If io-pkt runs out of threads, it sends a message to slogger, and anything that requires a thread blocks until one becomes available. 26568
We've updated the usage message and documentation for tracelogger to reflect the current options. (Ticket ID 73381) 26514
In PhAB, you can now hold down Shift and drag a widget by its resize handle. 26437
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 corrected the list of flags that you can specify when you call the experimental asyncmsg_channel_create() function. 23137
We've updated some examples in Building Embedded Systems to use fs-nfs3 instead of fs-nfs2. 22936
Specifying the -as option to procnto on SH platforms is the same as specifying -ad, not -ae. 22858
The documentation for pidin now describes the syspage argument. 22599
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
A note was added to “Controlling your profiling sessions” in the Profiling an Application chapter in the IDE User's Guide to define the meaning of the term Unknown, and to describe the circumstances when binaries and libraries would appear in the Tree view. 21177
We've added the pauseignore and pausesuppress options to the entry for devn-i82544.so in the Utilities Reference, and updated the default values for the receive and transmit options. 20893
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 documentation for the resource database manager (rsrcdbmgr_*) functions now describes the use of names for resources. 16828
The Dynamic Linking chapter of the System Architecture guide now gives the correct order of locations where the runtime linker searches for shared libraries. 16407
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 entry for pppd in the Utilities Reference now refers you to the NetBSD documentation for most of the information. Our documentation describes the Neutrino-specific options. 15616
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
We've added more details about thread priorities and how to change them. See “Scheduling algorithms” in the Programming Overview chapter of the Neutrino Programmer's Guide, as well as the System Architecture guide and the entries for the associated functions in the Neutrino Library Reference. 12218
The PtBarGraph widget is now documented. 10082