Home
Developer Resources
Technical Articles

QNX Technical Articles

QNX® Software Development Platform 6.4.1: Release Notes

Date of this edition: December 05, 2017


Note: Changes to these notes since May 26, 2009 are highlighted below with this icon: New:

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

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

  • Microsoft Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4
  • Linux Red Hat Enterprise Workstation 4.0 or 5.0, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora 10, Ubuntu 8.04 LTS or 8.10, or SUSE 11

You can also install the QNX Neutrino RTOS as a virtual machine on VMware Workstation 6.5, VMware Player 2.5 and Microsoft VirtualPC 2007. We provide a VMware image of a runtime installation of QNX Neutrino; for more information, see Using the VMware image of a QNX Neutrino runtime system,” below. If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website.


Note:
  • You can't install QNX SDP 6.4.1 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 information about using BSPs with QNX SDP 6.4.1, see the BSP Migration Guide in the BSPs and Drivers project on Foundry27.
  • For the most up-to-date version of these notes, go to our website, www.qnx.com, log into your myQNX account, and then go to the Download area.


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

Contents

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

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


Caution: Make sure that Plug and Play OS is disabled in the BIOS before you run QNX Neutrino self-hosted.

What's 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.1?

The key improvements in 6.4.1 include:

  • Core Operating System:
    • support for ARM Cortex A8 (ARMv7 architecture)
    • support for Freescale e500 Core Signal Processing Extensions (SPE) — for more information, see QNX support for using Freescale e500 SPE in the QNX Neutrino technotes.

      Note:
      • Don't mix PPCBE and PPCBE-SPE binaries.
      • If you can't recompile all of the code with PPCBE-SPE, then don't use SPE.
      • If your target doesn't explicitly have an e500V2 core, then you can't use SPE binaries.

    • defragmentation of physical memory
    • We once again support MIPSBE and MIPSLE targets. (Ref# 64313)

      Note: MIPS binaries from QNX Momentics 6.3 aren't compatible with 6.4.1 because of changes to the runtime environment (ABI)

    • We no longer support the PowerPC 900 series of processors, so we've deprecated procnto-900 and procnto-900-smp. (Ref# 68225, 68230)
  • Networking:
    • BIND9 support
    • SSH support
  • Filesystems:
    • Read-only support for NTFS and Apple HFS+
  • Graphics:
    • Composition Window Manager (io-winmgr)
    • support for Intel x86 chipsets

For more details, see the following sections:

Migrating from earlier releases

  • Binaries created with QNX Momentics 6.3 should be compatible with 6.4.1, but note the following:
    • The same C++ ABI change between gcc 2.95.3 and 3.3.5 exists between 2.95.3 and 4.2.4. Older C++ binaries linked against libcpp.so.3 and libstc++.so.5 will still work because we are shipping those legacy C++ libraries in 6.4.1. You can't link old C++ libraries into new C++ programs.
  • The QNX Momentics Tool Suite on Windows and Linux includes version 4.5 of the IDE. For information about migrating to the latest IDE, see the Migrating from Earlier Releases appendix of the IDE User's Guide.
  • You can now get Board Support Packages from our website. For information about building BSPs from earlier releases, see the http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/PRE640BSP_migrationDoc on our Foundry27 community website.
  • All 6.3.x driver binaries should be compatible with 6.4.1, except audio (deva-*), block I/O (devb-*), and graphics (devg-*) drivers. The audio and block I/O drivers should compile on 6.4.1 with minor code changes. The 6.4.1 graphics drivers run on top of io-display instead of on Photon.
  • You need to recompile ATAPI drivers that are BSP-specific for 6.4 (the driver, io-blk, and the filesystems need to be in sync).
  • Serial drivers are statically linked, so there's no issue running binaries from 6.4.1 on 6.3.x. If you want to compile a 6.4.1 serial driver on 6.3.x, you'll need the 6.4.1 versions of libio-char.a, <io-char.h>, and dcmd_chr.h.
  • 6.3.x USB drivers should be compatible with 6.4.1.

What's new: Kernel

  • Just as in a disk filesystem, physical memory can become fragmented over time, reducing performance and — in some cases — preventing applications that require contiguous memory from running. To remedy this, the memory manager can now defragment physical memory. This feature is enabled by default; to disable it, specify the -m~d option to procnto. For more information, see “Defragmenting physical memory” in the Process Manager chapter of the System Architecture guide. (Ref# 16405, 64365)
  • We've reduced the jitter in the interrupt-to-thread latency, especially on x86 platforms.
  • We've corrected two separate bugs in the implementation of shared global memory mappings on ARM targets. These global mappings are placed at virtual addresses that are visible to all processes, so access protection is implemented by updating the MMU domain field in the L1 page table descriptors for a mapping to allow access only to the process with the specified domain.

    The two bugs were:

    • When variable page size support was enabled, the conversion between 4 KB/64 KB pages to a 1 MB page mapping didn't set the domain field correctly.
    • When a new global mapping was created at a virtual address that had previously contained a global mapping, the domain field wasn't being set correctly.

    Both these problems resulted in intermittent crashes (SIGSEGV) in applications that mapped global memory because the incorrect domain field in the L1 page table descriptor would prevent access by the application. (Ref# 60487)

  • If you exec() a program with a relative path, and you're using Qnet, the kernel no longer leaks small amounts of memory, and Qnet no longer leaks some resources. (Ref# 62502)

What's new: Installing, booting, and licensing

  • The diskboot utility now has a -u option that you can use to override the default options passed to io-usb. (Ref# 52436, 64623; Ticket ID 80346)
  • If you add a license in text mode (e.g. on the console or via a telnet session) using finstall -l, you can now properly activate. (Ref# 62147)

New utilities include:

applypatch
Install and uninstall QNX patches. (Ref# 67885)

Note: Invoke this command as applypatch, not applypatch.py as indicated in the Utilities Reference. (Ref# 68568)

showlicense
Display the type of QNX license that's currently active. (Ref# 62227)

What's new: Core networking

What's new: Filesystems

chkfsys
There's a new -x option that makes chkfsys exit with detailed error codes. If you don't specify this option, an exit status of zero (as before) 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. For more information, see the Utilities Reference. (Ref# 32176, 61888)
fs-mac.so
This shared object provides read-only support for the Apple Macintosh HFS (Hierarchical File System) and HFS Plus. (Ref# 64406)
fs-nt.so
This shared object provides read-only support for the Windows NT filesystem. (Ref# 64405)
fs-udf.so
In addition to supporting UDF (OSTA-UDF/ECMA-167) filesystems, fs-udf.so now supports ISO-9660 (base 1998 spec, 1999 spec, Joliet extensions, Rock Ridge extensions). As a result, it has the following new options:
case=asis|lower|upper
Control the case used to display ISO-9660 filenames.
format=list
Set both the list of disk formats to support, as well as the order in which they should be probed.

Note: The default is format=udf:rrip:joliet:iso9660e:iso9660:audio. For backward compatibility, set the format to format=udf to disable the CD/ISO formats.

info=path
The first character of the path can be + or -, and this controls whether empty entries (metadata descriptors not given a value) are shown in the directory or not, respectively.
perms=[file_permissions][:directory_permissions]
The permissions to use for ISO9660 files, directories, or both.

(Ref# 65320)

This filesystem also has a new vcd=num option that you can use to set the number of raw VCD 2352-byte deblocking buffers. (Ref# 15071, 67230)

For more information, see the Utilities Reference.

fs-cd.so
We've deprecated this shared object in favor of fs-udf.so, but we'll continue to ship it. (Ref# 64992)

What's new: Graphics

pwm
We've reworked the Photon window frames, in order to reduce the CPU load and improve the speed of redrawing. If you prefer the older look, do the following before starting Photon:
export PH_WFRAME_STYLE=wframe_updated.so
  

(Ref# 66257)

Composition Manager
A hardware-independent layer of abstraction that encompasses all aspects of window management, such as window creation, realization, and destruction, as well as content updates inside the Human Machine Interface (HMI). The composition manager is compliant with OpenKode and OpenGL ES. For more information, see the Composition Manager Developer's Guide.
Pt_ARG_HIGHLIGHT_ROUNDNESS
If you create a widget, and you set Pt_ARG_HIGHLIGHT_ROUNDNESS to a nonzero value, the widget's gradient fill is now bypassed. (Ref# 24980)
phs-to-pcl
This print filter no longer has a segmentation fault when running with the -Q2 quality setting. (Ref# 55875, 60885)
phgrafx
We've removed the -h and -w options because phgrafx no longer uses them. (Ref# 62431)

What's new: Libraries and header files

calloc(), malloc(), realloc()
The MALLOC_OPTIONS environment variable now controls how these functions behave if you specify a size of 0 (or a value of 0 for the n argument to calloc()). The V (“System V”) and R (“use the realloc() behavior of QNX Neutrino 6.4.0 and earlier”) columns below indicate how the functions behave if the value of MALLOC_OPTIONS includes that letter:
Function Default V R
calloc(n, 0) Non-NULL NULL No effect
malloc(0) Non-NULL NULL No effect
realloc(NULL, 0) Non-NULL NULL No effect
realloc(non-NULL, 0) Non-NULL NULL NULL

In all the above cases, if the function returns a non-NULL pointer, it's valid only for a corresponding call to free() or realloc().


Note: The default behavior of realloc(non-NULL, 0) has changed in this release. Calls like this used to return NULL.

(Ref# 64337, 64338)

chdir(), chroot()
We've fixed a bug in chdir() that made chroot() not work properly. (Ref# 21089)
endfsent(), getfsent(), getfsfile(), getfsspec(), setfsent()
These functions work with the /etc/fstab file; you can use them to get information about the filesystem that this file describes. (Ref# 65331, 65399)

Note: These functions are in libc.a, but not in libc.so (in order to save space).

getpwent_r()
This is a reentrant version of getpwent(). Both these functions get the next entry from the password database. (Ref# 65137, 65324)
mmap()
You can now create more than one writeable mapping to a file. (Ref# 29565, 65582)
resmgr_handle_grow(), resmgr_iofuncs(), resmgr_ocb()
We now provide public versions (with names that don't start with an underscore) of these functions, which you should use instead of _resmgr_handle_grow(), _resmgr_iofuncs(), and _resmgr_ocb(). Note that resmgr_iofuncs() and resmgr_ocb() both take only one argument, a pointer to a resmgr_context_t structure. (Ref# 12297)
_resmgr_io_func()
This function is for our internal use only; use resmgr_iofuncs() instead. (Ref# 12297)
posix_spawnattr_setcred(), posix_spawnattr_getcred()
These new functions let you set or get the credentials, including the user and group IDs, to be used for spawned processes. (Ref# 61079)

What's new: Drivers

What's new: Block-oriented drivers (devb-*)

New drivers:

devb-ahci
Driver for AHCI SATA interfaces (QNX Neutrino)

We've also addressed the following:

devb-eide
This driver no longer auto-detects RAID controllers, so as to avoid corrupting RAID configurations. Use the jumper on your card to disable RAID mode. (Ref# 60231)

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

The new drivers include:

devg-poulsbo.so
Graphics driver for Intel Poulsbo chipsets

We've also addressed the following:

  • Switching from devg-matroxg.so to devg-svga.so via modeswitching no longer causes io-graphics and/or io-display to fault. (Ref# 61152)

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

The new drivers include:

devnp-e1000.so
Driver for Intel Gigabit Ethernet controllers (Ref# 66074, 67003)

The devnp-e1000.so and devnp-i82544.so drivers are similar:

  • devnp-i82544.so has performance optimizations (TSO and interrupt thresholding options) that may make it a better performing candidate for some hardware
  • devnp-e1000.so likely supports more hardware (it will support TSO in a future release)

The enumerators currently start devnp-e1000.so for Intel Gigabit Ethernet controllers, but you might want to switch to devnp-i82544.so, depending on your hardware.

devnp-rtl8169.so
Driver for Realtek 8169 Gigabit Ethernet controllers; replaces devn-rtl8169.so. (Ref# 67108, 67238)

We've also addressed the following:

devnp-i82544.so
We've corrected the default values for the irq_threshold and transmit options in the usage message and documentation. This driver doesn't support the promiscuous option. (Ref# 62229)
devnp-bcm43xx.so
It's now possible to unmount devnp-bcm43xx.so drivers using the ifconfig ... destroy command. (Ref# 61710)

What's new: Documentation

  • The Processes chapter of the QNX Neutrino Programmer's Guide now has a section on using the /proc/pid/as files to examine and control processes and threads. (Ref# 17722)
  • The documentation now explains that if you send with the “nc” variant of MsgSend*(), then when the server replies, you're placed at the front of the ready queue, rather than at the end. Note that your timeslice isn't replenished; for example, if you had already used half of your timeslice before sending, then you will still only have half a timeslice left before being eligible for preemption. This change lets MsgSendnc() to behave in a similar fashion to a non-blocking kernel call, without penalizing the caller by forfeiting its timeslice. (Ref# 62293)
  • We've moved the chapter on writing a resource manager out of the QNX Neutrino Programmer's Guide and expanded it into its own book. (Ref# 42688)
  • The QNX Neutrino Programmer's Guide now has a chapter on the kernel's concept of time, and the effects on delays and timers. (Ref# 25817, 41038)
  • The I2C (Inter-Integrated Circuit) Framework technote no longer refers to a multithreaded resource manager. (Ref# 49900)
  • The SPI (Serial Peripheral Interface) Framework technote now includes correct information about what the spi_read(), spi_write(), spi_xchange(), spi_cmdread(), and spi_dma_xchange() functions return. If successful, these functions return the number of bytes read, written, or exchanged. (Ref# 59977; Ticket ID 84471)
  • The System Architecture guide and the QNX Neutrino Library Reference now say that you should allocate mutexes, condvars, barriers, reader/writer locks, and semaphores, as well as objects you plan to use atomic operations on, only in normal memory mappings. On certain processors (e.g. some PPC ones), atomic operations and calls such as pthread_mutex_lock() will cause a fault if the object is allocated in uncached memory. (Ref# 61585)
  • While most of our books have had individual indexes for quite a while, the IDE's Help system now combines them all into one very large index. (Ref# 58509)
  • The IDE's help system now correctly displays all of the 6.4.1 documentation. (Ref# 63072)

What's new: I/O devices

  • The io-usb subsystem now correctly detects USB mice and keyboards on HP XW6600 workstations. (Ref# 61680)

What's new: Security

This release addresses the following security concerns:

  • We've fixed a problem that allowed non-kernel processes to access arbitrary memory. (Ref# 67251)
  • MsgSend*v*() and MsgReceive*v*() now indicate an error of EOVERFLOW instead of overflowing a buffer if the sum of the user's IOV lengths exceeds INT_MAX. (Ref# 62575)
  • We've corrected a problem associated with using mmap() to create a mapping beyond the current end of the file. (This is legal according to POSIX, but you'll get a SIGBUS if you actually try to touch the page). When the kernel frees the internal structures for the memory-mapped file, it now correctly removes the physical memory that was allocated for the potential file data. (Ref# 64718; Security Focus 33352)
  • We've corrected the safer_name_suffix() function in GNU tar so as to prevent a buffer overflow. (Ref# 63070; CVE-2007-4476)
  • We've fixed the handling of too large ICMPv6 messages so as to prevent a denial of service. (Ref# 62468; NetBSD-SA2008-015 CVE-2008-3530)
  • We've corrected a problem with the handling of long messages in ftpd that could have aided attackers in executing CSRF attacks when, for example, using a web browser to access ftp servers. (Ref# 62463; NetBSD-SA2008-014 CVE-2008-4247)
  • We've addressed a bug in range checking in pppoe that could have allowed a malicious packet to access memory outside of the allocated buffer and cause a crash. (Ref# 62455; NetBSD-SA2008-015 CVE-2008-3584)
  • We've incorporated an update for OpenSSH that fixes a weakness and a vulnerability that could have been exploited by malicious local users to bypass certain security restrictions and to disclose sensitive information. (Ref# 57565; Security Update OpenSSH (from Secunia.com) SA29939 SA29522 SA29602)
  • We've verified that our version of telnet isn't vulnerable to an identified issue with the handling of login and ENVIRON. (Ref# 46283; VU#467577)
  • Long executable names can no longer cause a buffer overflow in procnto. (Ref# 38199)
  • We've verified that our login never calls system(); doing so gives an attacker a chance to get a root shell. (Ref# 38023)

What's new: Web browsers

  • Web Browser Engine — a high-performance embeddable web browser that's based on the WebKit open source engine. We ship a native Advanced Graphics version of the browser with basic functionality; your Photon or Flash application can add windowing and a control interface (e.g. address bar and navigation). For more information, see the Web Browser Engine Developer's Guide.
  • When you download files, the browser no longer says that it saves the files on your desktop. It actually saves them in your home directory. (Ref# 59830)

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; it's also available in the Download area of our website.

To install this image, do the following:

  1. Extract the VMware target from the DVD. For example, on Windows, open a Windows Explorer window, double-click on the target\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.

      Or:

    • 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 changes to the QNX Momentics Tool Suite include the following:

  • Command-line tools:
    • GCC and GDB updates
    • support for ARMv7
    • support for E500 SPE
  • We now ship full debugging information and map files for all binaries.
  • Integrated Development Environment:
    • Eclipse 3.4.x and CDT 5.0
    • Mudflap Visualization
    • Xray-type functionality in the System Profiler

For more details, see the following sections:

What's new: Compiler, tools, and utilities

The QNX Momentics Tool Suite 6.4.1 includes the following versions of the compiler and tools:

  • GCC 4.3 tool chain
  • GDB 6.8
  • Binutils 2.19
  • Mudflap

Other changes include:

gcc
  • The sizes of symbols in MIPS binaries are now correct. (Ref# 25938)
  • On MIPS, exceptions in shared libraries now work as expected instead of generating a SIGILL or other signal. (Ref# 23355)
gdb
  • 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 now correctly stops the debugger. (Ref# 20833)
ldrel
The -S option for ldrel adds a note that specifies the maximum (not minimum) stack size. If you don't specify -L, the stack is specified as non-lazy. (Ref# 62258, 66928)
mkifs
New: If you're creating a buildfile for a MIPS target, you need to create this symbolic link for the runtime linker:
procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.3
  

instead of this:

procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
  

That is, you should name the link ldqnx.so.3 instead of ldqnx.so.2.

pidin
  • The pidin syspage command now displays the CPU-dependent, mdriver, and pminfo sections of the system page. (Ref# 62406, 67058)
  • New: The pidin mem command now displays the correct amount of memory, even if it exceeds 231 − 1 bytes. (Ref# 63642)
slogger
We've corrected a processing error that occurred when buffers wrapped, so garbage no longer appears in the system log file. (Ref# 62025, 60653)

What's new: Debugging information for shipped binaries

Starting with QNX SDP 6.4.1, we're generating binaries with debugging information (-g) and map files. With few exceptions, all binaries are available with debugging information, but this data as well as the .ident information are stripped and stored in a separate binaryName.sym file. These files are linked together, so gdb understands where to find the symbol data.

There's now no need for a separate debug version of all the binaries. There's a separate tar file containing all the .sym files that will untarred alongside each binary. This file is available in the Download area of our website, as well as in the debugging_info directory on the QNX SDP 6.4.1 DVD.

What it means to you:

  • The target binaries are now stripped.
  • The target binaries don't have any SRCVERSION information in them (i.e. use -s won't work).
  • All Neutrino binaries are built with -g (i.e. full debug).
  • We now produce linker map files for all Neutrino binaries.
  • The full debug symbols for a binary called some_binary (along with the SRCVERSION information) are stored in a file called some_binary-buildid.sym.
  • The binary and its associated symbol file are “linked” so gdb knows how to find the symbols.

These *-buildid.sym files are in CPU-specific tar files. The usage of these tar files is straightforward. Suppose you want to debug the ls command for x86. You could just add the entire set of debug files to your target (you need to be root, of course):

  1. Get the target-x86-debug-date.tgz file.
  2. cd $QNX_TARGET
  3. tar -zxf path/target-x86-debug-date.tgz

Then ntox86-gdb $QNX_TARGET/bin/ls would load the debugging symbols from the .sym file automatically. Since this is the full debugging information, you can point gdb at the location of source for ls.

You don't have to extract the entire tar file. In fact all that matters is that the .sym file be in the same directory as the binary. So you could simply copy $QNX_TARGET/x86/bin/ls and the x86/bin/ls-*.sym file (from the debug tar file) to your current directory, and then run gdb there.

In order to get a list of the source files used to build a binary (e.g. to determine the associated licensing), use the .sym file instead of the binary. So continuing with the example above, to get a list of the source files used in building ls, type:

use -s $QNX_TARGET/x86/bin/ls-*.sym

What's new: Integrated Development Environment

  • The QNX Momentics Tool Suite 6.4.1 includes version 4.6 of the IDE; its new features include:
    • Eclipse 3.4
    • CDT 5.0
    • GCC Mudflap visualization
    • improvements to the System Profiler
    • the ability to import projects (including BSPs) and browse source packages from our Foundry27 community website
    • more information about CPU usage in the System Information perspective
  • We no longer ship the Neutrino-hosted version of the IDE. (Ref# 60706)
  • The QNX Source Package and BSP wizard replaces separate wizards for importing QNX source packages and BSPs. (Ref# 67407, 67409)

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

  • New: In the System Builder, if you have an application project that has a dependency on a shared library project, and you clean the application project, then open the Project Settings dialog and change an option (e.g., enable Code Coverage), then after you click OK and click Yes to rebuild, the build process no longer fails. (Ref# 45556)
  • New: During a running session in the Memory Analysis perspective, if a running process exits because of a signal, it now terminates quickly. (Ref# 46431)
  • New: The QNX System Builder now works correctly when the console option “Always clear before each build” is disabled in the global properties dialog. (Ref# 45597, 57986)
  • The Code Coverage tooling now works properly for applications (e.g servers) that don't exit. (Ref# 60457)
  • In the Target File System Navigator for a target booted from .boot, you can now drag the file .boot from a project and drop it into the / directory in the Target File System view. (Ref# 46882; Ticket ID 77863)
  • The C/C++ search now works properly for macros. (Ref# 23596)
  • The IDE's System Information perspective's Malloc Info view is now updated correctly when Memory Analysis Tooling is active on the same process. (Ref# 28712)
  • The APS CPU Usage view now correctly starts and ends the graph line for CPU usage; the initial value can't be zero. (Ref# 42656, 45780)
  • In the System Builder, if you add a host directory by specifying a root of target/x86 and a location of / in the image, you can now save the build file, and the root is correctly added. (Ref# 62063)

For more information, see the What's New in the IDE appendix of the IDE User's Guide.

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. However, 6.4.0 can coexist with 6.4.1. 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.1-->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:

  • If you run it without any options, qconfig lists the versions that are installed on your machine.
  • If you specify the -e option, you can set up the environment for building software for a specific version of the OS. For example, if you're using the Korn shell (ksh), you can configure your machine like this:
    eval `qconfig -n "QNX Software Development Platform 6.4.1" -e`

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

  • New: We plan to deprecate libmalloc and libmalloc_g in a future release, in favor of librcheck.
  • We no longer support the PowerPC 900 series of processors, so we've deprecated procnto-900 and procnto-900-smp. (Ref# 68225, 68230)
  • We no longer ship the Neutrino-hosted version of the IDE. (Ref# 60706, 61193)
  • We plan to deprecate rtelnet in a future release. (Ref# 61851, 61852)
  • We no longer ship the following binaries:
    • sin — use pidin instead. (Ref# 66906, 66908)
    • devn-rtl8169.so — use devnp-rtl8169.so instead. (Ref# 67108, 67238)

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.1 are:

  • asynchronous messaging

The memory manager's backward-compatibility mode

New:

The memory manager supports a backward-compatibility mode that you can control with the b and ~b settings for procnto's -m option. The current behavior is as follows:

b
Enable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, the memory manager treats the mapping as MAP_PRIVATE.
~b
Disable backward-compatibility mode. If you call mmap() and don't specify MAP_PRIVATE or MAP_SHARED, mmap() returns MAP_FAILED and sets errno to EINVAL. This is the behavior specified by POSIX.

The default is b (enabled).

Known issues

QNX SDP 6.4.1 contains known issues in these areas:


Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

  • In order to install QNX SDP on Linux or Windows, the QNX license file must be writable by everyone. If the installer stops and warns you that this file isn't writable, you can make it so as follows:
    • On Windows, right-click on C:\Program Files\QNX Software Systems\license and choose Properties. Make sure that the “Read-only” attribute isn't checked, click Apply, and then click OK.
    • On Linux, type the following:
      chmod a+rw /etc/qnx/license/licenses
          

    (Ref# 62419)

  • On some Linux distributions, the QNX SDP 6.4.1 installer incorrectly displays accented “e” characters as a square box in the French text of the “Language” section of the license agreements. (Ref# 61721)

    Workaround: To display the text correctly, open a web browser and view the license agreement .txt files located in base_dir/install/qnxsdp/6.4.1, where base_dir is where you installed SDP.

  • If you install SDP 6.4.1 on a Windows or Linux system that already has QNX Momentics 6.3.2, the installer tells you that it's modifying 6.3.2 to support coexistence with 6.4.1. Here are the details:
    Windows
    The 6.4.1 installer checks to see if the cleanup utility, QNXWinCleanup.exe, is present under the 6.3.2 host directory (typically C:\QNX632\host) and moves it to C:\Program Files.

    If you uninstall 6.4.1, the uninstaller checks to see if 6.3.2 is present. If so, it moves the cleanup utility back to its original location.

    Linux
    The 6.4.1 installer replaces uninstaller.bin in 632_base_dir with a script that launches the 6.3.2 uninstaller with a special option:
    ./uninstaller.bin -W beanDeleteConfigDir.active="False"
      

    If you uninstall 6.4.1, the uninstaller checks to see if 6.3.2 is present. If so, it restores uninstaller.bin.

    (Ref# 58784, 60037)

  • If you've installed both QNX Momentics 6.3.2 and the QNX Software Development Platform 6.4.1 on Linux or Windows, and you then uninstall 6.3.2, the value of the QNX_CONFIGURATION environment variable will be incorrect, and you won't be able to use 6.4.1. (Ref# 58784)

    Workaround: Remove the extra qconfig string from the value of QNX_CONFIGURATION.

  • If you've installed both QNX Momentics 6.3.2 and the QNX Software Development Platform 6.4.1 on Linux or Windows, and you then uninstall 6.3.2, the value of the path environment variable might not include the $QNX_HOST/usr/bin element. (Ref# 68683)

    Workaround: See what the value of $QNX_HOST is, and then add value/usr/bin to your path environment variable.

  • If you install 6.4.1, and you then install 6.3.2, you need to do the following:
    • On Windows, after installing 6.3.2 over 6.4.1, make sure to move the cleanup utility QNXWinCleanup.exe from $QNX_HOST to C:\WINDOWS.
    • On Linux, when you run the 6.3.2 uninstaller, use the following command-line arguments to leave the 6.4.1 installation unaffected:

      qnx632_base_dir/_uninstall/qnx632/uninstaller.bin -W beanDeleteConfigDir.active="False"

    (Ref# 56879)

  • VMware ESX (or a VMware workstation using SCSI disks) doesn't present an EIDE interface to the guest OS. It offers only a default of an LSI Logic SCSI 320 device (which we don't support) and a second selectable option of a BusLogic 946C device as a PCI device.

    It does let you boot off an IDE CDROM, but won't let you install to an IDE disk; even if the real physical storage is an IDE device, VMware presents it virtually as one of the two aforementioned devices. (Ref# 51509)

    Workaround: In order to install Neutrino on a VMware VM using the BusLogic SCSI controller emulation, you must first apply a driver update. We've included this update on the installation media:

    1. Boot from the installation CD.
    2. On seeing the initial “Press space for options” message, press the space bar.
    3. Choose to apply the driver update.
    4. Follow the instructions on the screen using /fs/cd0 (i.e. the installation media) as the source.

    For more information on installing driver updates, see “Updating disk drivers” in the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide.

  • If you install QNX Software Development Platform 6.4.1 on Windows using a third-party windows explorer (e.g. Total Commander), the installer doesn't display the Activation window once the installation is complete. (Ref# 59359)

    Workaround: Open the QNX SDP Activation dialog by selecting Programs-->QNX Software Development Platform 6.4.1-->License Management-->Activate License from the Start menu, or by entering the following at the command prompt:

      drive:\Program Files\QNX Software Systems\bin\qnxactivate -a
      
  • The installer launches a web browser at the end of installation to display a landing page on the QNX website. On some versions of Linux, the installer can't launch the browser, but sometimes only if you already have QNX Momentics 6.3.2 installed. (Ref# 61494)

    Workaround: Launch a web browser and go to http://www.qnx.com/641foryou.

Known issues: Kernel

procnto
  • New: Some single-threaded resource managers—such as io-pkt, fs-qnx6.so (which becomes single-threaded when it's sychronizing), and QDB—may become WAITPAGE-deadlocked if the system uses lazy page faulting.

    For example, the problem could occur when io-pkt replies to a client and becomes WAITPAGE-blocked because the client's memory isn't faulted in. The procnto thread that's dispatched to handle it then gets blocked waiting on the address space lock of the client process, which is currently owned by a procnto thread that was already trying to satisfy a page fault request that involved talking to NFS, which can't finish because io-pkt is blocked waiting for the lock to be released. (Ref# 62483)

    Workaround: Disable lazy page faulting by specifying the -mL option to procnto.

  • If you create a shared memory object, mmap() it with MAP_SHARED, create a synchronization object (e.g. a mutex) in it, and then mmap() with MAP_PRIVATE to the same offset in the shared object, then the application and some some programs such as pidin and shutdown may hang. (Ref# 63369)
  • We've observed some memory corruption for uncacheable memory with the Renesas BigSur (SH7751) board. It might be a problem with the hardware. (Ref# 27741)
  • Some calls to mmap() with MAP_ANON or MAP_LAZY may be slower with QNX SDP 6.4.1 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)

procnto-smp
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

asyncmsg_*()
Asynchronous messaging doesn't work correctly on multiprocessor systems. (Ref# 57260)
brk(), sbrk()
New: These functions don't do anything useful under QNX Neutrino; don't use them. (Ref# J166490, J191638, J743268)
fork()
New: Unnamed semaphores aren't inherited across a fork() (Ref# 59947)
fpemu.so.2
This library causes some problems on x86 targets if it's compiled with gcc 4 with optimization above -O0. To avoid these problems, we've compiled the DLL with -O0 optimization for x86. (Ref# 55883)
MsgKeyData(), MsgKeyData_r()
New: These kernel calls don't work properly over Qnet; if the client and server are on different nodes, the verification step fails, even if the data is correct. (Ref# J418418)
posix_fallocate()
New: POSIX says that this function should return 0 or an error code, but it currently returns 0 or -1, setting errno if an error occurs. (Ref# J1279909)
posix_mem_offset()
New: POSIX requires that this function return an error code on failure, but the implementation returns -1 and sets errno. (Ref# 174563)
posix_spawn()
New: In the current implementation, posix_spawn() can indicate an error of EMSGSIZE. This is most likely the result of attempting to operate on too many file descriptors in the posix_spawn_file_actions_t object passed to posix_spawn() or posix_spawnp() and/or an overly large environment variable list (either through inheritance by passing NULL for the envp parameter to posix_spawn() or posix_spawnp() or by explicitly providing an overly large envp parameter). (Ref# 75606)

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

posix_spawn_file_actions_addopen()
New: This function isn't fully implemented. It currently doesn't do anything, but the return code indicates success. (Ref# J701207)
shm_ctl(), shm_ctl_special()
New: If an error occurs, these functions set errno to ENOSYS (not EINVAL as documented). They should provide better diagnostics. (Ref# 26440)
<sys/shutdown.h>
New: 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)
ThreadCreate()
New: 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)
libxml.a
This library is a Neutrino interface to version 1.1 of the Expat XML Parser, but it isn't documented. For information about this library, see <xmlparse.h> and <xmltok.h> in $QNX_TARGET/usr/include. (Ref# 56140)

Known issues: Filesystems

io-fs-media
On ARM platforms, you can't use an io-fs-media share to store a directory structure with more than 16 MB of data. (Ref# 56601)
chkfsys
If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, 48764, 48765)
fs-ext2.so
If you try to delete a linked file or directory in a Linux Ext2 filesystem, you get a “Corrupted file system detected” error. (Ref# 50264)

Known issues: Startup

  • New: If you load an uncompressed OS image that's larger than 3 MB on an x86 target, some binaries (e.g. ftp) may crash. (Ref# 45838)

    Workaround: Specify this attribute in the mkifs buildfile:

    [image=0x700000]
      
  • If you have a PC-compatible system with a BIOS, and the system has 4 GB or more of memory, you should specify the -x option to startup-bios. This option enables extended addressing, which lets you access physical addresses above 4 GB. We'll turn this option on by default in a future release. (Ref# 61758)
  • A situation exists on PowerPC-based boards with less than 256 MB of RAM whereby a machine check can be received. This is due to a speculative load (for a branch not taken) from a memory address beyond the extent of physical RAM but within the first 256 MB window. This condition has been detected only on a Freescale MGT5200 Lite with 64 MB of memory and only during the execution of a specific sequence of regression and benchmark tests on the 6.4 kernel. The possibility of occurrence has existed in all previous Neutrino releases; however, to best of our knowledge, no such failures have been reported. (Ref# 28335)

    Workaround: A requirement of startup code for PowerPC-based boards is to configure the DBAT0 register. The register is currently configured for a minimum size of 256 MB. Initializing DBAT0U[BL] to the exact (power of 2) size of physical memory will eliminate this situation from producing a machine check exception. Alternatively, if possible on the particular board, disabling the assertion of TEA will also prevent the errant (speculative load for a branch not taken) machine check when this specific situation occurs. This option should be considered in the context of the entire system. Please contact QNX for specific questions about these and other workarounds.

Known issues: Adaptive partitioning

  • New: Overloads aren't reported to users. The Adaptive Partition scheduler detects overload and acts to limit some partitions to guarantee the percentage shares of others, but it doesn't inform anything outside of the kernel that an overload was detected. The problem is that an overload might occur (or might not occur) on every scheduling operation, which can occur at the rate of 50000 per second on a 200mhz machine (an older, slower machine).
  • Adaptive partitioning isn't supported on the 486 x86 processors, due to the missing timebase counter on those processors. (Ref# 28080)
  • SCHED_RR threads might not round robin in partitions whose portion of the averaging window is smaller then one timeslice. For example, when the timeslice is 4 ms (the default) and the adaptive partitioning scheduler's window size is 100 ms (the default), then SCHED_RR threads in a 4% partition may not round-robin correctly. (Ref# 28035)
  • If you use adaptive partitioning and bound multiprocessing (BMP), some combinations of budgets might not be met. (Ref# 29408)
  • Threads in a zero-budget partition should run only when all other nonzero-budget partitions are idle. However, on SMP machines, zero-budget partitions may incorrectly run when some other partitions are demanding time. However, at all times, all partitions' minimum budgets are still guaranteed, and zero-budget partitions will not run if all nonzero-budget partitions are ready to run. (Ref# 29434)
  • On ARM targets, the 10 window and 100 window averages, as reported by the aps show -v command, are sometimes garbled. However, these have no effect on scheduling. (Ref# 27552)

Known issues: Booting

  • The combination of F1 and F4 for diskboot (Safe Mode, Don't mount filesystems) doesn't work. (Ref# 21876)

    Workaround: Press F5 to start the debug shell; it simply starts fesh just after mounting the filesystems. If you want to run a consistency check a filesystem, run /sbin/chkfsys after the shell starts.

  • If you install QNX Neutrino on a system that uses the Intel Express Q35 chipset, the OS won't boot. The ITE EIDE interface on this board isn't supported. (Ref# 61188)

    Workaround: Run the driver in PIO mode.

  • If you install QNX SDP 6.4.1 directly on a USB drive, it might not boot automatically. (Ref# 61707)

    Workaround: Replace the partition boot loader. From a working system, run:

    dloader /dev/part pc2

    where part is the device name of the partition you need to boot.

  • Fujitsu Coral cards don't support text mode, so on x86 systems, you need two video cards: one to use in text mode, and one for the Coral card.
  • QNX Neutrino might not boot on machines with an ICH6 chipset with the hard drive on SATA, and a CD drive on EIDE. The OS detects the SATA device and then hangs on EIDE detection. (Ref# 40446)

    Workaround: We've added an -R command-line option to diskboot and a new “Hit space...” option, F3. Using these prevents diskboot from restarting a devb- driver. The drivers are restarted if only a CD-ROM is found. In the case of this issue, the restart means devb-ahci and devb-eide compete for the same bus, which results in a hang.

  • Some Sony VAIO laptops don't assign an interrupt to a USB device; when you're booting Neutrino, you'll see some “InterruptAttachEvent failed” messages. (Ref# 41237)

    Workaround: Contact Technical Support to get a customized utility that enables the interrupts.

  • On some Intel 3.2GHz D945G systems, the USB bus is reset by the host after rebooting, while the host is addressing the device. (Ref# 51935)

    Workaround: Disable legacy USB support in the BIOS.

  • The Dell Latitude D830 fails to boot QNX Neutrino 6.4.1 from USB mass-storage devices. (Ref# 61688)
  • The bootable version of QNX Neutrino on the CD doesn't include the documentation, in order to reduce the space requirements.

Known issues: BSPs and DDKs

  • Don't use a BSP with the QNX SDP 6.4.1 unless the BSP's release notes state that you should. Please contact us for more information.
  • The code for some previously released BSPs accesses a field in the internal data structure for mutex attributes instead of using a function call as it should. This will cause errors when you compile the code with this version of QNX Neutrino. (Ref# 52361)

    Workaround: Look for this line in the source code:

    mattr.flags = PTHREAD_RECURSIVE_ENABLE;
      

    and change it to this:

    pthread_mutexattr_setrecursive( &mattr, PTHREAD_RECURSIVE_ENABLE);
      
  • On Neutrino hosts, running the default uninstall script uninstalls both the binary and source BSP packages. (Ref# 18894)
  • SH4 binaries linked with QNX Neutrino 6.2.1 or earlier generate an “illegal instruction” error on exiting when you run them on SH4A targets. Renesas changed the nop opcode between SH4 and SH4A, and some of our process-initialization files (inserted at link time) used the old form. This was fixed in QNX Neutrino 6.3.0. (Ref# 24701)

    Workaround: Relink any SH4 binaries that you linked with QNX Neutrino 6.2.1 or earlier.

Known issues: Compiler, tools, and utilities

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

ksh, pipe
There's a problem with interactions between pipe and ksh on SH targets. If you use multiple pipes in a command line under ksh, all output can be lost. For example:
# uname -a
QNX renesas_sh7785 6.4.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep renesas
QNX renesas_sh7785 6.4.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep shle
QNX renesas_sh7785 6.4.0 2008/09/26-04:27:12EDT SDK_7785 shle
# uname -a | grep renesas | grep shle
#
  

(Ref# 62242)

ld
  • Between the 2.10.1 version of the GNU linker in QNX Momentics 6.2.1 and the 2.12.1 version in QNX Momentics 6.3.0, a bug was fixed in the handling of relocation addends for SH targets. As a result of this fix, SH startup binaries (e.g. startup-systemh) that were created prior to QNX Momentics 6.3.0 won't work correctly if included in a boot image generated in QNX Momentics 6.3 or later.

    Workaround: Rebuild the startup binary using QNX Momentics 6.4.1. The resulting startup will work with 6.2.1, 6.3, and 6.4.1.

pidin
New: 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)
qcp
The qcp utility works only on x86 platforms. (Ref# 9500)

Known issues: Device drivers

  • You might see a message such as “Range check failed (MEM) - Dev 1b - Vend 168c - Class 20000 - Addr 0 - Size 10000” in the system log, but you can ignore it.

    The PCI server code allocates one byte low of PCI memory and one byte high of PCI memory and keeps these values as the range of low and high PCI memory. It does the same for I/O space. The server then scans all devices in PCI space and checks the I/O and memory ranges for each device against the stored range values to see whether they're valid or not. If a range check fails, the device is placed in the disabled state and is initialized when an application calls pci_attach_device(). The PCI server code is standard across all platforms and only the low-level, hardware specific portion changes, so there is a generic portion to all the drivers. (Ref# 50790)

  • We haven't fully tested the following drivers:
    • deva-ctrl-ess1938.so
    • deva-ctrl-geode.so
    • deva-ctrl-nmg6.so
    • deva-ctrl-sb.so
    • deva-ctrl-via8233.so
    • devc-serzscc
    • devg-flat.so
    • devg-geode.so
    • devg-sis630.so
    • devh-touchintl.so
    • devi-dyna
    • devi-semtech
    • devn-el509.so
    • devn-pegasus.so
    • devn-rtl8150.so
    • devn-smc9000.so
    • devp-pccard

    (Ref# 61821)

Audio device drivers (deva-*)

  • Audio drivers included in BSPs that were released before QNX SDP 6.4.1 are incompatible with 6.4.1. If you try to start them, you'll get some errors about unresolved symbols. If you have the source code, and you try to recompile it using gcc 4.2, you'll get some compile errors. (Ref# 59692)

    Workaround: Relink the driver binaries on Neutrino 6.4.1. For updated source code, see Foundry 27 on our website, or contact Technical Support.

  • The graphics drivers run at a higher priority than applications, but they shouldn't run at a higher priority than the audio, or else breaks in the audio occur. (Ref# 4026)

    Workaround: Use the on command to adjust the priorities of the audio and graphics drivers.

Block-oriented drivers (devb-*)

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)
devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
devb-aha8
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
devb-eide
  • DMA modes don't work on these drives:
    • Hitachi-LG Data Storage DVD WRITABLE/CD-RW DRIVE, ROM VER.E111, May 2006
    • Toshiba Samsung Storage Technology TS-H352C/DELH, DE02, May 2006

    (Ref# 41600)

Character drivers (devc-*)

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

  • New: With the move of Photon to the Graphics Framework in QNX SDP 6.4.0, we lost the ability to rotate the display (formerly supported by devg-rotate90.so and devg-rotate270.so) because GF doesn't provide the infrastructure for rotation. We might support rotation for Photon applications again in a future release. (Ref# 57091)
  • New: When you start a QNX Neutrino system for the first time, it chooses a “safe” graphics driver (devg-svga.so or devg-vesabios.so, depending on the installed chipset). However, these generic VESA BIOS and SVGA drivers can negatively impact the timing of a system and affect realtime operations. We recommended you use an accelerated driver instead, if at all possible. (Ref# 68728)
  • The devg-smi5xx.so driver faults or deadlocks in multicard setups. (Ref# 59790, 60369)
  • The flash-ph player (part of the QNX Aviage HMI Suite) doesn't work with video cards that don't provide a linearly accessible frame buffer; this includes the Fijitsu Carmine graphics card. (Ref# 61783)
  • If you use devg-radeon.so with two cards that have the same vendor and device IDs, the driver fails. (Ref# 61528)
  • The devg-radeon.so driver doesn't work properly on DVI-equipped monitors. If you're using an ATI Radeon PCI-Express Vendor ID 0x1002, and device ID 0x5B60, you may experience GUI failure during mode switching. (Ref# 41905)

    Workaround: Use the devg-svga.so or devg-vesabios.so graphics driver instead, or manually edit /etc/system/config/display.conf to find a display mode that works with devg-radeon.so.

  • If you use direct mode with the devg-i830.so driver, some images may not appear on the display. (Ref# 61008)
  • If you use devg-vesabios.so on a Dell 830, the system won't reset when you shut it down while in graphics mode. (Ref# 57168)

    Workaround: Use phgrafx to change the driver to devg-i830.so. You can also avoid the problem by exiting to text mode, and then typing shutdown at the command prompt.

  • All graphics drivers hang while trapping on (discontinued) Abit IS-20 (865GV) motherboards because of an issue in the BIOS. (Ref# 39626)

    Workaround: Use the onboard graphics controller instead. If you set the onboard display as the primary controller, any installed PCI graphics cards will still be detected / trapped.

  • The planar YUV overlay format doesn't work properly in the devg-radeon.so driver. (Ref# 29014)

Human interface device drivers (devh-*)

  • If you press several keys at once on some Microsoft keyboards, the keyboard doesn't produce any indication when you release the keys. As a result, the input driver thinks you're still holding the keys down. For more information, see http://support.microsoft.com/kb/909528/en-us. (Ref# 40611)
  • New: Autorepeat doesn't currently work on USB keyboards that are connected to the system via a Avocent KVM 4SVPUA20 switch. (Ref# 41118)
  • Pressing the space bar on a ViewSonic 10191 USB keyboard when the system displays the “Press space bar to input boot options” message doesn't work. You get the menu only after the EIDE enumeration is done.

    If you also have a Microsoft USB mouse connected, you get a “devh-usb.so - Unable to attach to USB device 1 (10)” message. (Ref# 41122)

Network drivers (devn-*, devnp-*)

devn-asix.so
  • New: 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)
devn-i82544.so
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.

devn-micrel8841.so
This driver supports only PCI versions of the Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers. (Ref# 67333)
devn-pcnet.so
  • This driver doesn't support Fiber PCNET cards with the AM79C971KC chip. (Ref# 12497)
  • We don't recommend 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.

devn-rtl8150.so
  • 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)
devn-tigon3.so
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)
devnp-axe.so
  • 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)
devnp-i82544.so
The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299)

USB drivers (devu-*)

  • When you remove a USB device, an error message of the form:

    Unable to find remove id ###

    may appear on the console. This error message comes from the enumerator and is not an indication of an error condition. (Ref# 61971)

  • The PCI-USBNEC101-5P-1 controller card won't allow at least the following boards to boot: SystemH, EDOSK7780, BCM1x80. (Ref# 29496)

Flash filesystems & embedding

  • In previous versions of this software, a program that called umount() without the _MOUNT_FORCE flag would behave as if the flag was provided (i.e. the flash filesystem would be unconditionally unmounted regardless of any operations either pending or in progress on the filesystem).

    In this release, umount() sets errno to EBUSY if any pending or in-progress flash filesystem operations exist on the filesystem unless you specify _MOUNT_FORCE. The same applies for scripts that call the umount utility without the -f option. This has implications for applications that expect _MOUNT_FORCE behavior but don't specify it.

  • libfs-flash3 loses blocks with ftruncate(). (Ref# 25132)
  • There's a memory leak of approximately 1 KB when you unmount a raw flash filesystem partition (e.g. dev/fsxpy). (Ref# 23643)
  • ETFS: file creation doesn't update parent directory times as POSIX requires. (Ref# 23243)
  • There's currently no flash probe utility. (Ref# 23136)
  • fs-flash3 doesn't have an iofdinfo() handler for mtree tests. (Ref# 18432)
  • If you create a 255-character filename using the 1.1.0 flash library (libfs-flash3) and the flash filesystem is subsequently mounted using an earlier version of libfs-flash3, the filename won't appear in the filesystem, but it is still present (i.e. if the filesystem is subsequently mounted again with the 1.1.0 libfs-flash3, the filename will reappear). This behavior applies only to forward compatibility whereby an older flash filesystem library is used to mount a newer filesystem. Backward compatibility (the ability of the new filesystem library to mount older filesystems) isn't affected.
  • During a power failure, the flash filesystem can be corrupted if the NOR device's power supply is in the indeterminate state. The solution is to design the hardware so that the NOR flash device enters RESET the moment the power supply drops below the proper operating range. (Ref# 24679)

Known issues: IDE

The IDE contains the following known issues:

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

Known issues: General

  • We pre-index our documentation, but the first time you search for anything in the IDE's Help system, it has to combine the indexes (and index any Eclipse documents that haven't been indexed). This should take less than a minute.
  • If you install software updates (via Help-->Software Updates), the wizard may list some secondary update sites. You install updates from such sites at your own risk. (Ref# 66909)
  • If you change the name of a library project name in the IDE, references to the library in application projects that use the library aren't automatically updated. (Ref# 45758; Ticket ID 75995)
  • You might see a message like this when you start the IDE:
    Subscription License Expired - Your QNX License could not be obtained, some QNX functionality will be disabled.

    This message appears only if QNX Software Systems has a contract with you to support server-based licenses. It indicates one of the following:

    • You need to configure your license server.
    • More users are trying to use the IDE at the same time than there are available licenses for.

    (Ref# 51688)

  • If you choose Help-->Software Updates-->Qconn Updates, and you already have the latest version of qconn, the updater simply exits without telling you that your qconn is up to date. (Ref# 50207)
  • The CDT Class browser appears to function normally; however, the information is not always accurate due to CDT indexer issues. (Ref# 26736)
  • The IDE has problems when projects are located in a remote (network drive) directory, and the network isn't reachable. (Ref# 11719)

    Workaround: Close any project that you created on a remote drive before disconnecting the drive.

  • The Eclipse editor doesn't behave correctly on very long lines (more than 4500 characters). At the end of a long line, the cursor doesn't position itself properly between characters, selections and changes are very slow, and the column number is reported incorrectly. (Ref# 29586, 21053; Eclipse-CDT PR 68116)
  • Pressing F1 for context-sensitive help doesn't always give you much information. (Ref# 21034)
  • When you're setting up a Run or Debug launch configuration, you can't use pathnames that are relative to the workspace for the local path to shared libraries. (Ref# 41476)
  • The progress bar in the Target Filesystem Navigator gives inaccurate status information when performing a large task, such as copying a large file from your target to your workspace. (Ref# 45567)
  • If the IDE can't open the browser to display the documentation, it may give you an error message of:
    An exception occurred while launching help. Refer to the log for more details.
      

    The problem could be that the IDE couldn't find your default browser. Check the web browser listed in your preferences (see Window-->Preferences-->General-->Web browser) to make sure it's a browser that's installed on your system.

    If this doesn't fix the problem, check the log file; see Help-->About QNX Momentics IDE-->Configuration Details-->View Error Log. If you've installed the Eclipse SDK, use the Error Log view. (Ref# 29971)

Known issues: Application Profiler perspective

  • The Application Profiler can allocate CPU time to the wrong line if you're profiling code that has profiling and debugging information, and if you linked against a static library that doesn't have profiling and debugging information. (Ref# 21024)

    Workaround: Build everything with debugging information, or use -gdwarf-2 instead of -gstabs.

  • The Application Profiler's sampling information shows “unknown” function names for MIPSLE and MIPSBE targets. There is no workaround at this time. (Ref# 24510)

Known issues: System Profiler perspective

  • The System Profiler requires a minimum color depth of 16 bits; otherwise, the timelines might appear to be blank. (Ref# 23763)
  • The System Profiler can take a very long time to load and parse a .kev generated by a target system that's running Neutrino 6.3.0 SP1. The parsing is much faster for .kev files from a system with a later version of Neutrino. (Ref# 27221)
  • In the System Profiler's Timeline view, toggling the priority and event labels has no effect. (Ref# 42076)

    Workaround: For priority labels, you need to generate the log file in wide mode.

  • The text at top of the Summary page isn't displayed. (Ref# 45814)

    Workaround: Close and then reopen the System Profiler perspective to restore the summary information.

Known issues: Memory Analysis perspective

  • When you request the termination of the Memory Analysis service, it might take longer than expected. (Ref# 46228)
  • In the Memory Analysis perspective, if a function causes a buffer overflow, memory leaks aren't detected correctly. (Ref# 42312)
  • You might see some allocations take place before your application's main() function starts. This is normal; some of the system libraries allocate space as they're initialized. (Ref# 29698)
  • If a process is not running as the root on the target machine, the Attach mode will not function properly. (Ref# 44762)

    Workaround: Run the process as the root. If the process is launched using qconn, then qconn should be run as root.

  • The Memory Analysis Tool does not work properly when more than one IDE client connects to it. (Ref# 21819)

    Workaround: Use a unique file for MAT output (device or filesystem).

  • The Memory Analysis Tool changes the behavior of a program that uses fork. (Ref# 29032)

    Workaround: If your program uses fork, you must disable the control thread of the Memory Analysis Tool (from the Launch Configuration, select Memory Analysis-->Target Settings and disable Create control thread).

    In addition, it is not possible to attach to this type of process because the Memory Analysis Tool needs to run a control thread.

Known issues: System Information perspective

  • In the System Information perspective, if you use continuous logging and the currently selected process ends, the IDE loses focus. (Ref# 41630)
  • Occasionally, in the System Information perspective for the APS (adaptive partitioning scheduler) view, the Partition Child Process and Threads information aren't available if the target is slow, or if you're using QNX Momentics 6.3.0 SP3 or the SP2 to SP3 upgrade. (Ref# 40651)
  • The APS view in the System Information perspective doesn't show all of the bankruptcy information, such as when the last bankruptcy occurred. (Ref# 40057)
  • In the APS view's CPU Usage and Critical Time Usage panes, newly added partitions display with the same color as some of the existing ones, and partitions aren't cleared when you switch targets. (Ref# 40626)

Known issues: System Builder perspective

  • New: If you create a buildfile for a MIPS target, the System Builder sets up the wrong symbolic link for the runtime linker; for MIPS, the name should be ldqnx.so.3 instead of ldqnx.so.2. (Ref# 71181)
  • The System Builder doesn't currently have a way for you to enable the kernel dumper. (Ref# 56269)
  • In the System Builder, having the same binary and directory name in the overrides can result in an incorrect path for the binary. (Ref# 40287)
  • If you disable the system builder console preference Always clear before each build (Window-->Preferences, and select QNX-->System Builder), the System Builder can't perform a build. (Ref# 45597)

    Workaround: Don't disable the setting Always clear before each build.

  • For a System Builder project, if you select the Clean Project option, the make clean defined in the makefile isn't properly invoked. (Ref# 45628)

Known issues: C/C++ development

  • If the Makefile for a regular C++ make project uses implicit rules such as the following:
    all : cc2
    
    cc2 : cc2.o
    
    cc2.o : cc2.cpp
      

    then the link stage doesn't work properly. (Ref# 62006)

    Workaround: To avoid this, use an explicit rule for linking:

    cc2 : cc2.o
            $(CXX) -o cc2 cc2.o -lang-c++
      
  • Assigning a hotkey to the Rebuild Project action has no effect (the hotkey doesn't work). This is a bug in Eclipse 3.0; see bug 99193 at http://www.eclipse.org. (Ref# 25616)
  • The IDE sometimes ignores an explicit build request for a project, such as those invoked by using the Build Project entry in the C/C++ Project view's right-click menu, if the project uses an externally built library. (Ref# 20966)

    Workaround: Use an explicit target in the make command.

Known issues: Team/CVS

  • If you check out an existing PhAB project from CVS, the IDE starts PhAB before checking the project out. PhAB creates some directories, and then the CVS checkout says that the files already exist. After telling the IDE to replace the files with the ones from CVS, PhAB still thinks that it's the old set of widgets (empty project). (Ref# 18405)

    Workaround:

    To check out an existing PhAB project from CVS:

    1. Select an import source from CVS-->Projects.
    2. Click Next.
    3. In the Checkout Project from CVS Repository window, select an existing repository location, or create a new location.

      If you choose an existing location, select Use existing repository location.

    4. Click Next.
    5. In the Select Module window, enter a module name, or choose an existing module by selecting Use an existing module, and then browse the modules in the repository.
    6. Click Next.
    7. In the Check Out As window, select Check out as a project in the workspace.
    8. Click Next.
    9. In the Check Out As window, if not already checked, select Use default workspace location.
    10. Click Next.
    11. In the Select tag window, click Finish.
  • If you check a project out from CVS by using the New Project wizard, and you choose only one CPU with both debug and release versions, then when the wizard is done, the debug variant is always unchecked for SH, PPC, and x86. In addition, while the project is being checked out, a message displays indicating “The file has been changed on the file system, do you want to load the changes?”, but it doesn't indicate which file was changed. (Ref# 25422, Eclipse ref# 102659)

Known issues: Debugging

  • Breakpoints set in .gdbinit don't show up in the user interface. (Ref# 55810)

Known issues: Documentation

  • New: Note that isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), and toupper() take an integer argument, but the value must be representable as an unsigned char or be EOF; the behavior for other values is undefined. (Ref# 120364)
  • New: Note that iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), and towupper() take a wint_t argument, but the value must be a wide-character code that corresponds to a valid character in the current locale, or must be WEOF; the behavior for other values is undefined. (Ref# 120364)
  • New: The ability to munmap() just a part of an area mapped with mmap() was introduced in QNX Neutrino 6.3.2, but the entry for munmap() in the Neutrino Library Reference says it isn't supported. (Ref# 80441)
  • New: The documentation doesn't currently mention that if you're creating a buildfile for a MIPS target, you need to create this symbolic link for the runtime linker:
    procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.3
      

    instead of this:

    procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
      

    That is, you should name the link ldqnx.so.3 instead of ldqnx.so.2. (Ref# 71087)

  • Additional documentation is required to complete the topics for the following areas in the IDE User's Guide:
    • the fast method of launching a debug session
    • debugging a DLL/shared library
    • attaching to a running process with the debugger

    (Ref# 42437)

  • Invoke the command for installing patches as applypatch, not applypatch.py as indicated in the Utilities Reference. (Ref# 68568)

Known issues: Instant Device Activation

  • The default startup [image=] memory location as specified in buildfiles for Biscayne boards causes a memory error when using a minidriver. You get a “cannot remove all sysram” error message. (Ref# 23632)

    Workaround: Change the memory location to 8c004000 from 8c002000 (e.g. [image=0x8c004000]).

  • We've provided a mini serial port driver for the Freescale Lite5200B, but not for the Freescale Media5200b. (Ref# 40572)

    Workaround: If you need a mini serial port driver for the Media5200b, you can modify the one for the Lite5200B. You need to change the interrupt number to 68 and use PSC6, GPIO6.

  • The test-case code for the mini serial port drivers on the Renesas Biscayne and TI OSK5912 boards have the baud rate set to 14400. (Ref# 40570)

    Workaround: You need change the baud rate to the correct one below:

    Renesas Biscayne
    int baud=57600;
    TI OSK5912
    int baud=115200;
  • In the current mini serial port driver test case for the Renesas Biscayne, when the real serial driver attaches to the interrupt, it disables Rx and Tx interrupts. It might lose some data between these two stages. (Ref# 40514)

    Workaround: Change the following code so that it doesn't disable Rx (SH_SCIF_SCSCR_RE).

    In mini_serial.c:

    if (state == MDRIVER_INTR_ATTACH) {
       set_port16(mdata->port + SH_SCIF_SCSCR_OFF,
                  SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE, 0);
       return 1;
    }
      

    In minidriver-serscif.c, change this:

    out16(port + SH_SCIF_SCSCR_OFF, SH_SCIF_SCSCR_RE|SH_SCIF_SCSCR_RIE);
      

    to this:

    out16(port + SH_SCIF_SCSCR_OFF, in16(port +
          SH_SCIF_SCSCR_OFF)|SH_SCIF_SCSCR_RIE);
      

    The baud rate and clock for Biscayne should be 57600 and 33333333.

Known issues: I/O devices

io-usb
  • In some cases when unmounting DLLs and running the usb utility at the same time, some memory allocated by io-usb isn't freed. This is a rare situation. (Ref# 21716)
  • The io-usb server crashes if you repeatedly mount and umount and plug and unplug devices attached to the port. (Ref# 21556)
  • 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

  • The IDE and command-line tools don't warn you when your subscription license is about to expire. (Ref# 68678)

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

devnp-*
  • Native io-pkt and ported BSD drivers don't put entries into the /dev/io-net namespace, so a waitfor command for such an entry won't work properly in buildfiles or scripts. (Ref# 67527)

    Workaround: Use the if_up -p command instead. For example, instead of waitfor /dev/io-net/en0, use if_up -p en0.

  • When using the m_pkthdr_csum_data member in network driver code, make sure that you use only the bottom 16 bits. The top 16 bits may contain undefined data. (Ref# 44622)
ifconfig
The commands:

ifconfig iface_name up
ifconfig iface_name scan

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

Workaround: Combine the commands:

ifconfig iface_name up scan

lsm-pf-*.so
New: 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)

lsm-qnet.so
  • New: Qnet might append the domain name to entries under /net, even for nodes in the same domain. (Ref# 75539)

    Workaround: Use the setconf _CS_DOMAIN command to change the domain name to something else, and then change it back to its original value.

  • The only supported bind= options for Qnet are bind=ethernet_interface and bind=ip. Other values for bind=X are still accepted (that is, no error is given), but Qnet may not work with them if the specified ethernet_interface doesn't appear. (Ref# 58234)
  • Qnet currently expects all packets to be received and sent as a single contiguous buffer. This can be a problem if you're using jumbo packets. (Ref# 47828)

    Workaround: When you're using Qnet with an Ethernet driver that's enabled to use jumbo packets, you should set the cluster size (the mclbytes option to io-pkt*) to be the same as the packet size (the ifconfig if_name mtu command for the driver). This ensures that the packet buffers that Qnet uses are contiguous in memory.

    If you specify a jumbo packet size larger than 4 KB (the default page size), you must additionally specify the pagesize=X option to io-pkt, with the same value as the mclbytes=X option. For example, to use 8100-byte packets with devnp-i82544.so, do the following:

    io-pkt-v4 -d i82544 -p tcpip pagesize=8192,mclbytes=8192
    ifconfig wm0 mtu 8100
    mount -T io-pkt lsm-qnet.so
        

    Note: Be sure to mount Qnet after you change the MTU of the interface with ifconfig.

    If you now type:

    cat /proc/qnetstats
        

    you can see that the Qnet L4 has an MTU of 8096, which it learned from the driver (remember the 4 bytes for the trailing CRC).


    Note: All the Qnets on your LAN must have exactly the same MTU.

    You can specify a particular MTU to Qnet (which can be the same or less than the driver-advertised value) with the mtu_en=X option.

  • 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)
  • New: Qnet doesn't fully support communication between a big-endian machine and a little-endian machine. However, it does work between machines of different processor types (e.g. ARMLE, x86) that are of the same endian-ness. If you require cross-endian networking with Qnet, please contact your QNX sales representative.
fs-cifs
  • 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
  • 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)
  • New: If a path ends in a slash, it must be a directory. When you access a link that has 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, and it's consistent with the behavior on other OSs. (Ref# 20877, J473236)
  • fs-nfs2 doesn't support a -B option greater than 8096. (Ref# 39022)
fs-nfs2, fs-nfs3
  • fs-nfs2 lets you modify the on-disk binary file of an executable that is executing. It should return an error with errno set to EBUSY. (Ref# 38563)
  • The NFS clients don't distinguish between a pathname ending or not ending in / when passed as the argument to mkdir(). (Ref# 38484)
  • NFS is a connectionless protocol. If a server stops responding to the NFS client, it continues to try to reach the server to complete an operation until the server becomes available, or the user stops the operation. While the fs-nfs2 and fs-nfs3 clients are trying to reach the server, NFS operations are blocked until they're successful. This isn't an issue if the client is talking only to one server, but if an fs-nfs2 process has mounted multiple servers, the blocked operation also block the client's ability to talk to the other servers. (Ref# 39084)

    Workaround: Start separate client (fs-nfs2, fs-nfs3) processes for each server you wish to mount.

gns
  • New: 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.

io-pkt*
  • The stack might send zero-length mbufs to a driver for transmission. (Ref# 44621)

    Workaround: Drivers must accommodate for this by checking the length of the data in the mbuf and ignoring the mbuf if the length is zero.

  • 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
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)
ntpd
New: NTP clients might not stay synchronized with the server. Our investigation has revealed that this happens because ntpd uses floating-point calculations in a signal handler (SIGIO) when processing incoming (and other asynchronous activity) packets or I/O. This causes corruption in the floating-point context in the emulator, which causes problems in subsequent calculations. (Ref# 74509)
pppd
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
  
SSH suite
The /var/chroot/sshd directory should be owned by root:root with permissions of 0755, not 0775. (Ref# 68628)

Workaround: Log in as root, and then correct the permissions:

chmod 0755 /var/chroot/sshd/
  
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

io-display
New: The documentation incorrectly says that io-display supports PAL8 (the underlying Advanced Graphics framework doesn't support it). (Ref# 77854)
pwmopts
The Using the Photon microGUI chapter of the Neutrino User's Guide and the entry for pwmopts in the Utilities Reference refer to wframe_update.so, but the name is actually wframe_updated.so (with a second “d”). (Ref# 65310)
Arcs, Bézier curves, and ellipses
The plotting of these curves isn't very precise, resulting in lines that aren't very smooth. The default line joint is a miter, which doesn't produce good results for these curves, and — contrary to what the documentation says — the setting of the line joint is ignored if you use stroked arcs or stroked ellipses. Using PgSetStrokeJoin(Pg_BEVEL_JOIN) may give smoother results once this issue is resolved. (Ref# 58185, 58277)
libimg
An internal structure exchanged between libimg and the image codecs changed after we released version 2.0 of the Advanced Graphics TDK. Applications compiled and linked statically against the earlier versions of imglib.a might not function properly, especially while decoding JPEG images. (Ref# 48003, 56557)

Workaround: Relink the applications against the newer version of imglib.a.

Blitting
The Advanced Graphics libffb library doesn't support blitting to a PAL8 surface from a non-PAL8 surface. Therefore, Pg_IMAGE_PALETTE_BYTE offscreen contexts can be blitted to and from only offscreen contexts of the same type. (Ref# 20391)
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()
New: The documentation says you can use these functions with any form of draw context, but they support only PhDrawContext_t and PdOffscreenContext_t draw contexts. (Ref# 181238)
phs-to-pcl
We don't 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)
PhAB
  • If you can't find the icon for a minimized module, use the Show Module Tree item from the Window menu to locate it. (Ref# 60529)
  • The template editor currently lets you delete or rename the widget template, but doesn't provide a way to restore the default value. (Ref# 21969)
  • If you're using bash as your shell in Neutrino, PhAB doesn't populate the list of targets when you try to build an application. (Ref# 22850)
PhAB for Windows
  • Applications created by one user can't be built 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)
$HOME/.ph/phapps
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)
helpviewer
  • 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/qnx641/target/qnx6/usr/help/product/momentics/bookset.html, and QNX_HELP_PATH to /usr/qnx641/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.

Known issues: Runtime kit

  • The sample 641-complete.txt file lists the files associated with the Mozilla Firefox browser under the relative directory pathname opt/mozilla, but they should be under the absolute path /opt/mozilla. (Ref# 68311)

For information about creating a runtime QNX Neutrino system, see the How to create a Runtime Kit from the QNX Software Development Platform technote in the installed documentation.

Known issues: System Analysis Toolkit

  • If you run tracelogger in direct map mode on an ARM LE system, you might encounter some increased latency in your tasks. (Ref# 51550)

    Workaround: Use nondirect map mode instead.

Known issues: Host-specific

QNX Neutrino self-hosted

System Management Mode
New: Some x86 systems can run in System Management Mode (SMM), where the BIOS installs special code that runs when a System Management Interrupt (SMI) occurs. SMI interrupts may be generated by the motherboard or peripheral hardware, and can't be masked by the operating system. When SMM is entered, normal operations — including the OS — are suspended, and the SMI handler runs at a high priority. Avoid using systems where SMM can't be disabled, because it can destroy QNX Neutrino's realtime performance. The OS can't do anything about the delays that SMM introduces, nor can the OS even detect that the system has entered SMM.
Installing on USB drives
If you're installing directly to a USB drive, note the following:
  • When the installer asks you to choose the type of the partition, choose one of the QNX 4 types (t77, 78, or 79). The Power-Safe (fs-qnx6.so) filesystem can't guarantee that the filesystem is power-safe on devices that don't support synchronizing.
  • If the system doesn't boot automatically, replace the partition boot loader; from a working system, run:

    dloader /dev/part pc2

    where part is the device name of the partition you need to boot.

(Ref# 61707)

/x86 symbolic link
Self-hosted Neutrino systems are missing the /x86 symbolic link to the / directory. (Ref# 68593)

Workaround: Log in as root, and then do the following:

cd /
ln -s . x86
  

Windows hosts

devg-vmware.so
VirtualPC and VMware require a Windows session that's operating with 32-bit graphics. (Ref# 60669, 68050)
IDE
The following issues apply to the Windows-hosted version of the IDE:
  • You can't do rename, delete, or move operations when the System Profiler editor is open. The editor maintains an open file pointer to the log file that it's working with; as long as that file is open, under Windows FAT32 filesystems, no modification can occur. (Ref# 28561)
  • If the IDE window spans two monitors, and you lock and then unlock your computer, the window is restored to be the size of one monitor. This is a general problem on Windows. (Ref# 28653)
  • When you do a build, stdout and stderr sometimes overlap, resulting in misleading error and warning messages. This is a general problem on Windows. (Ref# 15106)
Vista and Phindows or PhAB
On Vista, Phindows and PhAB seem to interfere with the gadget toolbar; the sidebar flickers and appears and disappears very rapidly and often, slowing down the system. (Ref# 62277)

Workaround: This may be related to Phindows and PhAB's use of Direct3D double buffering, which is redundant when the Vista Aero compositing is enabled. To disable double buffering:

  • For Phindows, use the Double Buffering Method menu option in the Connect dialog, or pass the -d0 command-line option.
  • For PhAB, set the PHINDOWSOPTS environment variable to -d0.
Documentation
On Linux and Windows, you might need to install some international fonts in order to display the Multilingual Input documentation. (Ref# 61950)
echo.exe
On Windows, the QNX-provided echo.exe interprets the Windows \ separator as an escape character. As a result, environment variable settings won't work if you use \ as a path separator; use / instead. (Ref# 19924)
MAKEFLAGS
Microsoft Visual Studio also uses the MAKEFLAGS environment variable, but in a much different way than QNX Neutrino does. The result is that Microsoft Visual Studio no longer works after you've installed QNX Momentics.

Workaround: If you want to work with Microsoft Visual Studio (MSVS) after installing QNX Momentics on the same system, do the following:

  1. Open a command window and run cmd.
  2. Type set.
  3. Find the value for MAKEFLAGS and save it.
  4. Type set MAKEFLAGS.
  5. Do your MSVS work.
  6. To work with QNX Momentics again, type:

    set MAKEFLAGS=saved_makeflags_value

sh, ksh
Because of the way that the MSYS versions of the shell manipulate the environment variable, PATH doesn't appear to include $QNX_HOST/usr/bin, but it does. (Ref# 59412)
User Account Control (UAC)
Windows Vista 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.

BSPs
For Windows XP, the location that the BSP file for the IDE installs into is $QNX_CONFIGURATION/qconfig_directory, and it is write-protected for a default user. Consequently, subsequent updates to BSPs aren't permitted in this location because of permission errors under Windows Vista configurations if the user doesn't have administrative permissions. (Ref# 44668)

Workaround: Modify your user permissions. For instructions about changing these permissions, see the steps in the workaround for the problem (Ref# 44027) above.

QNX utilities
The Windows installation includes various executables that have the same name as some QNX utilities, such as find, sort, and split. By default, Windows places the path to the Windows executables at the beginning of the Windows PATH environment variable, and the QNX executables appear afterward. This means that when you run these utilities from the command line, instead of using the QNX version, the PATH variable uses the Windows version. (Ref# 44457)

Workaround: If you want to use the QNX utilities for find, sort, and split from a command prompt or shell prompt, specify a fully qualified path to any of the QNX executables.

ctags
  • The current version of ctags is 5.5.4, and the documentation included with QNX doesn't accurately describe the features for this version. (Ref# 44457)

    Workaround: See the detailed documentation at http://ctags.sourceforge.net/ctags.html.

  • For Windows Vista, you receive the following error messages two times when using ctags because the Windows sort is being used instead of the sort utility included in QNX Momentics:
    Input file specified
    ctags: cannot sort tag file : No error
        

    The ctags utility still generates tag files; however, they won't be sorted. (Ref# 43530)

    Workaround: Manually call the QNX sort on the tags file.

Linux hosts

Installers
  • The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
  • On some distributions of Linux, you might not be able to activate QNX SDP 6.4.1 immediately after installing it. (Ref# 59063)

    Workaround: Log out and back in again before trying to activate.

  • On Linux and Windows, you might need to install some international fonts in order to display the Multilingual Input documentation. (Ref# 61950)
Activation
  • On some distributions of Linux, you might not be able to activate QNX SDP 6.4.1 immediately after installing it. (Ref# 59063)

    Workaround: Log out and back in again before trying to activate.

  • On some distributions, the activation dialog doesn't appear automatically. (Ref# 68599)

    Workaround: Log out and back in again, and then start the activation program manually:

    /etc/qnx/bin/qnxactivate -a
        
IDE
  • New: If your Linux system is running GTK+ 2.18 or later, the buttons in the IDE's wizards won't respond to clicking. This happens because of an API change in GTK.

    Workaround: Edit your qde.sh script and add the following line before the command that launches the IDE:

    export GDK_NATIVE_WINDOWS=1
        
  • The IDE won't run on some versions of Linux, such as Open SUSE 11 and Ubuntu 8.04. This is a bug in Eclipse; see bug 213194 at http://www.eclipse.org. (Ref# 66351, 66760)

    Workaround: Do the following:

    1. On Ubuntu, type:
      sudo apt-get install xulrunner
          
    2. Edit $QNX_HOST/usr/qde/eclipse/qde.ini and add this line after the -vmargs line:
      -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner/xulrunner
          

Known issues: Web browsers

Bon Echo
  • For the Send Link... command in the File menu to work (and for mailto: links on web pages in general), you need to set the network.protocol-handler.app.mailto configuration string. To set this string, type about:config in the Bon Echo address bar. You should set this string to be the full path to an executable that will start the desired email program. The first parameter passed is always the mailto: URL. (Ref# 59434)
  • If you place the Bon Echo window so that the bottom is outside the lower part of the screen, and you then scroll down for example with the wheel, the page isn't refreshed correctly. (Ref# 61837)

Getting started with the documentation

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

  • On Linux and Windows development hosts, you can read it in the Integrated Development Environment's help system. On Linux, use the qde command to start the IDE; on Windows, use the desktop icon.
  • On self-hosted QNX Neutrino systems, you can read it in the Photon helpviewer, or you can use a web browser to display:

    ${QNX_TARGET}/usr/help/product/momentics/bookset.html

The “roadmap” page contains links to the various HTML booksets that accompany the OS (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 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.1 include the following:

Software fixes

Change Ref#
We no longer support the PowerPC 900 series of processors, so we've deprecated procnto-900 and procnto-900-smp. 68225
With the integrated graphics chipset on the E5400 Dell Latitude Laptop the hardware cursor did not appear. (PCI vendor device 0x2A42) This device will now default to software cursor. You can try to force the hardware cursor to see if it works on your particular device using the graphics configuration under Photon. 67809
The IDE Debugger now correctly displays the contents of arrays with more than 100 elements. (Ticket ID 88014) 67613
For memory analysis (librcheck), we've added a MALLOC_START_TRACING environment variable that controls whether or not tracing starts at the beginning. When you set it to 0, tracing doesn't start, which lets you start it later within the application, using the API or from the IDE's Memory Analysis tool when attaching. 66929
The PtSlider now calls its callback the correct number of times when you click in the slider trough. (Ticket ID 86631) 66900
If you unset the QNX_* environment variables, the IDE now asks you if you want to exit, instead of simply exiting. 66779
Static constructors no longer crash when you compile C++ code with debugging. 66706
Photon window frames have been reworked to reduce CPU loading, and improve redraw speed. If you prefer the older look, you can do the following before starting Photon: export PH_WFRAME_STYLE=wframe_updated.so 66257
A serious race condition, and potential deadlock circumstance, has been corrected in libgf and io-display with the usage of the following routines: gf_draw_begin(), gf_draw_finish(), gf_draw_flush(), gf_draw_end(), and gf_layer_flushrect().

If you've linked your Advanced Graphics application against libgf.a or libgfS.a, you need to relink it.

66160
Some deadlocks under heavy usage in the F3S filesystem (devf) have been corrected. 65991
We've fixed some issues with copying multiple files in the IDE's Target Filesystem navigator. 65370
The ph script no longer requires that io-display be running if io-graphics doesn't need to be started. This means that you can now use Phindows to log into a target that isn't running io-display. 65352
We now ship <fstab.h>, and we've added getfsent(), getfsspec(), getfsfile(), setfsent(), and endfsent() to the static libc. 65331
The Thread State Snapshot view has been updated to support multiple selection and now displays the priority of running states. 65322
Slinger no longer crashes if the query string to a CGI script is too long, or if you use CGI or SSI and the current working directory has been invalidated. 65316
We've removed some unused Pa*() routines from libph, as well as the <photon/Pa.h> header file. 65206
The IDE now correctly supports EXTRA_SRCVPATH for variants in a QNX project. 65025
The filters view now appears in the System Profiler perspective. 64975
The slog kernel event is now supported. 64922
The filters view now provides the ability to use filters between multiple trace files and the ability to import/export filters and share them with other users. 64815
The user is prompted to switch to the System Profiler perspective when a kernel trace is opened. 64745
We've corrected a problem associated with using mmap() to create a mapping beyond the current end of the file. (This is legal according to POSIX, but you'll get a SIGBUS if you actually try to touch the page). When the kernel frees the internal structures for the memory-mapped file, it now correctly removes the physical memory that was allocated for the potential file data. 64718
The IDE's Memory Analysis Toolkit no longer crashes in librcheck.so when used with MALLOC_USE_CACHE=0 (turning off pointer caching). (Ticket ID 86739) 64629
PHF font file stem names are now constructed properly by PfFindFont*() and PfGenerateFontName*(). 64417
We now include a FontFusion reference manual. You can find it in $QNX_TARGET/usr/help/FontFusion/FF_Ref_Guide.pdf. 64352
If you resize a non NULL pointer to size 0 via realloc(p, 0), realloc() now returns a non-NULL pointer, just as malloc() does. This pointer is valid only for passing to free() or realloc(). 64337
The libimg library now properly returns an error if the input stream is truncated. (Ticket ID 86523) 64296
Pressing (in sequence) Alt, Space, the up arrow, and then the down arrow no longer causes PtList to crash. 64174
The IDE now ignores invalid files in $QNX_HOST/etc/qcc/ (previously this caused all compiler configuration to be corrupted). (Ticket ID 86414) 64170
The dhcpd daemon no longer runs ready if the lease file is corrupt. 63918
The IDE's System Summary view has a new “Stack” column that shows the processes' allocated stacks. (Ticket ID 86335) 63788
System Profiler has improved support for systems with Adaptive Partitioning. This includes the ability to filter based on partitions and to generate partition-based statistics. 63673
phs-to-pcl for PPCBE is now included in the distribution. 63636
The usage message for pidin now includes the f (process flags) and q (backtrace) formats, as well as the backtrace argument. 63488
You can now control the compression quality on the img_codec_jpg.so codec. 63481
The High Availability Manager now triggers the correct condition after another condition is freed. 63468
We've improved the aggregated results in the IDE's Application Profiler for multithreaded applications running on one CPU. 62785
The IDE's Application Profiler now uses thread names instead of IDs if the trace is imported from a kernel log. 62784
8888 alpha images are now displayed correctly in print previews. 62613
MsgSend*v*() and MsgReceive*v*() now indicate an error of EOVERFLOW instead of overflowing a buffer if the sum of the user's IOV lengths exceeds INT_MAX. 62575
New Advanced Graphics image API img_crop() has been implemented. 62571
PgReadScreen() now works in direct mode. 62282
We've corrected the default values for the irq_threshold and transmit options in the usage message and documentation for devnp-i82544.so. This driver doesn't support the promiscuous option. 62229
New flag Pg_OSC_MEM_LINEAR_ACCESSIBLE has been added for PdCreateOffscreenContext() in order to specifically request linearly accesible memory. 62196
If you add a license in text mode (e.g. on the console or via a telnet session) using finstall -l, you can now properly activate. 62147
HP xw4600 x86 desktop with nVidio Quadro FX 1700 platforms have stability issues when utilizing the devg-svga.so driver. We recommend using the devgvesabios.so driver (default). 61690
We now ship the fontinfo utility, which you can use to display the details about font files. 61470
We've addressed an issue with FIFO scheduling on SMP systems. 61367
Switching from devg-matroxg to devg-svga via modeswitching no longer causes io-graphics and/or io-display to fault. 61152
In the IDE's launch configurations, you can now specify the adaptive partition the process should run in. This functionality is available in the APS tab of the Tools tab. 60661
The /dev/console interface no longer limits the buffer size to _SLOG_MAX, so slogger no longer loses characters. (Ticket ID 85121) 60653
We've implemented some errata workarounds for wait-for-interrupt issues on some ARM926 processors. The fix is implemented within the startup callout used to invoke the wait-for-interrupt operation and requires rebuilding the BSP startup program with an updated libstartup containing the new ARM926 cpu support code. 60487
Attempting to launch a program from the IDE on a target that doesn't have a pty device now fails, and consequently doesn't break other functionality such as System Information. You now get an error message indicating that you must have a pty device (such as devc-pty) running on the target when launching. 60458
The Code Coverage tooling now works properly for applications (e.g servers) that don't exit. 60457
The setkey utility now supports the 3des-deriv encryption algorithm. 60289
In the IDE's System Profiler, thread names are now preserved when you save a selection of a .kev file. (Ticket ID 84937) 60269
The df utility has a new -h that makes df display the sizes in human-readable form, using bytes, KB, MB, or GB as the units. 60077
We've corrected the information, in the SPI (Serial Peripheral Interface) Framework technote, about what the spi_read(), spi_write(), spi_xchange(), spi_cmdread(), and spi_dma_xchange() functions return. (Ticket ID 84471) 59977
The PtFileSel widget now consistently handles the root item when the Pt_FS_NO_ROOT_DISPLAY flag is set. 59670
PpGetCanvas() now properly processes the width and height of a canvas in landscape mode. 58706
We've corrected a problem with moving focus that used to make pwm crash. (Ticket ID 83983) 58363
phs-to-pcl: Issues related to text layout have been resolved. 58180
phs-to-pcl: Improper text clipping resolved. 57113
The gf_display_wait_vsync() function no longer returns an error when the call was actually successful (a regression from the Advanced Graphics TDK 2.0.1).

The PgWaitVSync*() functions now work correctly (a regression from 6.3.x).

55799
The scrollbar in a PtTree no longer hides the last entry in the tree. (Ticket ID 81575) 53671
phs-to-pcl: Fill patterns are now processed. 52878
We've updated the filters in the IDE's Memory Analysis memory events charts to add pointer filtering. You can now search for events using this filtering mechanism. 52701
The Disassembly view in the IDE's Debug perspective now has a Go To Address action. After the assembly code is located, you can select Open Source from the context menu. If the source code is available, the IDE opens the source file and highlights the appropriate line. 52681
The diskboot utility now has a -u option that you can use to override the default options passed to io-usb. (Ticket ID 80346) 52436
Copying files over Qnet is faster with devnp-bge.so than it was with devn-tigon3.so. (Ticket ID 80016) 50454
You can now fold compound statement blocks in C/C++ code in the IDE's Editor view. This type of folding has to be enabled in the global preferences first. 50023
The stencil buffer is now cleared correctly for the Carmine board. (Ticket ID 77993) 47115
It is possible now to copy the .boot file to the target filesystem using drag-and-drop (as well as other files, in read-only directories, but in which files have write access). 46882
The IDE has new launch configuration Group Launch that lets you launch several processes simultaneously (or sequentially). 45543
The libphrender library now writes a message on the system log if your graphical operation exceed the buffer limits in io-graphics. You can use the -p option to io-graphics to change the buffer size. (Ticket ID 76000) 44030
In the IDE, the APS view's CPU Usage chart no longer shows the usage for each partition returning to zero at the right side of the chart; the lines now correctly end at the last point of data collected. 42656
The etfsctl utility can now read and write the ETFS image file from/to stdin or stdout. Note that etfsctl will not recover from a bad block if writing an image from stdin. 41317
The CPU Usage graph in the APS view now displays the partition's budget along with its CPU usage. 40275
Destructors in shared objects are now executed on SH platforms. 40137
The System Resources view now presents a graph of CPU usage for the target system. 39113
You can now create more than one writeable mapping to a file. 29565
The IDE's System Information perspective's Malloc Info view is now updated correctly when Memory Analysis Tooling is active on the same process. 28712
The PWM_PRINTSCRN_APP environment variable now specifies (as documented) the application to launch when you press the Print Screen key. 28500
You can now successfully install the QNX Software Development Platform on Windows systems that use multibyte characters. (Ticket ID 70136) 27993
We've removed the -L (landscape) option from the phs-to-* printer filters. Use PpSetPC() to set the orientation in the printer draw stream to Pp_PORTRAIT, Pp_LANDSCAPE, etc. (Ticket ID 69400) 25697
If you set a widget's Pt_ARG_HIGHLIGHT_ROUNDNESS resource to a nonzero value, the widget's gradient fill is now bypassed instead of remaining rectangular. 24980
Searching for macros now works properly in the IDE. 23596
If you have two breakpoints exactly one instruction apart, the second breakpoint now correctly stops the debugger. 20833
Slinger now correctly sets the SERVER_ROOT environment variable when you use CGI or SSI. (Ticket ID 65719) 20795
The phs-to-pcl utility now correctly processes colors on PPCBE platforms. (Ticket ID 63022) 16990
When two or more threads in a process wait for a child process to die, they now correctly come back with the child's exit status instead of all but one remaining blocked. 10381

Documentation fixes

Change Ref#
The documentation now points out that resmgr_attach() copies the pointers to the resmgr_connect_funcs_t and resmgr_io_funcs_t structures, not the structures themselves. You should allocate the structures, declare them to be static, or make them global variables. If your resource manager is for more than one device with different handlers, create separate structures that define the handlers. 68115
The documentation for devg-vmware.so now points out that VirtualPC and VMWare require a Windows session that's operating with 32-bit graphics. 68050
The name_attach() function can indicate an error of EBUSY if it couldn't create a channel. 67878
The .altboot file is for the QNX 4 filesystem. We've updated some references to it in the documentation to also cover the Power-Safe (fs-qnx6.so) filesystem. 67803
The phs-to-bjc, phs-to-bmp, phs-to-escp2, phs-to-ijs, phs-to-pcl, phs-to-ps utilities no longer support the -L option. (Ticket ID 69400) 67579
The documentation for gf_surface_get_info() now says that you should use the paddr member of the gf_surface_info_t structure only if GF_SURFACE_PHYS_CONTIG is set in the flags member. 67561
In the chapter Developing C/C++ Programs in the IDE User's Guide, documentation was added to “Building from the command line” that describes how to build one or more projects in the IDE workspace from the command line. 67259
We've updated the documentation for arp and dhcp.client to reflect the current usage messages. 67256
Legacy io-net drivers create entries under /dev/io-net, not under /dev/io-pkt. 67249
We've corrected some mathematical errors in the maximum file sizes for the Power-Safe (fs-qnx6.so) filesystem in the QNX Neutrino User's Guide. 67237
We've corrected the example in the documentation for name_attach() so that it cleanly compiles. 67167
You can find unsupported editors and other third-party software in the Bazaar project on our Foundry 27 website. 66957
The -S option for ldrel adds a note that specifies the maximum (not minimum) stack size. If you don't specify -L, the stack is specified as non-lazy. 66928
For detailed documentation about the GNU binutils (addr2line, ar, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, and strip), see the GNU website at http://www.gnu.org/. 66865
We've updated the options for io-blk.so; for more information, see the Utilities Reference. 66861
We've corrected the information about the flags for resmgr_attach(): use the flags whose names don't start with an underscore (RESMGR_FLAG_*) in the flags member of the resmgr_attr_t structure; use the flags whose names do start with an underscore (_RESMGR_FLAG_*) in the flags argument to the function. 66755
When setting the time for use with pthread_cond_timedwait(), you can use nsec2timespec() to convert times in nanoseconds to a timespec structure (and timespec2nsec() to convert them back again). 66700
The Writing a Resource Manager guide now advises you not to return _RESMGR_NOREPLY from an io_notify handler. 66606
We've added the language codes for Chinese, North Korean, and South Korean to the table in the International Language Support chapter of the Photon Programmer's Guide. 66427
The entry for fs-qnx6.so in the Utilities Reference now describes the required device properties for the Power-Safe filesystem. 66339
If the RLIMIT_DATA limit set with setrlimit() is exceeded, the brk(), mmap(), and sbrk() functions fail with errno set to ENOMEM. 66278
An error of EPERM from InterruptAttachEvent() indicates that the process doesn't have I/O privileges. 66260
The cron utility has a -s option that makes cron poll for jobs every minute. 66201
The entry for resmgr_detach() in the QNX Neutrino Library Reference now describes the _RESMGR_DETACH_CLOSE flag, which closes all bindings when detaching. 66106
The entry for gcc in the Utilities Reference now describes the -mno-fp-moves option (a QNX Neutrino extension), which prevents the code generator from using floating point registers to move integers. 66031
In the chapter Preparing Your Target in the IDE User's Guide, documentation was added to “Networking QNX Neutrino using PPP” to describe how to set up and use the IDE from a Windows configuration to an embedded target over a PPP serial link. 66023
The documentation for devf-generic now describes the -d option, which controls logging, and the -e option, which controls the enumeration and automounting of partitions. 66019
The documentation no longer says that iofunc_lock() isn't implemented. 65936
The integer that's passed to the handler you register with InterruptHookTrace() is a combination of the buffer index and the sequence number; to extract each, pass the integer to the _TRACE_GET_BUFFNUM() and _TRACE_GET_BUFFSEQ() macros. 65935
The output from fsysinfo now includes statistics about the number of pages mapped in and released by the heap-allocation subsystem. 65687
We've corrected the sample code for using images in columns in a PtTree so that it correctly sets Pt_ARG_TREE_COLUMN_ATTR. 65613
You can now use mmap() to get more than one writeable mapping to a real file. 65582
In the chapter Analyzing Your System with Kernel Tracing in the IDE User's Guide, documentation was added to “Filtering using partitions” to describe partition based filtering, which lets the current editor panes and views that support filtering to only show data related to selected partitions. 65546
In addition to supporting UDF (OSTA-UDF/ECMA-167) filesystems, fs-udf.so now supports ISO-9660 (base 1998 spec, 1999 spec, Joliet extensions, Rock Ridge extensions). As a result, it has several new options, as described in the Utilities Reference. 65320
The mkqnx6fs utility has new -O and -o options that you can use to change booting and filesystem options for the Power-Safe filesystem. 65319
We've corrected the description of the sync option for fs-qnx6.so. 65318
You can use the devn-el509.so and devn-sis9.so drivers with any variant of io-pkt, not just io-pkt-v4. 65311
In the chapter Analyzing Your System with Kernel Tracing in the IDE User's Guide, documentation was added to “Trace Event Log view” to explain an example of an event configuration file by describing it's contents. 65302
The filesystem (fs-*) entries in the Utilities Reference now have links to the Filesystems chapter in the System Architecture guide and the Understanding System Limits chapter of the QNX Neutrino User's Guide. 65275
We've corrected the documentation for enum-devices: when specifying a device, vend should actually be ven. 65255
We've removed references to the ntomulti-* variants (which we no longer ship) of addr2line, ar, gprof, nm, objcopy, objdump, size, strings, and strip. 65152
We now link to version 5.0 of the NetBSD documentation for ftp. 65106
The QNX Neutrino Library Reference now includes entries for resmgr_msgreply() and resmgr_msgreplyv(). 64924
On ARMv6 platforms, the maximum number of processes (actually address spaces) is 255; we've updated the Understanding System Limits chapter of the QNX Neutrino User's Guide. 64899
The documentation for the USB DDK no longer states that isochronous and split isochronous transfers are unsupported. 64842
The entry for mksbp in the Utilities Reference now describes how to build a System Builder project that's inside an IDE workspace or just logically linked to one. 64806
The Using PhAB Under Microsoft Windows appendix of the Photon Programmer's Guide now says you should run mkfontdir, not mkfontdir.exe (Ticket ID 86748) 64792
The devc-con, devc-con-hid, devc-par, and devc-serpci drivers are for x86 targets only; devc-serzscc is for PPCBE and x86 targets. 64730
We've updated the documentation for wpa_supplicant to reflect the NetBSD 5.0 version of the daemon. 64602
We've updated the list of supported options for pppd, including the list of those that are specific to QNX Neutrino. 64519
Use ioctl_socket() instead of ioctl() in Packet Filter (pf) or Berkeley Packet Filter (bpf) code. 64503
We've updated the IP Tunneling (Generic Routing Encapsulation) technote. 64212
In the chapter Finding Memory Errors in the IDE User's Guide, documentation was added to “Using a file to log the trace” to describe how to use the LD_PRELOAD command from the command line, as well as updates to the list of supported options for librcheck in “Memory Analysis GUI flags and corresponding environment variables”. 64172
The entry for mmap() in the Neutrino Library Reference now describes the MAP_BELOW, MAP_ELF, MAP_FILE, MAP_NORESERVE, and MAP_RENAME flags. 64168
In QNX Neutrino, RLIMIT_DATA covers all mappings made by the process that are MAP_ANON | MAP_PRIVATE that aren't MAP_STACK, which corresponds typically to heap allocations. 64135
In the chapter Managing Source Code in the IDE User's Guide, documentation was added to “Importing a BSP or other QNX source packages” to describe how to import a BSP or source package from Foundry27. 64093
In the chapter Analyzing Your System with Kernel Tracing in the IDE User's Guide, the topic “Address translation” was added to describe how to enable address translation and to provide information about the event data keys. 64081
The documentation for mmap() now describes how the function handles typed memory objects. 64076
The io-pkt-v4, io-pkt-v4-hc, and io-pkt-v6-hc stacks now process some generic driver options for all USB drivers using the NetBSD-to-QNX conversion library to let you identify a particular USB device. For more information, see the Utilities Reference. 64022
We now use the latest version of the tftp client, which supports a new -e option and port argument, and new blksize, tout, and tsize commands. 64021
The io-pkt-v4, io-pkt-v4-hc, and io-pkt-v6-hc stacks now process a name= driver option that lets you specify the interface names. 64020
We've added entries for ApInitialize() and ApLinkWindow() to the Photon Library Reference. (Ticket ID 86422) 64014
The entry for pidin in the Utilities Reference now describes the q format and the backtrace argument. 63487
The entry for pidin in the Utilities Reference now describes the mapinfo shorthand. 63486
We've added more details to the technote on creating your own runtime kit. 63296
All our disk filesystems except fs-qnx4.so use UTF-8 encoding for presentation of their filenames; attempts to specify a filename not using UTF-8 encoding will fail (with an error of EILSEQ) on these filesystems. (Ticket ID 85972) 62919
The Using Qnet for Transparent Distributed Processing chapter of the QNX Neutrino User's Guide now includes more details about the way that /net gets populated. 62899
In the chapter Using Code Coverage in the IDE User's Guide, documentation was added to “Enabling code coverage for Make projects” to describe how to configure code coverage, additional options to specify, and detailed comments were included in the example Makefile. 62762
In the chapter Finding Memory Errors in the IDE User's Guide, documentation was updated in the table in “Memory Analysis GUI flags and corresponding environment variables” to describe the list of supported options for librcheck. 62743
The documentation for tr now says that you can specify ranges of characters with or without square brackets. 62731
In the chapter Profiling an Application in the IDE User's Guide, documentation was added to “Building with profiling enabled” to describe how to configure a Makefile to do profiling for function instrumentation. 62721
The entry for dlsym() in the QNX Neutrino Library Reference now describes the special RTLD_NEXT flag. The entry for dlopen() and the Dynamic Linking chapter of the System Architecture guide now describe how LD_PRELOAD is used when resolving symbols. 62713
We've removed a reference to vmware.boot, which we no longer ship, from the documentation for mkifs. 62596
The documentation for pidin now describes the channels argument. 62504
We've corrected the entry for /etc/inetd.conf in the Utilities Reference; a server doesn't need to explicitly leave the master socket open when it exits. 62469
The Photon Programmer's Guide has a new chapter, Understanding Encodings, Fonts, Languages and Code Tables. 62462
The QNX Neutrino Library Reference now includes entries for mq_timedreceive_monotonic() and mq_timedsend_monotonic(). These functions are similar to mq_timedreceive() and mq_timedsend(), but they use CLOCK_MONOTONIC, so the timeout isn't affected by changes to the system time. 62417
We've restored the “Setting up a restricted ftp subtree” section that was removed from the documentation for ftpd in QNX SDP 6.4.0. 62329
The System Architecture guide now says that if a thread sends a message with an “nc” (non-cancellation point) variant of MsgSend*(), then when the server replies, the thread is placed at the front of the ready queue, rather than at the end. If the scheduling policy is round-robin, the thread's timeslice isn't replenished. 62293
The Utilities Reference now includes an entry for top. 62233
The entry for mkefs in the Utilities Reference now describes the -c option, which you can use to specify the directory in which to cache compressed files. 62221
The documentation for io-usb now describes the -P option, which you can use to specify the priority of the server. 62206
Even with exceptions disabled, the new() operator throws a std::out_of_memory exception if there isn't enough memory. If you want new() to return NULL instead of throwing an exception, overload the new() operator with your own. (Ticket ID 85592) 62050
You should allocate mutexes, condvars, barriers, reader/writer locks, semaphores, objects you plan to use atomic operations on, and the control structure for pthread_once() only in normal memory mappings. On certain processors (e.g. some PPC ones), atomic operations and calls such as pthread_mutex_lock() will cause a fault if the object is allocated in uncached memory. 61585
The Utilities Reference now includes an entry for qbinaudit. You can use this script to compare your binaries with the official released versions. 61572
The documentation for cam-disk.so now explains how you can specify a starting device number in the name= option. Note that you should do this only in closed systems where you know which devices and indexes are present. (Ticket ID 85444) 61524
The documentation for io-blk.so now explains how you can use the naming= option to change the naming scheme used for devices and partitions. Note that you should do this only in closed systems where you know exactly which devices will be present. Some system components may make assumptions about the naming scheme. (Ticket ID 85444) 61523
We've added an entry for devg-poulsbo.so to the Utilities Reference. 61490
The wait(), wait4(), waitid(), and waitpid() functions suspend the calling thread, not the calling process. 61293
ThreadCtl() and ThreadCtl_r() indicate an error of EINVAL if the specified runmask is invalid. 61290
If you use ConnectAttach(), your application needs to include <sys/netmgr.h>, in order to define ND_LOCAL_NODE. 61282
The entry for devc-con and devc-con-hid now describes how to specify international keyboard layouts. 60636
The QNX Neutrino Library Reference now includes an entry for getpagesize(). 60431
The QNX Neutrino Library Reference now includes an entry for fchdir(). 60375
The documentation for mkifs now explains how you can specify the compression algorithm for the compress attribute. 60348
We've added more details to the documentation for pidin about the output from the memory argument. 60155
The documentation for phlocale now mentions that this utility creates or updates /etc/country to indicate the country you're in, based on your selection of the time zone. 59765
The entries for mkefs, mketfs, and mkifs in the Utilities Reference now state that you can specify a filter of none. (Ticket ID 84523) 59663
We've added an entry for ldd to the Utilities Reference. This utility lists the shared libraries that a program requires. 59506
The Conventions for Recursive Makefiles and Directories appendix of the QNX Neutrino Programmer's Guide now describes how to use the JLEVEL macro to enable parallel builds. 59372
In the chapter IDE Concepts in the IDE User's Guide, documentation was added to “Considerations for project development” to include additional information that developers should know/consider for project development. 59277
We've updated the list of algorithms that setkey supports. 58728
Some examples of override files set VERSION_REL, which specifies the version of QNX Neutrino that you're building for. This variable is primarily for internal use at QNX Software Systems; it indicates that make is running on a build machine instead of on a developer's desktop. If you set this variable, make becomes a lot more particular about other settings (e.g. it will insist that you set PINFO). 58620
The fildes argument to mmap() can be the file descriptor for a file, shared memory object, or typed memory object, or NOFD if you're mapping physical memory. 58550
The QNX Neutrino Library Reference now includes an entry for strlcat() and strlcpy(). 58080
The options for tail now conform to POSIX; we've updated the documentation. 57975
The IDE User's Guide now explains how to change the order in which extra libraries are linked against. (Ticket ID 75996) 57550
In the IDE, if you build a make project, and then modify and build the project outside of the IDE for a library that it needs to link against, when you attempt to select Build Project in the IDE, it won't reissue the make all command for the project. The IDE will ignore the explicit user-specified build request for this particular scenario. 57485
We've added an entry for op to the Utilities Reference. Note that this utility is a security hole and requires some setup (described in the documentation) to make it functional. We recommend you use su instead of op. 56022
The QNX Neutrino technotes now include a note about producing backtraces. Note that libbacktrace isn't supported because of its fragility. 55310
We've added an entry for devb-ahci to the Utilities Reference. (Ticket ID 83493) 55138
The fdisk info command displays a warning if the number of sectors reported by the device doesn't match the product of the number of cylinders, the sectors per track, and the number of heads. This is expected for hard drives that use zoned bit recording. 54075
The on utility now has a -P option, which spawns the process, setting the SPAWN_PADDR64_SAFE flag to indicate that the process is known to operate safely with 64-bit addressing or doesn't care about the physical memory location. 53500
The entries for InterruptAttach(), InterruptAttachEvent(), and InterruptWait() in the QNX Neutrino Library Reference now explain which processor in a multicore system the handler runs on. 52036
When you're using mmap() to map a file into memory, you need to specify MAP_SHARED. The MAP_FILE flag is defined for compatibility, but has no effect. The documentation for mmap() now includes an example of using a memory-mapped file. 48429
The fdatasync() and fsync() functions block until the given file has been synchronized. For more information about synchronizing, see “Filesystems and block I/O (devb-*) drivers” in the Fine-Tuning Your System chapter of the QNX Neutrino User's Guide. 48187
The Writing a Resource Manager guide now includes a section on handling mount requests. 46791
The Connecting Hardware chapter of the QNX Neutrino User's Guide now has a section on setting up a RAM disk. The entry for devb-ram in the Utilities Reference now recommends that you reduce the amount of cache that io-blk.so allocates. 46022
In the chapter Building OS and Flash Images in the IDE User's Guide, documentation was added to “Image and item properties” to describe all of the properties for images. 45710
The QNX Neutrino Library Reference now includes entries for iruserok(), iruserok_sa(), rcmd_af(), and rrsevport_af(). 45493
The entry for timer_getoverrun() in the QNX Neutrino Library Reference now points out that pulses are queued for a process, so timer overruns occur only for signals. 44817
The mapping type that you pass to mmap() controls whether or not changes are propagated to the underlying object. With MAP_PRIVATE, changes aren't propagated; with MAP_SHARED they are. 43196
The High Availability Manager can see death messages only from tasks that are running in session 1, and daemon() doesn't put the caller into that session; use procmgr_daemon() instead if you want to use your application with the HAM. If you want to use inetd under control of the HAM, specify the -D option when you start inetd. 42701
If you use Overrides directories in a buildfile in the IDE, and you want to build your project from the command line, you need to use the -r option to specify the path to the overriding directories. We've updated the IDE User's Guide. (Ticket ID 74804) 41527
Because of the nature of time measurement, timers might actually expire later than the specified time, and delays might be longer than specified. The QNX Neutrino Programmer's Guide now includes a chapter that explains the kernel's concept of time. 41038
The IDE User's Guide now explains the difference between shared objects and DLLs. (Ticket ID 74157) 40841
The entry for nfsd in the Utilities Reference now mentions that if you change the exports file, you can make nfsd aware of the changes by either restarting it, or by sending it a SIGHUP signal. 40616
The Writing an Interrupt Handler chapter of the QNX Neutrino Programmer's Guide and the Customizing Image Startup Programs chapter of Building Embedded Systems now include more information about interrupts on multicore systems. 40481
All PCI servers (e.g. pci-bios) have an -x option that prevents the server from removing devices from the PCI bus while enumerating them. 40300
The micro-embedded shell, uesh, now accepts a script file as an argument. Since this shell doesn't support filename expansion, * and ? aren't special characters. 38216
The System Resources view now provides a processes' CPU usage as a % of non-idle time. 37587
By default, filesystems are mounted as read-write if the physical media permit it. You can use the -r option for mount to mount the filesystem as read-only. The io-blk.so library also supports an ro option for mounting block I/O filesystems as read-only. 36077
The documentation for qconfig now explains why you should use QWinCfg instead on Windows. The documentation for QWinCfg now describes the Show Packages button. 30070
MsgDeliverEvent() and MsgDeliverEvent_r() can give an error code of EINVAL if the given event isn't valid. 29974
The documentation for the Advanced Graphics API now includes the correct header files. 29734
The Writing a Resource Manager guide now includes more details about unblocking your resource manager's clients. 29263
The Utilities Reference now includes entries for ed, getty, indent, ldd, ln-w, mcs, op, patch, and unifdef. 29234
The documentation for iofunc_notify() now describes the _NOTIFY_CONDE_* (extended) flags. 27315
The QNX Neutrino Library Reference now includes an entry for resmgr_msg_again(). 26868
The System Architecture guide and the entries for ChannelCreate(), ConnectAttach(), and MsgSend*() in the QNX Neutrino Library Reference now mention that if a process wants other processes to communicate with it, it can use name_attach() to create a channel and associate a name with it. The sender process can then use name_open() to locate that name and create a connection to it. (Ticket ID 70168) 26438
The documentation now explains why the nanospin*() functions wait for at least the specified time, but not necessarily for exactly the specified time. 25817
We've corrected the types of the members of the timeval structure in the entries for gettimeofday() and settimeofday() in the QNX Neutrino Library Reference. 25655
We've corrected the list of errors that ttyname() and ttyname_r() can indicate. 24628
The Pt_ARG_REGION_DATA resource isn't implemented, so we've removed it from the Widget Reference. 24315
We've expanded the description of the scoid member in the entry for the _msg_info structure in the QNX Neutrino Library Reference. 23921
The entry for traceroute in the Utilities Reference now describes the -d and -P options. 23311
The entry for iofunc_notify() in the QNX Neutrino Library Reference now describes the IOFUNC_NOTIFY_DISARM() and IOFUNC_NOTIFY_INIT() macros, which disarm and initialize a notification list. The entry for iofunc_notify_trigger() now describes the IOFUNC_NOTIFY_INPUT_CHECK(), IOFUNC_NOTIFY_OBAND_CHECK(), and IOFUNC_NOTIFY_OUTPUT_CHECK() macros, which check a notification list to see if it's worthwhile calling iofunc_notify_trigger(). 22781
The entries for ntpd and ntpdate now refer you to the FreeBSD documentation for information about the ntp.conf and ntp.keys configuration files. 22587
The entries in the Utilities Reference now indicate which host OSs the utilities run on. 22137
The documentation for mmap() now mentions that you can use MAP_SHARED | MAP_ANON to create a region to be shared by forked applications. 20273
If the given msg_len is less than the mq_msgsize for the given queue, mq_receive() sets errno to EMSGSIZE, not EINVAL. 18626
The Processes chapter of the QNX Neutrino Programmer's Guide now includes a section on manipulating threads via the /proc/pid/as files. 17722
The documentation for pthread_attr_setstackaddr() and pthread_attr_setstacksize() now points out that the system uses some of the provided stack for objects such as thread local storage and an initial stack frame, so less than the entire buffer is available to the thread. 16694
We've added more details to the entry for fdisk in the Utilities Reference, including information about partition types, the corresponding filesystems, and the commands you use to initialize the filesystems. 16356
The documentation for mmap() now describes the MAP_NOSYNCFILE flag. 14493
We now provide public versions (with names that don't start with an underscore) of resmgr_handle_grow(), resmgr_iofuncs(), and resmgr_ocb(). You should use these functions instead of _resmgr_handle_grow(), _resmgr_iofuncs(), and _resmgr_ocb(). Note that resmgr_iofuncs() and resmgr_ocb() both take only one argument, a pointer to a resmgr_context_t structure. 12297
The documentation for ls now points out that if you're using Qnet, doing something like ls -R /net can take a very long time because it recursively lists all the directories on all the machines on your network. 10380