QNX® Software Development Platform 6.5.0: Release Notes

Date of this edition: July 08, 2010

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

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

You can also install the QNX Neutrino RTOS as a virtual machine on VMware Workstation 6.5 or 7.0, VMware Player 3.0, and Microsoft VirtualPC 2007. We provide a VMware image of a runtime installation of QNX Neutrino; for more information, see Using the VMware image of a QNX Neutrino runtime system,” below.

If you intend to use the QNX SDP on VMware, to ensure that VMware is supported for your host, search the compatibility guide located at http://www.vmware.com/resources/compatibility/search.php.

If you find problems with any virtualization environment, please post your findings in one of the forums on our Foundry27 community website.


Note:
  • We no longer include the IDE on self-hosted QNX Neutrino systems.
  • For information about using BSPs with QNX SDP 6.5.0, 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 new in QNX Neutrino 6.5.0?

The key improvements in 6.5.0 include:

For more details, see the following sections:

Migrating from earlier releases

APIC-enabled devices

This release provides better support for Advanced Programmable Interrupt Controller (APIC) chipsets. Some newer systems contain APIC chipsets and may not run with the provided release package. If you are using a computer that supports APIC chipsets, you should download and install the APIC-enabled Neutrino ISO from the QNX Software Development Platform 6.5.X folder in download center located at: http://www.qnx.com/download/group.html?programid=20905

The APIC-enabled CD is known to work on x86 ICH4/5/7/8/9/10-based systems as well as VMware Workstation (6.5.4 Windows host), and Fusion (3.x). We are currently in the process of testing and providing support for additional platforms.


Note: This ISO image boots using startup-apic and pci-bios-v2 and will install a new boot image called qnxbasesmp-apic.ifs. This is the default image for normal booting.

If you've installed the SDP from the x86-only CD, or if you've installed using the APIC-enabled version of the x86-only CD from the download center and you want to target non-X86 platforms for development, you must manually install the non-x86 targets. To install the non-x86 targets:

  1. After you have installed Neutrino, you can retrieve the non-x86 packages from the download center. If you installed from the CD, but your system has a DVD drive (for example, you require APIC support), then you can insert the DVD.

    Note: Use /fs/cd0/repository as the source path below; otherwise you must manually transfer the packages from the DVD. Place the files in a location on your local file system. This is your source path.

  2. Change to /usr/qnx650.
  3. For each of the following files: qnx6-host.tarx, qnx6-target.tarx, and qnx6-target-gpl.tarx, run the following:
    qinst d /fs/cd0/repository/FN | tar -zx -f-

    where FN is a qnx6xxx.tarx file above.

What's new: Kernel

procnto*
procnto*-smp
procnto*-instr
You can now set the tracing mode to fast or wide for specific events in the _NTO_TRACE_THREAD class. You can also do this for events in the _NTO_TRACE_PROCESS and _NTO_TRACE_VTHREAD classes, but there's currently no difference between the data for fast and wide mode for these classes. (Ref# 69613)
PPC_CPU_XASPACE
If this bit is set in the flags member of the system page's cpuinfo table, the processor supports Power ISA 2.06 External Process ID Registers, which the kernel uses to optimize the passing of messages between different address spaces.

Note: The Freescale e500mc is currently the only PPC to implement these features; it's the only processor for which you should set this flag. Setting it on other processors will have unpredictable results.

QNX Neutrino for ARMv7 Cortex A-9 Processors
You can now set up QNX Neutrino for boards that support ARMv7 Cortex A-9 processors. Although the ARMv7 generic support was included in QNX SDP 6.4.1 when the initial Cortex A-8 support was released, the CPU implementations for both Cortex A-8 and Cortex A-9 are included in the QNX SDP 6.5.0 release.

For more information, see the QNX Neutrino for ARMv7 Cortex A-8 and A-9 Processors technote in the online documentation.

Persistent Publish/Subscribe (PPS)

Persistent Publish/Subscribe (PPS) is a resource manager that takes control of part of the file namespace to make information available to interested processes:

For more information, see the PPS Developer's Guide in the online documentation.

What's new: Licensing

QNX SDP 6.5.0 introduces a new licensing scheme:

Once you've installed the QNX Software Development Platform, you can find all the license agreements in base_dir/install/qnxsdp/6.5.0, where base_dir is where you installed SDP (see the output from the qconfig command).

For more information about license agreements, see the Licensing area of http://www.qnx.com, or email .

What's new: Installing and booting

What's new: Startup

New utilities include:

pci-bios-v2
Provide support for the PCI BIOS and Message Signaled Interrupts (MSI). (Ref# 69146, 74069)
startup-apic
Startup for Intel Advanced Programmable Interrupt Controller (APIC) systems (Ref# 69146, 74069)

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

What's new: Core networking

As part of the update to BIND 9.6.1-P2 (see What's new: Security,” below), we now support:

dnssec-dsfromkey
DNSSEC Delegation Signer resource record generation tool
dnssec-keyfromlabel
DNSSEC key generation tool

Other changes include the following:

dhcp.client
fs-cifs
The behavior of pwrite() is now consistent with that on other Neutrino filesystems. If you open a file with O_APPEND, pwrite() now writes the data at the offset supplied, instead of at the end of the file. (Ref# 38576)
io-pkt-v4, io-pkt-v4-hc, io-pkt-v6-hc
There's a new TCP/IP pkt_typed_mem option that you can use to specify a typed memory object to allocate packet buffers from. (Ref# 73666, 74355)
SSH suite
OpenSSL
We now use OpenSSL version 0.9.8m. For more information, see http://www.openssl.org/. (Ref# 74597)
pppd
If you use pppd with a serial port, io-pkt no longer becomes reply-blocked. (Ref# 50977, 68456)

What's new: Filesystems

io-blk.so redesign

We've redesigned the buffer cache subsystem of io-blk.so, in order to improve performance. The main changes include:

Performance gains were measured on all platforms: on desktop x86 systems, where the bottleneck was the device, the same throughput is observed but using less CPU load (e.g. 10-25%); on low-end ARM systems, where the bottleneck was OS and memory overheads, the same CPU load achieves greater filesystem throughput (e.g. 2-10 MB/s). Larger cache granularity may require more cache to be allocated at the lower-end (reduced hit density during random operations) although this is mitigated by lower control/overheads (same overall usage).

As a result of this redesign, the following options to io-blk.so are no longer supported:

The following options are new:

Other changes include:

(Ref# 69116, 69788, 72369, 74621, 75622)

Other filesystem changes

Other changes to the filesystems include:

etfsctl
This utility has several new options: (Ref# 68671, 68705, 68911, 69178, 70467)
fs-dos.so
The fatchk option is no longer supported. (Ref# 69116, 74719)
fs-qnx6.so
We've changed the ignore value for the sync option to none, in order to make its meaning clearer. If you specify sync=none, the filesystem never issues a synchronization command to the disk, and doesn't drain dirty blocks from the filesystem cache (until an explicit umount). The filesystem still supports the ignore value too. (Ref# 54873, 72991)
fs-udf.so
New options include:

The blacklist for the verify option now includes some bad ISO9660:1999 SVD-mastering utilities.

What's new: Graphics

Advanced Graphics

New features include:

gf-calib
There's a new -g option that lets you specify the GFI input group to attach to. (Ref# 70808, 74360)
gf_dev_info_t
The flags member of this structure now supports a bit called GF_DEV_FLUSHRECT_DRVR. If this bit is set, the device driver uses a flushrect callout for modifying the framebuffer before presenting it to the display. (Ref# 68743)
gf_surface_get_dev()
Get the handle of the graphics device currently targeted by a surface (Ref# 69915)

Other changes include:

gf_draw_finish(), gf_draw_flush()
Improvements have been made to these functions with respect to drivers that don't require layer_flushrect() updates. If your applications is linked statically against libgf.a, we strongly recommend that you relink your application. (Ref# 68760)

Composition Manager

After 6.5.0, QNX Composition Manager will no longer be included as part of QNX SDP. The current version of QNX Composition Manager will be deprecated. A replacement product will be provided as part of a separate product suite called QNX Screen.

gles1-egl-gears, gles1-kd-gears
These demos no longer support the rotation option. (Ref# 73537)

Photon microGUI

New features include:

Rotating the display
Display rotation is again available in the Photon environment. Available rotations are 90, 180, and 270 degrees. You can rotate the display by using a “phook” module (DLL) loaded by io-graphics. You can add a phook statement to the display.conf configuration file, in the appropriate driver's photon section, as follows:
phook=ph-rotate-*.so
  

where * is 90, 180, or 270.

There's a new -C command-line option for io-graphics that causes all client-side surfaces to be allocated for CPU Fast Access. This is important in a system that will use a rotation module, since access to the framebuffer is required, and without this option, access will be made over the bus, introducing serious latency.

There's also a new -L option for io-graphics that forces a PHOOK module to initialize, even if the GPU driver was written with non-linear framebuffer access.

If you're using the ph script to start Photon, you can easily apply this option before Photon is started, by overriding the PHGFX environment variable like this:

  export PHGFX="/usr/photon/bin/io-graphics -C"
  

To load a hook module “on the fly”, use the new PgPHookRegister() function. No surface or layer data is lost during the installation of a hook module. (Ref# 57091, 72066)

PxRotateImage()
Rotate an image by 90, 180, or 270 degrees. (Ref# 37475, 69235)

Other changes include:

pwmopts
The Using the Photon microGUI chapter of the Neutrino User's Guide and the entry for pwmopts in the Utilities Reference now correctly refer to wframe_updated.so, instead of wframe_update.so. (Ref# 65310)
Arcs, Bézier curves, and ellipses
The plotting of these curves is more precise, resulting in smoother lines. (Ref# 58277)
io-graphics
There's a new -a option that enables anti-aliasing on polylines (currently only for diagonal lines of width 1). This anti-aliasing is only for CRT or LCD (video) targets, not printer targets. (Ref# 72316, 72540; Ticket ID 89891)
PgLayerCaps_t

(Ref# 69322, 69235)

PhAB
In earlier versions of PhAB, the image-loading library converted all JPEGs to palettized image formats. All 24-bits-per-pixel images without a palette were converted to 8-bits-per-pixel images with a 256-color palette.

As of QNX SDP 6.5.0, the PhAB image library no longer converts JPEGS to palettized images. If you wish to edit a JPEG using PhAB, you must first convert it to a palettized image (such as a GIF) using an external image-editing utility. (Ref# 68393, 68427; Ticket ID 88275)

What's new: Libraries and header files

New functions include:

getpagesizes(), getpagesizes64()
Get the available page sizes (Ref# 71950, 72363)
getpeereid()
Get the effective credentials of a UNIX-domain peer (Ref# 69495, 71214)
glob()
GLOB_QUOTE is now the default for this function, as specified by POSIX. To revert to the former behavior, specify the POSIX GLOB_NOESCAPE flag.

This function also supports the following flags, which are NetBSD extensions:

(Ref# 74975, 75625)

pthread_mutex_timedlock_monotonic(), pthread_timedjoin_monotonic(), sem_timedwait_monotonic()
These functions are similar to pthread_mutex_timedlock(), pthread_timedjoin(), and sem_timedwait(), but they use CLOCK_MONOTONIC, so the timeout isn't affected by changes to the system time. (Ref# 65150, 71587; Ticket ID 86978)
pthread_mutex_wakeup_np(), pthread_mutexattr_getwakeup_np(), pthread_mutexattr_setwakeup_np()
These functions make it possible for you to unblock threads that are waiting on a mutex. The “np” in these functions' names stands for “non-POSIX.”

In order to make it possible to do this, we've appropriated the list field of iofunc_attr_t. Since it was marked as being reserved, this should be no problem, but if you were using this for your own semantics, then you'll have to make sure that you install your own attribute-locking routines. (Ref# 48722, 71135, 71244)

Other changes include:

asyncmsg_*()
We've corrected various bugs in asynchronous messaging (although it remains experimental, is deprecated, and will be removed in a future release).

Note: If your application uses the .a versions of the libasyncmsg library, you must relink it, or else it will hang when used with the new kernel. If your application uses the .so versions of the library, you don't have to relink it.

asyncmsg_channel_create()
This function and the callback that it registers now both have an extra argument that points to arbitrary data that you want to pass to the callback. (Ref# 52348, 69784)

Note: You'll need to update and recompile any code that calls this function.

daemon()
The High Availability Manager now automatically switches to monitoring the new process that daemon() creates, if the original process was a self-attached entity. (Ref# 52131, 71920; Ticket ID 80845)
devctlv()
This function, which is similar to devctl() but uses I/O vectors, is now documented and supported. (Ref# 38751)
dlopen()
RTLD_LAZY is now implemented. For details about it, see “Lazy loading” in the Compiling and Debugging chapter of the QNX Neutrino Programmer's Guide. (Ref# 69098, 69752)
InterruptMask(), InterruptUnmask()
These functions now give an error of ESRCH if the ID parameter isn't something returned by InterruptAttach() or InterruptAttachEvent() respectively, or -1. (Ref# 67694)
ioctl(), ioctl_socket()
We've made ioctl() compatible with other UNIX-based systems by enabling support for embedded pointers. This means that you no longer have to change calls to ioctl() into calls to ioctl_socket() in networking applications, although ioctl_socket() does provide optimized handling for some socket commands.

As a result of this change, ioctl() can now indicate an error of ENOBUFS if there isn't enough memory available to copy the data that the embedded pointers refer to. (Ref# 59556, 71066)

thread_pool_attr_t
This structure now has a tid_name entry that you can use to specify a name to use for the threads in the pool. For more information, see the entry for thread_pool_create() in the QNX Neutrino Library Reference. (Ref# 73635, 73823)

What's new: Drivers

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

The audio libraries now support:

For more information, see the Audio Developer's Guide.

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

New drivers:

devb-loopback
A pseudo block driver that provides a mapping between an arbitrary file descriptor and the block API, allowing any resource manager to be used to host a disk filesystem.

Other changes:

devb-fdc
devb-fdc, devb-ram
Because of updates to io-blk.so, the minimum disk buffer cache is now 512 KB. (Ref# 69116, 69788, 72369)

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

devc-pty
The pseudo-tty manager can now support up to 256 ptys, using the naming scheme:

(Ref# 73847, 75536)

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

The new drivers include:

devg-intelhd.so
Graphics driver for Intel GMA HD graphics (Ref# 76277, 77353)

Other changes include:

devg-flat.so
The memopts option now specifies the name of the configuration file for this driver. This file includes the options that you formerly set with the memopts option, along with a bigendian option that tells the driver that the memory is byte-swapped. (Ref# 70110, 75643)
devg-i830.so
If you use direct mode with the devg-i830.so driver, images now all appear correctly on the display. (Ref# 61008, 63977)

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

The new drivers include:

devh-microtouch.so
Driver for Microtouch EXII USB touch devices (Ref# 47435, 75402)

Other changes include:

devh-egalax.so
The following options are new:

If you're using this driver with the USB (devh-usb.so) module, you must specify the igndev option to devh-usb.so, specifying the Egalax vendor and device IDs. (Ref# 74940, 75400)

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

The new drivers include:

devnp-bce.so
Driver for Broadcom BCM440x 10/100 Ethernet controllers (Ref# 72462, 76017)
devnp-i80579.so
Driver for Intel Tolapai 80579 Gigabit Ethernet controllers (Ref# 72206, 75462)

We've also addressed the following:

devn-asix.so
devn-micrel8841.so
The documentation now points out that this driver supports only PCI versions of the Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers. (Ref# 67333)
devnp-bcm1250.so, devnp-e1000.so, devnp-mpc85xx.so, devnp-rtl8169.so, devnp-speedo.so
These drivers no longer accept the promiscuous option because promiscuous mode is controlled by the stack itself. To enable promiscuous mode, use a BIOCPROMISC ioctl() command; there's currently no way to do this from the command line. (Ref# 71463)

What's new: Documentation

System Analysis Toolkit
We've updated and expanded the System Analysis Toolkit User's Guide. It now includes more information about events and their classes, controlling tracing via tracelogger and TraceEvent(), interpreting the trace data, and lists the data for all events in both fast and wide modes. (Ref# 25473, 29638, 29639, 38156, 44463, 68988)
QNX Neutrino Technotes
We've added the following technotes:

The What Time is It? technote is now part of the Tick, Tock: Understanding the Neutrino Microkernel's Concept of Time chapter of the QNX Neutrino Programmer's Guide. (Ref# 71500)

QNX Neutrino Programmer's Guide
There's now an appendix that explains how QNX Neutrino conforms to POSIX. It also includes a list of non-POSIX functions with POSIX-sounding names. (Ref# 69783)
Building Embedded Systems
The documentation now mentions 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)

QNX Neutrino User's Guide
The “Video cards” section of the Connecting Hardware chapter contains updated information about configuring multiple displays and about manually configuring your video card. (Ref# 63064)
QNX Neutrino Library Reference
The changes include:
ChannelCreate()
We've added some sample code that you can use to check for stale _PULSE_CODE_COIDDEATH pulses. (Ref# 18264)
ConnectServerInfo()
We've documented the flags field of the _server_info structure.

If the info argument is NULL, ConnectServerInfo() ignores connections with dead servers and skips to the next coid. If info is non-NULL, the function fills in the _server_info structure; for connections with dead servers, it turns on the _NTO_COF_DEAD bit in the flags field of the structure. (Ref# 18264)

inbe16(), inle16(), inbe32(), inle32()
Note that these macros access the specified port more than once if endian conversion is necessary. This could be a problem on some hardware. (Ref# 73879)
pthread_setname_np()
This function gives an error of EBUSY when you're trying to name a thread other than the calling thread, and another program already has write access to the process's entry in the /proc filesystem. For more information, see the entry for pthread_setname_np() in the QNX Neutrino Library Reference. (Ref# 73930)
spawn(), spawnp()
We've added more details about working with the fd_count and fd_map arguments to set up the file descriptors in the child process; see “Mapping file descriptors” in the entry for spawn() in the QNX Neutrino Library Reference. (Ref# 25715, 69655)
shutdown_system()
You can use this function to shut down the system, customizing the function by providing your own callouts:
  • shutdown_classify()
  • shutdown_display()
  • shutdown_done()
  • shutdown_error()
  • shutdown_process()
  • shutdown_progress()
  • shutdown_prompt()

(as the shutdown and phshutdown utilities do) to override the default behavior. (Ref# 67819)

trace_func_enter(), trace_func_exit(), trace_here(), trace_logb(), trace_logbc(), trace_logf(), trace_logi(), trace_nlogf(), trace_vnlogf()
The QNX Neutrino Library Reference now includes entries for these functions, which provide convenient ways for you to insert trace events into the data collected by the instrumented kernel. (Ref# 69991)

See also the “What's New” appendix in the QNX Neutrino Library Reference.

Utilities Reference
The changes include:
applypatch
The entry in the Utilities Reference now has the correct instructions for invoking this command. (Ref# 68568)
mkifs
We've documented the phys_align attribute, which you can use to specify the physical alignment of objects. This attribute overrides the new big_pages attribute (see What's new: Compiler, tools, and utilities). (Ref# 52435, 71815)
startup-*
We've described the generic and architecture-specific options for startup programs. (Ref# 74069)

Note: Individual startup programs can override these options and may support additional board-specific options. The order of precedence is as follows:
  1. board-specific options
  2. architecture-specific options
  3. generic options

See also the “What's New” appendix in the Utilities Reference.

What's new: I/O devices

What's new: Security

This release addresses the following security concerns:

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

For more details, see the following sections:

What's new: Compiler, tools, and utilities

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

We've also implemented lazy binding, RTLD_LAZY, and lazy loading; For more information, see the Compiling and Debugging chapter of the QNX Neutrino Programmer's Guide. (Ref# 69098, 69752)

New utilities include:

mkcldr
This utility converts standard CLDR (Common Locale Data Repository) language collation (or sort order) tables into a format usable by the libqdb_cldr.so DLL. For more information, see the entry for mkcldr in the Utilities Reference, as well as Customizing language sort orders for libqdb_cldr.so in the QNX Neutrino Technotes.
sysinfo
A script that QNX Technical Support might ask you to use to gather system information for troubleshooting purposes (Ref# 69320, 75634)
uptime
Display the length of time that the system has been running (Ref# 76091, 76240)

Other changes include:

applypatch
By default, applypatch now installs the host-side files only for the current host OS. There's a new -H option that makes applypatch install the host-side files for all host OSs. (Ref# 69926, 72362)
cp
We've renamed the -n option to be -u, to be consistent with other platforms. The -n option is still recognized. (Ref# 57828, 74887; Ticket ID 83753)
cut
This utility now supports the POSIX -b and -n options. (Ref# 71737, 71738)
gdb
If you start it from the command line on a self-hosted QNX Neutrino system, gdb sets LD_BIND_NOW to 1 to force the loading of all lazy-load dependencies. (Ref# 75695)
head
In order to conform to POSIX, we've changed the -n option so that it always specifies the number of lines to copy. The -c option now takes an argument that specifies the number of bytes to copy. Note that the -c and -l options are QNX Neutrino extensions. (Ref# 65661, 65662)
ksh
We've brought in some bug fixes from NetBSD:

(Ref# 72014)

link
We now ship only the POSIX version of this utility, which creates a hard link instead of a symbolic one. (Ref# 75830, 75831)
mkefs, mketfs
These utilities now support a mountperms attribute that you can use in a buildfile to specify the permissions to use for mountpoints. The default permissions are 0777 for mkefs, and 0755 for mketfs. (Ref# 64471, 71487)
mkifs
This utility supports the following new attributes:

You can specify these attributes in the buildfile or in the bootfile. (Ref 71850, 71961)

We've updated the bootfiles for ARM targets to include the big_pages and pagesizes attributes. (Ref# 71962)

Other changes include:

pdebug
This utility has a new -n option that you can use to adjust the debugged program's priority to be lower than pdebug's. Doing this can keep pdebug from becoming unresponsive if the debugged process misbehaves (e.g. looping in a tight loop taking lots of CPU time).

The usage message and documentation now include the following options:

-1
(“One”) Exit pdebug after the debugging session is done.
-f
Run pdebug as a foreground process.

(Ref# 69794, 69803)

By default, pdebug sets LD_BIND_NOW to 1 to force the loading of all lazy-load dependencies. You can prevent pdebug from setting LD_BIND_NOW by specifying the -l (“el”) option. (Ref# 75695)

sleep
As a QNX Neutrino extension, the time argument can be a floating point number, so you can specify fractions of seconds. For POSIX conformance, time must be an integer. (Ref# 71599, 73908)
unzip, unzip
We've updated zip to Info-Zip version 3.0, and unzip to version 6.0. These versions provide large file support. (Ref# 70772, 76915; Ticket ID 89505)

What's new: Integrated Development Environment

The QNX Momentics Tool Suite 6.5.0 includes version 4.7 of the IDE, which includes the following new features:

The website for updates and maintenance releases — which you access via Help-->Check for Updates in the IDE — is https://www.qnx.com/account/updates/ide/4.7/.

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

Debugging information for shipped binaries

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

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

What it means to you:

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

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

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

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

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

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

Discontinued items

The following items will be removed from the next release of QNX SDP and will become part of a separate product:


Note: The Web Browser Engine in 6.5.0 doesn't include any ARMv7 binaries.

We've deprecated the CMU version of SNMP that's currently included in QNX SDP, and we'll remove it from the next release. We recommend that you use NuDesign's SNMP instead. For more information, see the Partners area of our website. (Ref# 70524)

Starting with this release, graphics drivers for chipsets that have been out of production for five years will be deprecated. Where possible, the source code for these graphics drivers will be posted on Foundry27.

The following graphics drivers have been deprecated and will be removed from the next release (Ref# 77562):

Experimental items


Caution: Experimental software is primarily provided for customers and the community to try out, and perhaps to get a glimpse of what might be in store for the future. For information about the use of experimental software, see the Commercial Software License Agreement (CSLA) or Partner Software License Agreement (PSLA) in the Licensing area of our website, http://www.qnx.com/legal/licensing/.

The experimental items in QNX SDP 6.5.0 are:

Known issues

QNX SDP 6.5.0 contains known issues in these areas:


Note: We're actively investigating all known issues.

Known issues: Installing and uninstalling

Known issues: Kernel

procnto
procnto-smp
Some multiprocessor systems, such as the Power Book E and the ARM Cortex-A9 MPCORE, have an interrupt controller on each processor, but QNX Neutrino currently assumes there's only one controller. Unmasking an interrupt on one processor may leave it masked on other processors. (Ref# 60301)

Workaround: Bind all threads that mask and unmask interrupts so that the threads run only on CPU 0.

ARMv7 Cortex Processors
At the time of release, the feature to generate NEON instructions wasn't tested on Cortex-A9 because there are currently no Cortex-A9 implementations with a Neon unit. As a result, the feature is available on an “as is” basis.

Known issues: Libraries and header files

fork()
Unnamed semaphores aren't inherited across a fork() (Ref# 59947, 73710)
fpemu.so.2
This library causes some problems on x86 targets if it's compiled with gcc 4 with optimization above -O0. To avoid these problems, we've compiled the DLL with -O0 optimization for x86. (Ref# 55883)
libxml.a
This library is a Neutrino interface to version 1.1 of the Expat XML Parser, but it isn't documented. For information about this library, see <xmlparse.h> and <xmltok.h> in $QNX_TARGET/usr/include. (Ref# 56140)
posix_spawn()
In the current implementation, posix_spawn() can indicate an error of EMSGSIZE. This is most likely the result of attempting to operate on too many file descriptors in the posix_spawn_file_actions_t object passed to posix_spawn() or posix_spawnp() and/or an overly large environment variable list (either through inheritance by passing NULL for the envp parameter to posix_spawn() or posix_spawnp() or by explicitly providing an overly large envp parameter). (Ref# 75606)

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

shm_ctl(), shm_ctl_special()
If an error occurs, these functions set errno to ENOSYS (not EINVAL as documented). They should provide better diagnostics. (Ref# 26440)
ThreadCreate()
This function doesn't check the priority range when PTHREAD_EXPLICIT_SCHED is set. For example, if you use the on command while logged in as a non-root user, and you specify a priority greater than 64, on still executes the command but at the priority of the calling shell. It should give an error saying you don't have permission to create at that priority. (Ref# 28763)
Time zones
QNX Neutrino uses a nonstandard method of defining time zones that's difficult to keep up to date. We plan to replace it in a later release. (Ref# 44425)

Known issues: Filesystems

io-fs-media
On ARM platforms, you can't use an io-fs-media share to store a directory structure with more than 16 MB of data. (Ref# 56601)
chkfsys
If you send a SIGTERM or SIGKILL signal to a devb-* driver, chkfsys might subsequently find errors on the filesystem. (Ref# 48741, 48764, 48765)
fs-ext2.so
If you try to delete a linked file or directory in a Linux Ext2 filesystem, you get a “Corrupted file system detected” error. (Ref# 50264)
fs-qnx6.so
The io-blk manager lets you mount a filesystem in a file. To do this, you basically create a normal file on a disk, and then format it (via dinit, mkqnx6fs, mkdosfs, etc.), as a filesystem. You can then run a command, such as:
mount -tqnx4 /home/myfs.img /fs/test
  

and you'll get a mountpoint called /fs/test, which is the size of the file and is formatted as a QNX 4 filesystem.

If you used fs-qnx6.so as the real filesystem on the hardware, and then created a QNX 4 or DOS filesystem inside a file residing on the Power-Safe filesystem, the host filesystem formerly could become damaged by the modifications to the hosted filesystem. We've fixed that, but the host filesystem might not be able to confer full power-loss safety to the (by design) not power-loss-safe QNX 4 or DOS filesystem. (Ref# 74580)

mount
If you specify a flag such as noatime on a block filesystem, and then you remount the filesystem (mount -u), the flag is ignored. The absence of the flag is interpreted as your asking for access time updates to be turned on. There's no way for the code in io-blk to determine if you wanted to use the default, and therefore didn't specify anything, or really did want access time updates to be turned on, and therefore didn't specify anything. (Ref# 77323)

Workaround: Specify the flags again using the -o option for the mount command. For example:

mount -u -o noatime ...
  

Known issues: Startup

Known issues: Adaptive partitioning

Known issues: Booting

Known issues: BSPs and DDKs

Known issues: Compiler, tools, and utilities

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

(Ref# 62242)

ld
pidin
If the first page of a memory-mapped object is written to, pidin might display /dev/zero instead of the object's name. (Ref# 43050)
traceprinter
When a kernel call fails, the instrumentation records the errno value. However, if you use traceprinter on the .kev file in a cross-endian environment (e.g. the .kev file was generated on big-endian, and you're running traceprinter on little), the errno value that gets printed isn't swapped before being displayed. For example, an EFAULT is displayed as 0xe0000000 rather than 0xe. (Ref# 76429)

Known issues: Device drivers

Audio device drivers (deva-*)

Block-oriented drivers (devb-*)

devb-adpu320
Reading DVD-RAM causes devb-adpu320 to become blocked on a CONDVAR. (Ref# 19772)
devb-aha8
You can't restart this driver on IBM PPC405 boards. (Ref# 16018)
devb-eide

Graphics drivers (devg-*)

Human interface device drivers (devh-*)

devh-egalax.so
This driver currently doesn't work. (Ref# 74940)
devh-usb.so

Network drivers (devn-*, devnp-*)

devn-asix.so
This driver doesn't support the 1000 MB/s interface of the Linksys Gigabit USB Adapter (model no. USB1000). (Ref# 38115)

Workaround: Force the driver to use speed and duplex settings that it supports (10 and 100 Mbit/s).

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

devnp-ath.so, devnp-bcm43xx.so, devnp-ral.so, devnp-rum.so
The documentation should say that you must use io-pkt-v4-hc or io-pkt-v6-hc with these drivers (io-pkt-v4 doesn't support Wi-Fi). (Ref# 77970)
devnp-i82544.so
The io-pkt driver for the Intel i82544 doesn't support dual-port cards (did=0x1010). (Ref# 44299)

USB drivers (devu-*)

Flash filesystems & embedding

Known issues: IDE

The IDE contains the following known issues:

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

Known issues: General

Known issues: Application Profiler perspective

Known issues: System Profiler perspective

Known issues: Memory Analysis perspective

Known issues: System Information perspective

Known issues: System Builder perspective

Known issues: C/C++ development

Known issues: Team/CVS

Known issues: Debugging

Known issues: Documentation

Known issues: Instant Device Activation

Known issues: I/O devices

io-usb

Known issues: Multimedia

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

Known issues: Networking

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

ifconfig iface_name up
ifconfig iface_name scan

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

Workaround: Combine the commands:

ifconfig iface_name up scan

lsm-qnet.so
fs-cifs
fs-nfs2
fs-nfs2, fs-nfs3
gns
io-pkt*
The stack might send zero-length mbufs to a driver for transmission. (Ref# 44621)

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

nfsd
nfsd lets you access files only up to 16 subdirectory levels deep within the directory exported in the /etc/exports file. Deeper directory levels and files aren't accessible. (Ref# 40104)
ntpd
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)
TCP/IP (part of io-pkt)

Known issues: Graphics

Advanced Graphics

libimg
An internal structure exchanged between libimg and the image codecs changed after we released version 2.0 of the Advanced Graphics TDK. Applications compiled and linked statically against the earlier versions of imglib.a might not function properly, especially while decoding JPEG images. (Ref# 48003, 56557)

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

Blitting
The Advanced Graphics libffb library doesn't support blitting to a PAL8 surface from a non-PAL8 surface. Therefore, Pg_IMAGE_PALETTE_BYTE offscreen contexts can be blitted to and from only offscreen contexts of the same type. (Ref# 20391)

Changing modes or stopping and then restarting graphics
When changing modes or stopping and then restarting graphics using devg-i830.so, the machine might enter a bad state and power down. (Ref# 74803)

Workaround: Do the following:

  1. Boot into safe mode (during the boot process, press Space, press F1 for Safe Mode, and then press F3 so that Photon doesn't start).
  2. Edit the file /etc/system/config/display.conf and set drivername=i830, set resolution values for xres and yres, and then set a refresh rate value for refresh.

    For more information about display.conf, see io-display in the Utilities Reference.

  3. slay and then restart io-display:
    slay io-display

    and then at the prompt type:

    io-display -dvid=0x8086,did=MypciDeviceID

    where MypciDeviceID is the PCI device ID for your specific device.

  4. Start Photon (use the ph script).

Photon microGUI

ARMv7
Photon isn't supported on ARMv7 targets.
Arcs, Bézier curves, and ellipses
The default line joint is a miter, which doesn't produce good results for these curves, and — contrary to what the documentation says — the setting of the line joint is ignored if you use stroked arcs or stroked ellipses. Using PgSetStrokeJoin(Pg_BEVEL_JOIN) may give smoother results once this issue is resolved. (Ref# 58185)
Dual-head displays
On systems with a dual-head display and screens set up to display different portions of the logical desktop, some convenience functions — such as PtFileSelection() and PtNotice() — are always constrained to the first screen. (Ref# 59614)
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
PhAB for Windows

Known issues: Persistent Publish/Subscribe

Known issues: System Analysis Toolkit

Known issues: Host-specific

Windows hosts

Coexistence on Windows 7
Although 6.5.0 is the first version of QNX SDP that's supported on Windows 7, you should be able to install and use earlier versions. However, if you try to change the current version of the tools (via the QWinCfg utility or the Configuration menu item), QWinCfg will display a dialog that says you can't save any changes because you aren't an administrator. This is because of changes to the User Account Control (UAC) system on Windows 7. (Ref# 69243)

Workaround: Do the following:

  1. Start a command prompt.
  2. Run the ksh command.
  3. Type qconfig to get the installation name of the required configuration.
  4. Run the following command, specifying the installation name:

    eval `qconfig -n "Installation_name" -e`

    For example, to switch to 6.3.2, run this command:

    eval `qconfig -n "QNX Momentics Development Suite 6.3.2" -e`
        
IDE
The following issues apply to the Windows-hosted version of the IDE:
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:

echo.exe
On Windows, the QNX-provided echo.exe interprets the Windows \ separator as an escape character. As a result, environment variable settings won't work if you use \ as a path separator; use / instead. (Ref# 19924)
MAKEFLAGS
Microsoft Visual Studio also uses the MAKEFLAGS environment variable, but in a much different way than QNX Neutrino does. The result is that Microsoft Visual Studio no longer works after you've installed QNX Momentics.

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

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

    set MAKEFLAGS=saved_makeflags_value

sh, ksh
Because of the way that the MSYS versions of the shell manipulate the environment variable, PATH doesn't appear to include $QNX_HOST/usr/bin, but it does. (Ref# 59412)
User Account Control (UAC)
Windows Vista and Windows 7 include an account policy, called User Account Control (UAC), that impacts various administrative features, such as being able to create and store files in a temporary directory (tmp). This directory is used by various applications, such as CVS and the split command, and various Photon applications. To successfully run these applications on a computer running Windows Vista or Windows 7, you must have administrator privileges and disable UAC. (Ref# 44027)

In order to install or use Automated License Management, you must have logged in as an administrator and disable UAC. (Ref# 77791)

Workaround: To disable UAC on your Windows Vista configuration:

  1. Launch MSCONFIG by from the Run menu. (When you click on the launch button — the one with the windows logo commonly in the bottom left corner — the Run menu is an editable text bar with the string Start Search. Type msconfig and then press Enter.)
  2. Click on the Tools tab. Scroll down until you find Disable UAC, and then click that line.
  3. Press the Launch button.
  4. A cmd window will open. When the command is done, you can close the window.
  5. Close msconfig, and then restart your computer.

You can reenable User Account Control by selecting the Enable UAC line and then clicking the Launch button.


Caution: Disabling UAC bypasses some security features.

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

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

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

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

ctags

Linux hosts

Installers
The installers can't update the Gnome menu on some distributions of Linux. (Ref# 48770)
Activation
IDE

Known issues: Web browsers

Bon Echo

Getting started with the documentation

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

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


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

Technical support

To obtain technical support for any QNX product, visit the Support 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.5.0 include the following:

Software fixes

Change Ref#
The strtol() now correctly parses whitespace in the given string; it now rejects strings in which whitespace appears between the sign and the number. (Ticket ID 00102345) 77187
The devg-i810.so graphics driver now includes a workaround for Intel Errata concerning draw command ring-buffer that could lead to driver lockup on some systems. 76200
The img_load_resize_file() function no longer inverts BMP images. (Case# 101717) 75766
In certain cases, with unaligned clusters on DOS, partial cluster updates could be lost. This has been fixed. 75712
We've fixed certain cases in the IDE where the common.mk file for a QNX Project was corrupted when the properties were saved. (Ticket ID 67456) 75694
wint_t is now declared in the correct C++ namespace. 75647
HAM no longer generates duplicate pulse notifications when you register for both CONDDEATH (which is a superset of CONDDEATH and CONDABNORMALDEATH) and CONDABNORMALDEATH separately. 75380
When thread dies during debugging, the IDE's debugger no longer shows it in the thread list as a duplicate of the previous thread; it's now removed from the list. (Ticket ID 101323) 75273
In the IDE, if you profile a process where multiple threads call the same function, the samples are now assigned to the correct threads. 75186
GLOB_QUOTE is now the default for glob(), as per POSIX. To revert to the former behavior, specify the POSIX GLOB_NOESCAPE flag. 74975
Graphics support for the Intel G35 chipset has been added to devg-i830.so. 74926
Some systems have been found to lock up when using the vsync interrupt for devg-radeon.so. The default behavior of the driver has been changed to poll for vsync.(This was the behavior prior to 6.4.0) A new driver option has been added to allow a user to try to use the vsync interrupt; set use_irq=1 in radeon.conf. 74853
Hardware cursor support has been fixed for the Dell Latitude E5x00. The devg-i830.so driver also restores settings correctly on exit to properly return to the previous graphics mode. 74817
A removable media relearn race condition was corrected. 74723
In a multithreaded application, where one thread is a resmgr thread and another thread calls resmgr_detach(_RESMGR_DETACH_CLOSE), the resmgr thread no longer gets stuck waiting on condvar. 74691
We've updated to OpenSSL version 0.9.8m, which addresses an issue with the SSL 3.0+ and TLS 1.0+ protocols that made them vulnerable to a set of related attacks that allow a man-in-the-middle (MITM) operating at or below the TCP layer to inject a chosen plaintext prefix into the encrypted data stream, often without detection by either end of the connection. (VU#120154) 74597
We've increased the default timeout that devb-umass uses for its initial SCSI inquiry, so that the device has enough time to respond. 74501
Mounting a QNX 4 or DOS filesystem on top of a Power-Safe filesystem (fs-qnx6.so) partition no longer corrupts the Power-Safe filesystem partition. 74495
Breakpoints on constructors and some other C++ methods can cause the IDE's debugger to insert multiple breakpoints per location. These breakpoints are now displayed correctly in the Breakpoints view. (Ticket ID 101196) 74430
The resource manager io-blk would crash when calling xpt_bus_deregister() during eject. This has been fixed. (Case# 100869) 74385
If a low priority thread (Thread A) holds a mutex, and thread A is SEND/RECEIVE blocked on a thread (Thread B), while a high priority thread (Thread C) is waiting on the mutex from Thread A, the priority (from Thread C) is now propagated to both Thread A AND Thread B (note: when the priority is propagated to Thread B, both the current priority and actual priority of the thread change). 74248
Unplugging a USB cable while any process had /dev/serusbX device nodes open caused a memory leak. This has been fixed. 74077
If the _NTO_CHF_GLOBAL flag is set on a channel, and MsgSend() returns success without blocking, the timeout is now correctly cleared. 74017
The mtu command line option for the pppd utility now works as expected. 73775
We've resolved a problem that existed with the vmm_map_xfer() function special-casing xfer_diff()/xfer_prp() based only on the first iov. A multi-iov transfer (where some iovs specify normal user addresses but others specify global addresses) now work correctly. An adjustment was made to the iov base on on individual basis, and the cpu_vmm_fault() handler now checks whether xfer_diff() applies to the faulting address. 73614
The filesystem relearning/remounting activity is now properly locked with respect to client operations. 73586
We've updated the low-level atomicity GCC functions so that they no longer use spinlocks, which failed under certain circumstances (Ticket ID 89892) 73495
A race condition was causing an inconsistent mutex state. This has been fixed. 73428
In calib, the default region size has been increased to support 16-bit touchscreen devices. 73426
We've corrected a problem with Code Coverage in the IDE that caused an internal error. 73332
The io-graphics command no longer faults if you set up your system to not display the cursor by adding cursor=none to the photon section of display.conf. 73285
We've corrected a problem with ARM global mappings that used to cause a SIGSEGV. 73208
We've corrected a problem that existed when there was a pending pthread_mutex_timedlock(), and the mutex owner no longer existed. The cleanup code entered into an infinite loop because it attempted to clear out all of the blocked entries, but instead did nothing for timed locks. We now ensure that the user code is forced out with an EOWNERDEAD error (meaning that the owner of the lock died while holding it). 73133
io-pkt threads are now properly named to better reflect their function. 73098
The macros in <cpuinline.h> use some compiler-specific extensions. We've added __extension__ to the declarations so that you can now use these macros with the -ansi and -pedantic compiler options. 73061
The io-pkt networking stack no longer crashes when you create at least three instances of pppd and then terminate them in the order in which you created them. (Case# 00100180) 73053
We've upgraded BIND to version 9.6.1.-P2 to address the Security SA37426 ISC BIND DNSSEC Cache vulnerability issue. A vulnerability was reported in ISC BIND, where a validating recursive nameserver may incorrectly cache records from the additional section of a query response. If the nameserver is authoritative-only this will not occur. The vulnerability is caused by BIND caching records from the data section of a response without proper DNSSEC verification when resolving recursive client requests with checking disabled (CD), but asking for DNSSEC records (DO). (CERT VU#418861, CVE-2009-4022) 73038
Message passing using global memory on ARMv4 targets no longer causes intermittent failures. 73036
The floating point register F0 no longer gets corrupted on multiprocessor MIPS systems. 72861
We've corrected a race condition that existed on PPC SMP targets when two threads on different CPUs simultaneously called floating point instructions. The calls used to corrupt register f0 on one of the CPUs. 72860
The socklen_t data type is now unsigned to conform with common practice. 72839
Users can now set the force flag when unmounting an io-net driver under io-pkt. 72826
The snmpd agent no longer reports incorrect interface addresses to clients. (Ticket ID 89734) 72801
When a PPP link is shut down, the close() of the TTY is now done in the context of the main io-pkt thread, instead of in the context of the TCP/IP stack thread. If the TTY manager blocks the close(), the TCP/IP stack thread no longer becomes blocked, and so can still service TCP/IP requests. 72789
You can now successfully run the devg-poulsbo.so driver with a resolution of 640x480. 72768
The fs-udfs filesystem now converts invalid filename characters to underscore characters. In addition, we've added the charset= option to allow the overriding of this behavior by specifying a character set mapping of 8-bit characters to Unicode. (Ticket ID 90422) 72722
We corrected a function, which the kernel uses internally to get information about a particular virtual address, so that it works correctly if the address space used in the request is something other than the active address space. 72699
We've addressed a denial of service vulnerability affecting any system using ntpd from xntp2 (1989), such as high CPU usage, excessive disk use due to logging, and significantly increased network traffic. (CERT VU#568372, CVE-2009-3563) 72603
Partial corruption of message data no longer occurs on the PowerPC 440EP. The corruption would take the form of some message data being zeroed. This was as a result of uninitialized memory not being completely zeroed before the message pass was performed; upon first access of the memory by the process, the data would be zeroed. The full destination message area is now fully zeroed and initialized before the message pass is performed. (Ticket ID 90399) 72554
The PPCBE C++ libraries no longer use lwsync instructions to work on E500 targets. (Ticket ID 90375) 72502
The kernel no longer crashes while flashing targets. The error was in the interrupt code generated at run time on the SH family of processors, which led to an incorrect jump if all interrupt ID routines indicated that they didn't own the interrupt; we've corrected the generated interrupt code. 72386
The io-graphics subsystem now has an -a option that enables anti-aliasing on polylines for displays (CRT/LCD).It currently applies only to diagonal lines of width 1. (Ticket ID 89891) 72316
In the IDE, if you copy data from the Application Profiler's Execution Time view to a clipboard, the data for fields that contain both data and an image is now copied correctly. 72249
Added support for getpagesizes(). This feature allows an application to optimize its usage of large pages. 71950
An exception at the wrong time on PowerPC SMP systems no longer causes messages to be truncated. (Ticket ID 88273) 71289
We've addressed a race condition in pathmgr_open(), so that a double free() can no longer occur on an open_entry(). 71287
The IDE's Problems view no longer contains stale or inaccurate information when a project contains files that are linked to files in another project. 71277
We've fixed the SERCTL devctl() to allow multi-line toggles. 71275
Recovery code was causing partition corruption. (Ticket ID 89005) 71120
In-kernel emulation of floating point load/store operations no longer crashes the kernel when multiple load/store instructions are present and cross a page boundary, and the next page's pagetable attributes are invalid. Only the current page is now assumed to be valid; upon reaching a page boundary, the emulation is completed, which means that the next page is validated before the next instruction is emulated. 71065
We've fixed the dial-on-demand feature so that pppd is notified to begin the connection procedure when a packet is sent on the interface and to clean up on disconnection. If the serial device resource manager returns 0 for a disconnected link, we now notify pppd so that it can see the link disconnection even if it isn't the session leader for the controlling terminal (i.e. it was started with the nodetach option). 71018
The io-display manager no longer constantly creates and destroys threads when more than two clients are connected. 70956
The io-display manager no longer leaks memory when more than two applications are running simultaneously. 70898
The following integer types are now defined in <sys/types.h> for System V compatibility if Unix extensions are enabled (i.e. if __EXT_UNIX_MISC is defined):

typedef unsigned short ushort
typedef unsigned int uint;
typedef unsigned long ulong;

70892
Alpha map processing for rectangles is now processed faster on non-linear access GPUs. 70526
The IDE's System Builder now uses relative paths (or variables) instead of absolute paths where possible in the search paths. (Ticket ID 89203) 70401
Slinger now provides the correct MIME types for cascading style sheets and Javascript files. 70351
If you export the bin and band events from the IDE's Memory Analysis, the data is now sorted by event ID. (Ticket ID 89309) 70333
You can find the cpu_mdriver.c and mdriver.c files (used for Instant Device Activation) in $QNX_TARGET/usr/src/archives/qnx/mdriver-base.zip. 70278
tracelogger no longer causes a kernel crash when run twice in direct mapped mode. 70265
We've updated BIND to version 9.6.1-P2 to address an issue whereby the receipt of a specially-crafted dynamic update message to a zone for which the server is the master could cause BIND 9 servers to exit. (VU#725188; CVE-2009-0696) 70243
The wave utility now correctly checks the value returned by snd_pcm_plugin_set_disable(). We've also incorporated the updated source code in the Audio Developer's Guide. 70219
The devg-flat.so driver now has a configuration file. One of the options in it lets you indicate that the memory is byte-swapped, so that the driver will run properly on a big-endian system. 70110
The io-pkt manager no longer misses some interrupt events. 70093
We've corrected an internal function such that calling (for example) chdir( "/") no longer causes memory corruption in the caller's address space. 69961
The devg-flat.so driver is now functional in 6.5.0 (Ticket ID 88856) 69792
You can now set the tracing mode to fast or wide for specific events in the _NTO_TRACE_THREAD class. You can also do this for events in the _NTO_TRACE_PROCESS and _NTO_TRACE_VTHREAD classes, but there's currently no difference between the data for fast and wide mode for these classes. 69613
Signal delivery while the thread stack is unmapped will no longer cause a kernel crash. 69586
The size of the read buffer was increased to 32 KB in devf to improve the file reading throughput. 69578
Board-specific startup code using the interrupt_id_dec(), interrupt_id_dec_smp(), or interrupt_eoi_dec() callouts must now have the INTR_GENFLAG_LOAD_SYSPAGE flag specified in the genflags field of the intrinfo_entry structure. 69528
The kernel no longer crashes when there are two threads blocked on a channel -- the first one being a local thread, the second being a remote thread -- and you destroy the channel. 69500
The correct Pg_LAYER_FORMAT_* value is now returned in the PgLayerCaps_t format member. 69322
In the IDE, you can now disable a builder for a QNX Project. 69291
In the IDE's System Profiler, it is now possible to have two or more editors operating independently of each other based on the filters selection. 69249
OTF (OpenType Font) types are supported now. Users should discontinue using T2K-fm and T2K-cache libraries as they have been merged into the T2K library.

The T2K_BorderFilerParams structure has changed. The R,G,B members have been renamed into Red, Green, Blue respectively.

69112
You can now set the source viewport of a layer (for panning/scrolling) in devg-gma9xx.so. 69038
PpPrintWidget() no longer faults when reading a file into a stack buffer. (Ticket ID 88599) 68995
Threads are no longer left in the STOPPED state when a process dumps core. 68948
The etfsctl utility can now read raw partitions at a specified offset. 68911
The statvfs() function now reports the correct number of free files on an ETFS when long filenames are used. 68898
The make command on Windows XP now correctly parses the MAKEFLAGS. 68853
We've corrected the options in the usage message for devi-microtouch. 68795
Mounting Qnet over IP caused an undetached thread to be listed as 'dead' in the list of active threads. This has been fixed. (Ticket ID 88501) 68794
Improvements have been made to gf_draw_finish() and gf_draw_flush() with respect to drivers that don't require layer_flushrect() updates. If your application is linked statically against libgf.a, we strongly recommend that you relink it. 68760
Fixed an issue where pppd used to fault when passing an environment to a /etc/ppp/ip_up script. 68688
The etfsctl utility can now write a file into a raw etfs partition at a specified offset. 68671
Line joins are now supported in Photon's dashed thick lines. Previously the joins were ignored, even if they were set. If you have erroneously set the line join with dashed thick lines, and had not intend to, you will have to change your code. 68641
The /var/chroot/sshd directory is now correctly owned by root:root with permissions of 0755. 68628
We've updated our port of the HP APDK to a newer version to fix a number of bugs and add new printer support. 68586
Photon applications no longer SIGSEGV if the font manager isn't running. 68517
In situations where a thread with sporadic scheduling policy called MsgSend() and its budget was exhausted, internal kernel data structures were left in an inconsistent state.

Note that this only happened if sporadic scheduling was used.

68512
If the priority of every server thread in devf-generic is boosted because of a SEND-blocked client, the original priorities are now correctly restored upon receipt of the client's message; as a result, low-priority threads no longer perform long, time-consuming tasks at a high priority. (Ticket ID 88359) 68497
The io-pkt manager no longer becomes reply-blocked when you use pppd with a serial port. 68456
For floating point emulation, faults that used to be reported in the emulator are now reported against the instruction that caused the fault. (Ticket ID 88277) 68330
If both ppc variants (spe and regular) are created in the same project and at least of them enabled both would be build. 68221
The hardware cursor is now functional on some newer Intel chipsets with devg-i830.so. 68190
The applypatch utility no longer tries to apply .tar files that aren't structured as a standard patch. 67764
In the PPC floating point emulation library, we've corrected the emulation of the mcrfs opcode, and we've completed the emulation of the mffs, mtfsb0, mtfsb1, mtfsfi, and mtfsf opcodes (the L, W, and Rc fields weren't handled). (Ticket ID 87996) 67553
The entry for devn-micrel8841.so in the Utilities Reference now points out that this driver supports only PCI versions of the Micrel 8841 (1 port) and 8842 (2 port) Ethernet controllers. 67333
Paletted PNGs are now supported by the Advanced Graphics Imaging Library PNG codec. (Ticket ID 87663) 66799
If a server calls ConnectClientInfo() on a disconnected coid, the function now gives an error of EINVAL instead of EFAULT. 66687
The devg-matroxg.so driver no longer enables the vsync IRQ when the “wait for vsync” function is configured to poll for vsync. 66613
The Rx and Tx counts are no longer reported as 0 after you slay pppd. 66127
In the IDE, the File Navigator was updated to include an address bar so that you can enter or copy a path. 65003
We've updated the devg-vmware.so driver so that certain applications are now displayed correctly. 64787
We've added a simple LRU buffer cache to inflator, to improve random seeking within a file. (Ticket ID 86706) 64569
If you use direct mode with the devg-i830.so driver, images now all appear correctly on the display. 63977
The same timing resolution rate that was used for io-net is now used for io-pkt. As a result, io-pkt now uses less CPU time that it used to when performing background maintenance operations. (Ticket ID 86055) 63007
Issues have been found with the version of OpenSSH that ships with NetBSD 3.x, NetBSD 4.x, and NetBSD-current. The two known security issues include X11 session hijacking (CVE-2008-1483) and a bypass of the ForceCommand directive (CVE-2008-1657). We now use OpenSSH 5.2, which contains the appropriate fixes. 62889
We've suppressed an informational message concerning truncation that appears when you start an ETFS. Since this message doesn't indicate an unrecoverable error, it's now displayed only if you start the filesystem with a verbosity of one or greater. (Ticket ID 84762) 61433
We've fixed a race condition between kernel no-op processing and pthread_cancel(). 59261
We've renamed the -n option for the cp command to be -u, to be consistent with other platforms. The -n option is still recognized. (Ticket ID 83753) 57828
Previously the application of a driver update would succeed and allow an installation but the subsequent rebuild of the customized boot image would fail under certain circumstances (VMware with a SCSI adapter as an example). This has now been resolved. 56042
When you're unmapping memory, a mutex is no longer identified as an item to destroy if the process has another mapping to the same page. (Ticket ID 82614) 55518
The IDE's Expression view now lets you format variables as hexadecimal and other formats. 52773
The High Availability Manager now automatically switches to monitoring the new process that daemon() creates, if the original process was a self-attached entity. (Ticket ID 80845) 52131
In the IDE, the Memory view as ASCII now supports 64 and 128 columns. 46977
The IDE's Text Editor now supports block selection. Press Alt-Shift-A to toggle block selection on and off, or alternatively use the Toggle Block Selection toolbar button. After that, you can use Ctrl-C to copy text in the selected rectangle. 44183
You can now get and set the Pt_ARG_CWELL_SWATCH_DIM resource for a PtColorWell widget. 41596
The netmanager utility now correctly honors the disabled parameter. 40445
We've corrected a race condition that could have occurred when the Adaptive Partitioning Scheduler detected that a partition became bankrupt on an SMP system. 38762
A new PxRotateImage() function for rotating images 0, 90, 180, or 270 degrees has been added. PNG images containing palettes with alpha information are now processed properly by Photon image routines. 37475
gf_display_devctl(), gf_i2c_read(), gf_i2c_writeread(), and gf_i2c_write() now return GF_ERR_TOOBIG when internal limits are exceeded. 29568
slinger can now write form variables to a dataserver. (Ticket ID 69008) 24555
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() -- no longer unblock threads in the wrong order. 24522
The serial (devc-*) drivers now check to make sure that memory allocations were successful. 24309
Palette matching has improved. (Ticket ID 68240) 24289

Documentation fixes

Change Ref#
The default USB stack is /dev/io-usb/io-usb, not /dev/usb. We've corrected the documentation for devh-usb.so, devb-umass, devh-touchintl.so, devh-egalax.so, devn-asix.so, devu-prn, devu-mouse, devu-kbd, and devh-microtouch.so. 77612
The documentation for ThreadCreate() now says that you can use __tls() to get a pointer to thread local storage. 77345
An error of EINVAL from clock_settime() could mean that tv_sec is -1. We've updated the entry for clock_settime() in the QNX Neutrino Library Reference. 76708
A VLAN tag is a 12-bit number, not a 16-bit number; we've corrected the documentation for ifconfig. 76665
We've corrected the names of SCHED_APS_SCHEDPOL_FREETIME_BY_RATIO and SCHED_APS_SEC_OFF in the Adaptive Partitioning User's Guide and the QNX Neutrino Library Reference. 76632
The PRE_TARGET and POST_TARGET variables in a recursive makefile are lists of targets, not commands; we've corrected the description of them in the QNX Neutrino Programmer's Guide. 76394
We've corrected the instructions for getting information about running drivers in the Working with Filesystems chapter of the QNX Neutrino User's Guide. 76375
In order to unlink a file, you need the appropriate permissions, but you don't have to be root. We've corrected the entry for unlink in the Utilities Reference. 76289
The documentation for ham_action_handle() and ham_condition_handle() now explains how to get a handle for a global entity. 76201
We've added entries for fseeko64() and ftello64() to the QNX Neutrino Library Reference. 76186
In the IDE User's Guide, information was added to the documentation to describe how to instrument a static library with code coverage enabled. You either have to instrument your binary with code coverage, or link with the code coverage library using the -lgcov option. 76035
In the Resource Managers chapter of Getting Started with QNX Neutrino, we've corrected the calculation of the size of the dirent structure so that it takes into account the null character at the end of the name. 76003
Previously, if you started the IDE, it used your current qconfig choice as the default version of the OS. Now, the IDE uses the last installed version of the QNX software that appears in the Select Install list on the Global QNX Preferences page. 75898
The documentation now points out that if inetd encounters any errors, it sends messages to slogger. 75717
The documentation for pthread_rwlock_rdlock() now warns that a deadlock can occur if a thread attempts to recursively acquire a read-write lock for reading, while another thread is trying to acquire it for writing. 75710
The documentation now emphasizes that it isn't safe to use floating-point operations in Interrupt Service Routines (ISRs) or signal handlers. 75691
For the QNX Momentics IDE, the cheat sheet for the Application Profiler example was renamed from “QNX Example Application Profiling Project” to “Call Count and Sampling Profiling”, and a few other updates were made to the instructions to reflect changes made to the user interface. 75439
We've corrected the synopsis for tell64() in its entry in the QNX Neutrino Library Reference. 75296
For the topic “Interpreting Tree mode column information by profiling type”, in the IDE User's Guide, all references to Time were renamed to Deep Time, and Own Time were renamed to Shallow Time. 75189
The documentation for ham now notes that to stop the high-availability manager, you should use either the ham_stop() function or the hamctrl utility. 75108
We've corrected the name of the cfg_file_path option in the example in the documentation for enum-usb. 75071
We've corrected the synopsis of putenv() in the QNX Neutrino Library Reference. 74976
The documentation for mq_open() and mq_unlink() now mentions that these functions indicate an error of ENOSYS if neither mq nor mqueue is running. 74946
The documentation for pci now warns that this utility is intended for debugging purposes; running it on an active system may cause some devices to hang. 74893
For regexec(), we've corrected the naming of the members from rm_sp and rm_ep to be rm_so and rm_eo respectively. 74884
The documentation for fs-dos.so now says that the default value of the fat option is nonrmv. 74682
The QNX Neutrino User's Guide and the documentation for mount now include examples of how to remount a filesystem as read-only and read-write. 74680
The documentation for usbd_string() now points out that the returned string includes a terminating null character, and that the function returns NULL if the string table doesn't exist. 74659
We've added an entry for devb-mvSata to the Utilities Reference. 74531
If you specify SHMCTL_PHYS in the flags to shm_ctl() or shm_ctl_special(), then paddr and size must be even multiples of the page size (sysconf(_SC_PAGE_SIZE)). 74502
The alignment argument to posix_memalign() must be a multiple of size( void * ) that's also a power of 2; we've corrected the documentation. 74482
The gf-calib option for specifying the layer index is -l (“el”), not -I. We've corrected the documentation. 74316
The snd_pcm_plugin_read(), snd_pcm_plugin_write(), and snd_pcm_read() functions indicate an error of EIO if the channel isn't in the prepared or running state. 74217
All x86 startups support a -B option, which you can use (if the BIOS is buggy) to prevent the startup from using the ACPI table to determine the number of logical CPUs. We've updated the entries for the startups in the Utilities Reference. 74159
We've corrected the spelling and description of SHMCTL_HIGHUSAGE in the entries for shm_ctl() and shm_ctl_special() in the QNX Neutrino Library Reference. 74070
The versions of zip and unzip that we ship are for x86 targets only. We don't ship them for Linux hosts. 73951
We've corrected the documentation for wordexp(): word expansion isn't implemented, so this function returns WRDE_NOSYS; it doesn't set errno. 73799
The QNX Neutrino User's Guide now says that devc-con-hid supports USB keyboards in text mode. 73776
The entry for procnto* in the Utilities Reference now describes procnto-booke-smp. 73236
The Composition Manager Developer's Guide now directs you to the Graphics project on Foundry27 for the demonstration programs and tutorials. 73195
In the IDE, for the Memory Analysis Tool, the Trace Details and Statistics views were removed as well as the corresponding documentation. The functionality that these views provided is now available by using the filters on the Memory Events view. In addition, although you can continue to use libmalloc_g.so, use librcheck.so to obtain memory statistics. 73187
In the “Using Mudflap” topic in the Analyzing Memory Usage and Finding Memory Errors chapter in the IDE User's Guide, we've added a warning regarding the use of Mudflap together with Memory Analysis. If your binary is instrumented with Mudflap, you can't run Memory Analysis on it because there'll be a conflict (trying to overload the same functions), and it will cause the program to crash. 73184
The entries for send(), sendmsg(), and sendto() in the QNX Neutrino Library Reference now describe the MSG_NOSIGNAL flag. 73177
We've corrected the description of MALLOC_MMAP_NOZERO. If this environment variable is nonzero, then when malloc() needs to expand the heap, it specifies the MAP_NOINIT flag when it calls mmap(); if the physical memory being mapped was previously unmapped with UNMAP_INIT_OPTIONAL, then the POSIX requirement that the memory be zeroed is relaxed. This environment variable has been supported on all architectures since QNX Neutrino 6.3.2. 72765
We've corrected the documentation for PhCancelDrag(); this function returns a non-negative number (&ge; 0), not a positive number (&gt; 0), to indicate success. 72724
The Utilities Reference now includes an entry for startup-bios-32, the startup for PC-compatible systems with a BIOS, using 32-bit physical addresses. 72656
The entry for phs-to-escp2 in the Utilities Reference now lists the supported printer models. The phs-to-* utilities all send any error messages to slogger; some may also send messages to standard error. 72522
We've added some options that were missing from the entry for nfsd in the Utilities Reference. 72286
The documentation now mentions that if you call MsgCurrent() on the rcvid pertaining to a low-priority client, then the priority boost given to your thread by a blocked high-priority thread can be lost. 72103
The entry for gf_draw_spanlist() in the Advanced Graphics Developer's Guide now includes GF_ERR_PARM as a possible error code. 71972
The documentation for the Graphics DDK now explains how you can download the source code for graphics drivers from Foundry27. 71811
The documentation for mq_open() and sem_open() now correctly describe how these functions handle the name argument. 71752
The documentation for mkdir and mkdir() now points out that not all filesystems (such as /dev/shmem, which isn't really a filesystem) support the creation of directories. 71638
The feature to build a System Builder EFS Project type was temporarily removed from the IDE. However, the documentation was updated to include instructions about how to create an EFS project. Follow the workaround instructions found in the topic “Creating a new QNX System Builder project for an OS image” in the Building OS and Flash Images chapter in the IDE User's Guide. 71607
The default value for the MALLOC_ARENA_CACHE_MAXBLK environment variable is 12, not 8; we've corrected the documentation for malloc(). 71606
The devnp-bcm1250.so, devnp-e1000.so, devnp-mpc85xx.so, devnp-rtl8169.so, and devnp-speedo.so no longer accept the promiscuous option because promiscuous mode is controlled by the stack itself. To enable promiscuous mode, use a BIOCPROMISC ioctl() command; there's currently no way to do this from the command line. 71463
POSIX doesn't define any errors for the sleep() functions. 71356
The documentation for sopen() now says that this function gives an error of EEXIST if the O_CREAT and O_EXCL flags are set, and the named file exists. 71265
The SQE (Squelch Test Errors) counter isn't applicable to devnp-e1000.so and devnp-i82544.so, so they use it to track the number of internal Rx FIFO overruns. For more information, see the Utilities Reference. 71191
The MsgSend*() functions can indicate an error of EHOSTDOWN or EHOSTUNREACH if (for example) a send across Qnet failed. 71131
The documentation now states that the name of the runtime linker for MIPS is ldqnx.so.3, instead of ldqnx.so.2 (as it is for other targets). 71087
We've documented the -A and -a options for traceroute, and the -I option for traceroute6. 71064
The entries for aio_cancel(), aio_read(), and aio_write() in the QNX Neutrino Library Reference now include more details about these functions' behavior. 71049
We've corrected the description in the System Architecture guide of how a thread's effective priority is adjusted when it unlocks a mutex. 70960
The documentation for getconf and sysconf() now describes _SC_TZNAME_MAX. 70875
In QNX Neutrino 6.4.0 and later, unsetenv() returns 0 for success, or -1 if an error occurred. We've corrected the documentation. 70792
The QNX Neutrino Library Reference now includes an entry for llabs(). 70791
We've corrected the prototype for pthread_cond_init() in the QNX Neutrino Library Reference. 70790
The QNX Neutrino Library Reference now has an entry for strerror_r(). 70789
We've corrected the prototype for mprotect() in the QNX Neutrino Library Reference. 70788
We've corrected the prototype for timer_settime() in the QNX Neutrino Library Reference. 70787
The freopen() function indicates an error of EBADF if the underlying file descriptor is invalid or doesn't support the requested mode change. 70786
The documentation for fseek() and fseeko() now describes the error codes that these functions can indicate. 70785
The documentation for fcntl() now says that this function indicates an error of EINVAL if the cmd argument is invalid. 70784
The documentation for pthread_mutexattr_getprotocol() and pthread_mutexattr_setprotocol() now describes the PTHREAD_PRIO_NONE protocol instead of saying that it isn't supported. 70783
We've documented munlockall(), which was implemented in the QNX Neutrino Core OS 6.3.2. 70697
The Multicore Processing chapter of the System Architecture guide now explains why a multicore system with n processors might not always run the n threads with the highest priorities. 70688
The documentation for InterruptDetach() now mentions that the thread that detaches an interrupt handler must be in the same process as the thread that attached it, or else the function indicates an error of EPERM. 70642
The devn-asix.so driver now supports the AX88178 chip. 70621
The pthread_mutex_lock() function's behavior when you try to lock a mutex that you already own depends on the type of the mutex, as described in the documentation for pthread_mutexattr_settype(). Note that pthread_mutexattr_settype() provides a more portable way to make a mutex recursive than pthread_mutexattr_setrecursive() does. 70613
The System Analysis Toolkit User's Guide and the documentation for tracelogger now warn you that if the clocks on a multicore system aren't synchronized, then the timestamps will be inconsistent, and the IDE's System Profiler will be unable to load the data. 70573
We've corrected the lists of options and field names in the documentation for ps. 70527
The documentation for diskboot now includes the -f, -i, and -R options. 70502
Before using the CACHE_FLUSH() or CACHE_INVAL() macros on ARM and MIPS platforms, a thread must call ThreadCtl( _NTO_TCTL_IO, 0 ); in order to obtain I/O privileges. 70432
The documentation for hogs now points out that the numbers reported are approximate; for precise data, use tracelogger and the System Analysis Toolkit. 70390
The Clocks, Timers, and Getting a Kick Every So Often chapter of Getting Started with QNX Neutrino referred to pthread_mutex_timedlock() in the section on CLOCK_MONOTONIC, but this function uses only CLOCK_REALTIME. This section now refers to timer_create(), which lets you choose the clock source. 70328
The Process Manager chapter of the System Architecture guide now includes a section on locking and superlocking memory. 70211
The documentation for mem_offset() now emphasizes that if the offset is greater than INT_MAX, mem_offset() gives an error of EOVERFLOW. Use mem_offset64() if this happens. 70207
We've corrected the descriptions of snd_pcm_capture_flush() and snd_pcm_playback_flush() in the Audio Developer's Guide. Don't mix and match plugin- and nonplugin-aware functions in your application, or you may get undefined behavior and misleading results. 70196
We've corrected the name of the memopts option in the documentation for devg-flat.so. 70133
MsgSendPulse() indicates an error of EINVAL if the priority is invalid (e.g. 0). 69851
The description in Building Embedded Systems of the qtime field of the system page now recommends that if the clock on your system drifts, you should make sure that the startup code specifies the correct clock frequency. 69812
The Understanding System Limits chapter of the QNX Neutrino User's Guide now includes a section on the limits for Embedded Transaction Filesystems (ETFS). 69786
In the IDE User's Guide, the documentation in the Analyzing Memory Usage and Finding Errors chapter was updated to describe the new support for grouping, search, and column preferences in the Memory Analysis Tooling views. 69772
In the QNX Momentics IDE, the Memory Events, Memory, Memory Backtrace, and Memory Problems views are now independent views that aren't included in the Sessions view. 69771
The IDE was updated to store its files in the following locations: $HOME/ide-4.7-workspace is the default location, $HOME/ide-4.7-workspace.metadata for the .metadata folder (for personal settings), and $HOME/ide-4.7-workspace/.metadata/.log for the error log. 69757
The section in the Neutrino Programmer's Guide on the /proc filesystem now points out that if you ask for information about a specific thread, and that thread no longer exists, the process manager gives you information about the thread with the next higher thread ID. If all the process's threads have exited, the thread ID in the procfs_status structure is set to 0. 69739
If you call SyncMutexEvent() with a NULL event, the function deletes any existing event registration. 69639
Before calling bind() on an AF_INET socket, set the af_family member of the sockaddr structure to AF_INET. Up until QNX Neutrino 6.4.0, a value of 0 was accepted and assumed to be this value. 69460
If you use MsgSendPulse() to send a pulse across Qnet, the calling thread is blocked (STATE_NET_SEND) while the pulse is delivered to the local Qnet manager, which transmits it to the remote Qnet. The remote Qnet does a MsgSendPulse() on behalf of the caller, and the return value is transmitted back, at which point the calling thread is unblocked. 69256
The default value of Pt_ARG_CBOX_BUTTON_WIDTH is 13, not 17; we've corrected the documentation for PtComboBox. 68983
The syntax for mkdir isn't the same on Windows as on QNX Neutrino. 68912
We've added the -h and -U options to the documentation for telnetd. 68727
We've clarified some of the comparisons between Photon and the Graphics Framework in the Advanced Graphics Developer's Guide. 68724
We've updated the options in the entry for devi-microtouch in the Utilities Reference. 68712
We've corrected the diagram of thread states in the QNX Neutrino Microkernel chapter of the System Architecture guide. 68711
We've corrected some numbers that should have been 2nn, not 2nn in the documentation for random() and srandom(). 68648
We've corrected the syntax for applypatch in the Utilities Reference. 68568
The documentation now mentions that if you call MsgSendPulse() with a priority of -1, the function uses the calling thread's priority as the pulse's priority. 68542
We've added more information about the -u option for devf-generic. 68507
We've corrected the example for the mkifs raw attribute: you don't need to specify this attribute in order to keep PhAB resources in an executable. 68428
In the documentation for the IDE User's Guide, the Finding Memory Errors chapter was renamed to “Analyzing Memory Usage and Finding Memory Errors.” In addition, the topics in this chapter were reordered and modified for technical accuracy; many of the topic titles were renamed as well. 68303
The documentation for unzip and zip now includes the -P option, which you can use to specify a password to use to encrypt and unencrypt archive entries. (Ticket ID 88241) 68246
The documentation for devc-serpci driver now says that the board must use PCI I/O space for the registers, and the ports must be contiguous in memory. 68128
The entry for qconn in the Utilities Reference now describes the -v option, which makes qconn display its version number and then exit. 68036
The section on updating disk drivers in the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide now includes instructions for building a new boot image if you're using the Power-Safe (fs-qnx6.so) filesystem. 67841
The entry for PtTreeChangeItem() in the Widget Reference now points out that this function can return a pointer to a new item that your application must maintain. 67655
The documentation now explains that native io-pkt and ported NetBSD 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. Use if_up -p instead; for example, instead of waitfor /dev/io-net/en0, use if_up -p en0. 67527
The documentation now mentions that the malloc implementation uses signed, 32-bit integers to represent the size internally, and hence you can't allocate more than 2 GB in a single allocation. If the size is greater than 2 GB, functions such as calloc(), malloc(), and realloc() indicate an error of ENOMEM. 67335
The Sample Buildfiles appendix in Building Embedded Systems now describes how to use ldd, objdump, and the DL_DEBUG environment variable to determine which shared objects to include in an OS image. 66845
It's safe to call tti() from an interrupt handler, but it isn't safe to call ttc() from one; we've updated the documentation for the Character DDK. 66797
The documentation for pthread_cond_timedwait() now recommends that you use CLOCK_MONOTONIC, which isn't affected by changes to the system time that way that CLOCK_REALTIME is. The documentation for sigtimedwait() now mentions that this function uses CLOCK_MONOTONIC to measure the time interval. 66425
We've corrected the information in the Audio Developer's Guide about what snd_pcm_plugin_write() returns. 66265
VMWare sessions default to resolution 1024x768 with color depth argb8888. This setting is forced in the enumerator file located in /etc/system/enum/devices/graphics. 66154
The shm_open() function indicates an error of EINVAL if an underlying call to resmgr_open_bind() fails. 66150
The IP Tunneling (Generic Routing Encapsulation) technote now mentions that you need to run io-pkt-v4-hc or io-pkt-v6-hc in order to use GRE. 65815
The Utilities Reference now includes entries for the SSH suite (scp, sftp, sftp-server, ssh, ssh-add, ssh-agent, ssh-keygen, ssh-keyscan, ssh-keysign, and sshd) and its configuration files (/etc/moduli, /etc/ssh/sshd_config, and /etc/ssh/ssh_config). 65699
If you use the tail utility with both -c and the deprecated -l option, the order in which you specify the options is important. For more information, see the Utilities Reference. 65660
The Using the Photon microGUI chapter of the Neutrino User's Guide and the entry for pwmopts in the Utilities Reference now correctly refer to wframe_updated.so, instead of wframe_update.so. 65310
Many reference links in the IDE User's Guide were updated to go to more specific places in the guide. 64550
We've expanded the description of tracelogger's modes of operation, in the Utilities Reference and in the System Analysis Toolkit User's Guide. 64536
You can't call Photon functions from a signal handler; we've corrected the example in the documentation for PgShmemCleanup(). 63797
We've corrected the buildfile that starts TCP/IP with a network filesystem, in the Sample Buildfiles appendix of Building Embedded Systems. 61535
The Utilities Reference now includes an entry for tsort. 59588
In the topic “Importing gcc code coverage data from a project” in the IDE User's Guide, references to .da were updated to .gcda to reflect the gcc files that the IDE currently supports. 59432
We've expanded the list of errors that the spawn*() functions can give. 59186
The documentation for mallopt() now includes more information about the MALLOC_FREE_CHECK, MALLOC_STATS, and MALLOC_VERIFY_ON options. 58401
The Utilities Reference now explains how the DHCP settings you make in phlip are passed to dhcp.client. 55975
The Backtraces technote now mentions that if you're using gdb on a program that uses libbacktrace, you need to tell gdb to pass SIGSEGV and SIGBUS signals to the program for correct operation. 55283
We've documented the return codes for gf_dev_register_thread(). 54930
We've corrected the server.c part of the example for MsgDeliverEvent() so that it handles the IO_CONNECT message sent because of the usage of name_attach(). 51181
The Character DDK documentation now describes how io-char handles read and write requests without blocking the hardware. 45335
We've expanded the description of the arguments to the ttc() function in the documentation for the Character DDK. 41780
The Customizing Image Startup Programs chapter of Building Embedded Systems now describes callout_io_map() and callout_memory_map(). We've also corrected the synopsis of the indirect forms of these callouts. 40834
The Adaptive Partitioning User's Guide now describes how to launch programs in /etc/rc.d/rc.local, specifying the partitions in which they're to run. 40816
The entry for fs-cifs in the Utilities Reference now includes the -o option, which you can use to specify various options concerning the handling of passwords, reconnection timeouts, and the handling of 64-bit filesystems. 39884
The documentation for seekdir() now says that if you call rewinddir() on the directory stream, or if you close and reopen the directory, an offset previously returned by telldir() becomes invalid. 39492
The documentation now says that the off argument to mmap() can be a physical address (e.g. for mapping a device's registers in a resource manager). 38626
The System Analysis Toolkit User's Guide now describes the NTO_TRACE_COMM_* events. 38156
The documentation for syslogd now explains when the log entry includes a host name, and when it includes nto (indicating the local host). 29965
The High Availability Framework Developer's Guide now explains how to get a handle for a global entity. 29655
We've corrected the information about the trace events for MsgSendv() in the System Analysis Toolkit User's Guide. 29638
The kernel now reaps zombies, even if you run a foreground process that doesn't exit in your OS image's startup script. However, running a foreground process that never exits still prevents the rest of the script from being executed. 29186
The documentation for if_up now describes the -l option. 28321
The documentation for devf-generic now describes the output produced if you specify the -v option. 27874
The exec*() and spawn*() functions can give an error of ETXTBSY if the text file that you're trying to execute is busy (e.g. it might be open for writing). 27277
The documentation for tftp now mentions that remote file names must start with a slash. 26065
InterruptAttach() currently ignores the size argument. 25754
The entry for getsockopt() in the QNX Neutrino Library Reference now has a section on setting keepalive timing. 25719
We've corrected the “Returns” section of the entry for getopt() in the QNX Neutrino Library Reference. 24654
We've added the lan option to the documentation for devn-dm9102.so, devn-el509.so, devn-el900.so, devn-epic.so, devn-fd.so, devn-i82544.so, devn-micrel8841.so, devn-ne2000.so, and devn-tigon3.so, and the lan2 option to the documentation for devn-micrel8841.so. devn-tulip.so, and 23557
The QNX Neutrino Library Reference now describes strtof() and strtold(). 23031
We've corrected the documentation for SignalAction() to say that the default action for SIGTSTP, SIGTTIN, and SIGTTOU is to stop the process, and that you can't ignore or catch SIGCONT. We've also described the special QNX Neutrino signals, which you can't unmask. 22588
If you call a spawn*() function and pass NULL for argv[0] or arg0 (depending on which function you use), the function indicates an error of EINVAL. 22197
The PtFlash was deprecated in QNX Neutrino 6.4.0, but its entry in the Widget Reference wasn't completely removed. We've now fully removed it. 21954
We've corrected the list of error codes for pwrite(), send(), sendmsg(), sendto(), and write(). 21617
We've updated and corrected the Making Multiple Images technote. 20754
The documentation for message_attach() now points out that although the low and high arguments are of type int, the function stores the values internally as short. 20022
The default scheduling priority and policy for processes launched from the script file in a mkifs buildfile are specified by procnto, and could change in future versions of QNX Neutrino. If the priority and scheduling policy of the processes are important to you, be sure to use the pri= modifier. 1834
Since signal-catching functions are invoked asynchronously with process execution, you need to take into account the same sort of things that you would in a multithreaded program when inspecting or manipulating shared resources. 17738
We've added EINVAL, EMFILE, and ENOREMOTE to the list of error codes for ConnectAttach(). 17408
We've added more information about the dirent_extra and dirent_extra_stat structures that filesystems can provide as extra data when you call readdir(). 16157