Operating systems, development tools, and professional services
for connected embedded systems

Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation

QNX Technical Articles

 

QNX® Momentics® 6.3.0 Professional and Standard Editions Release Notes

QNX® Momentics® 6.3.0 PE and SE

Date of this edition: November 14, 2008


Note: Changes to these notes since June 7, 2004 are highlighted below with this icon:

New!


Target OS: QNX® Neutrino® 6.3.0

Host OS: Microsoft Windows XP SP1 or 2000 SP4; Sun Solaris 7/8; QNX® Neutrino® 6.3.0; Linux (Red Hat 8/9)


Note:
  • We are now deprecating support for Windows NT hosts. This is the last release of QNX Momentics that you can install on NT. We've tested this release on NT SP6.
  • QNX Neutrino 6.3 supports only the new flash filesystem (FFS3). The older flash filesystem (FFS2) has been discontinued.
  • For the most up-to-date version of these notes, log into your myQNX account, and then go to the Download Center area of www.qnx.com.
  • We highly recommend that you install Service Pack 1 after installing QNX Momentics 6.3.0. For more information, see the Download Center area of our website.


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

Contents...


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

What's new in QNX Momentics 6.3?


Note: For up-to-date information on what's compatible between the latest two versions, see 6.3.0 and 6.2.1 Compatibility, available on our website.

Here are the main new features in the 6.3 release:


Note: For more details, please refer to the “what's new” sections in the docs.

Momentics


Note: With the release of 6.3.0, some networking utilities and services have been moved from the base product to the Extended Networking TDK:

Managers

  • npm-tcpip-v6.so
  • dhcpd
  • dhcprelay
  • routed
  • route6d
  • rtadvd
  • rtsold
  • snmpd
  • snmptrapd
  • bootpd
  • mrouted
  • named
  • named-xfer

Utilities

  • ndp
  • ping6
  • traceroute6
  • racoon
  • setkey
  • snmpbulkwalk
  • snmpget
  • snmpgetnext
  • snmpnetstat
  • snmpset
  • snmpstatus
  • snmptest
  • snmptranslate
  • snmptrap
  • snmpwalk

Libraries

  • libsnmp

Neutrino

Photon


Note: The Photon Application Builder (PhAB) is available only for Windows and QNX Neutrino hosts.

If you're using a Linux or Solaris host, but you still want to use PhAB, consider installing a QNX Neutrino host to a second partition or an X86 simulator (e.g. VMware).


A word about coexistence

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

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

QWinCfg for Windows hosts

On Windows hosts, you'll find a configuration program (QWinCfg) for switching between versions of QNX Momentics.

You launch QWinCfg via the start menu (e.g. All Programs-->QNX Momentics 6.3.0-->Configuration).

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

qconfig utility for non-Windows hosts

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


Note: In the above command, you must use the “back tick” character (`), not the single quote character (').

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


Note: Coexistence of 6.3.0 and 6.2.1 is supported only on Windows and Solaris hosts.

Environment variables

Neutrino uses these environment variables to locate files on the host machine:

QNX_HOST
The location of host-specific files.
QNX_TARGET
The location of target-specific files on the host machine.
QNX_CONFIGURATION
The location of the qconfig configuration files.
MAKEFLAGS
The location of included *.mk files.

The qconfig utility sets these variables according to the version of QNX Momentics that you specified.

Changes

Here are the main changes in 6.3 (in alphabetical order):


Note: You'll find a list of fixes at the end of this document.


Note: For more details on changes in 6.3, including references to our Change Request Database, see the “What's Included” section of the online Welcome Message that gets installed along with the software.

BSPs and DDKs


Note: For more information on BSPs and DDKs, see the installation notes and release notes (under /etc/readme/bsp|ddk/*.html).

Compiler and tools

Environment variables

The SDK now requires that QNX_HOST, QNX_TARGET, QNX_CONFIGURATION, and MAKEFLAGS be set. On Windows and QNX Neutrino hosts, these are set automatically; on Solaris and Linux, they're set interactively.

In previous releases of the SDK, make knew where to find included *.mk files, but no longer. You must set MAKEFLAGS to:

MAKEFLAGS=-I${QNX_TARGET}/usr/include

QNX_HOST and QNX_TARGET used to have default values if they weren't set, but no longer. You must set these to wherever the SDK host and target files are located. For example:

QNX_HOST=C:/QNX630/host/win32/x86
QNX_TARGET=C:/QNX630/target/qnx6

QNX_CONFIGURATION gives the location of the qconfig configuration files. The default is /etc/qnx.


Note: Please remember to use forward slashes (/) when setting environment variables on all hosts, because many of the tools in the SDK will interpret a backward slash (\) as an escape character and will simply remove it.

GCC

make

If you're using the QNX recursive makefile hierarchy, make needs to be able to find the makefile fragments (.mk files) with the rules for building QNX projects. These are stored in $QNX_TARGET/usr/include.

The environment variable MAKEFLAGS gives extra command-line flags to make; by setting it to -I$QNX_TARGET/usr/include, these .mk files will be found.


Note: Microsoft's nmake also uses MAKEFLAGS, so if there's a mixed environment, you can use GNUMAKEFLAGS, which is an extension to standard make and exists only in the QNX-supplied version.

mkifs

Linker

Core OS

Asynchronous messaging


Note: Asynchronous messaging is an experimental feature in 6.3.0; its implementation may change.

Asynchronous messaging is a communication model that relies on a store-and-forward technique. Compared to regular reply-based communication in client-server systems, the messaging infrastructure ensures delivery, even if a participant is temporarily offline, busy, or unobtainable. In this technique, the sender doesn't need a response from the recipient. This provides more flexibility and scalability as the senders and receivers are de-coupled and are no longer required to execute in lockstep.

More and more customers are demanding such fast, nonblocking message-passing mechanisms. In some real-world scenarios, the client doesn't have to wait in a blocking state for the server to finish servicing its requests; rather, it can improve its performance by carrying out some tasks while waiting. Multiple asynchronous messages can also be sent out within a short period of time. Buffering those messages and sending them out as a bunch can reduce the frequency of entering the kernel and thus improve system performance.

Asynchronous messaging in Neutrino provides an event-driven system model that complements our traditional message-passing architecture of synchronous messaging. Its main feature is high throughput and nonblocking message passing. You can now design systems where the OS can react in a timely way to asynchronous events generated externally or internally. Asynchronous messaging also provides a convenient and efficient mechanism to deliver asynchronous events and their associated data among system components.

We provide several asyncmsg_*() APIs and encourage you to use these interfaces to implement your own application using asynchronous messaging:

To: Use this function:
Create an asynchronous message channel asyncmsg_channel_create()
Destroy an asynchronous message channel asyncmsg_channel_destroy()
Establish a connection between a calling process and a channel asyncmsg_connect_attach()
Detach the connection asyncmsg_connect_detach()
Flush all the messages asyncmsg_flush()
Return the original connection attributes asyncmsg_connect_attr()
Take message(s) from a buffer or an array of buffers asyncmsg_put()/asyncmsg_putv()
Receive an asynchronous message from the channel asyncmsg_get()
Free a message buffer asyncmsg_free()
Allocate a message buffer for sending asyncmsg_malloc()

 

C++

New! Some class definitions are stricter in 6.3.0. For example, the set class requires unique keys; you can no longer modify keys that you've already added to the set, because you could create duplicates. This change could cause code that compiled on 6.2.1 not to compile on 6.3.0. (Ref# 21773)

dinit

In 6.3, dinit now creates long filenames by default. You can disable support for long filenames by specifying the -N option. (Ref# 17642)


Note: This is the reverse of the behavior of 6.2.1; the -N option formerly enabled support for long filenames.

fcntl()

We fixed problems with side-channel connections and errnos reported. (Ref#s 16959; 16960)


Note: The OS now prevents _NTO_SIDE_CHANNEL connections from being dup'd (via dup(), dup2(), or fcntl(F_DUPFD)). This is to maintain consistency with the concept of side-channels forming a separate file-descriptor space that isn't subject to normal process-inheritance rules.

If you are dup()ing side-channels, then they must now be attached as normal file descriptors.

Note also that the low-level ConnectAttach() doesn't allow the specification of a specific side-channel index, which is required by dup2().


FD_SETSIZE

The value of FD_SETSIZE has changed from 32 to 256. This affects the size of the fd_set objects that you pass to select().

This means that by default the highest allowable fd number for FD_SET(fd, &set) is 255.

Any use of fd_set within data structures will therefore cause a change in structure size, so you should do a global recompile.


Note: The global recompile should include all application code, as well as library code that would be referencing fd_set or structures containing fd_set. If you don't recompile, you may see random corruption and crashes.

To make the value higher, #define FD_SETSIZE before including <sys/select.h>. But make sure this is done consistently throughout your modules.

If you don't want to cause a global compile, you can #define FD_SETSIZE 32 before including <sys/select.h> (or -DFD_SETSIZE=32 on the command line) to set it back to the old size, but make sure this setting is consistently applied to all your code.

Instrumented kernel

The instrumented kernel (procnto-instr) is now the default kernel for QNX Neutrino self-hosted systems.

LD_LIBRARY_PATH

For security reasons, the path(s) specified by LD_LIBRARY_PATH for setuid/setgid binaries will no longer be searched when loading shared objects.

Instead, only the path(s) defined by the _CS_LIBPATH configuration string will be used. You can examine or modify the value of _CS_LIBPATH using the getconf and setconf utilities.


Note: In a buildfile, you can set the initial value of _CS_LIBPATH via the LD_LIBRARY_PATH= part of the procnto line. For example:
PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto

libpm and libpmm

pidin

The pidin utility now has a format code (l) to show the last CPU a thread was run on.

poll()

The poll() function has been added. Initial support is limited to the first three event types: POLLRDNORM, POLLWRNORM, and POLLRDBAND.

POSIX Message Queues

The 6.3.0 release ships with an optional alternate implementation of POSIX message queues. This implementation uses the new asynchronous messaging facility of the kernel to buffer the messages within the kernel itself, and eliminates the (context-switching) overheads of using an external server (mqueue) in each message-queue operation, thus greatly improving the performance of POSIX message queues.


Note: New! In earlier versions of QNX Neutrino, mqueue managed message queues and named semaphores; now, procnto handles named semaphores. If your embedded system uses named semaphores but not message queues, you don't need to include mqueue in your OS image. (Ref# 21823)

By default, the implementation of the mq_*() routines in libc is the old style, using the mqueue server to broker each transaction. To use the new-style implementation, the application(s) must be linked against the libmq library. In a manual build, specify the -l mq option; in automatic/recursive builds, use this setting in your common.mk file:

LIBS += mq

Since both variants adhere to the POSIX 1003.1 Message Passing API, no code-level changes are required in conforming applications.

The new server /sbin/mq must also be started. Although this server is not involved in each mq_send()/mq_receive()/mq_notify() operation, the server is necessary in order to maintain the queue names and create the corresponding kernel message queues. The server also presents all created queues in the /dev/mq/ directory, allowing the use of ls and rm for administration purposes (although the queue contents can't be manipulated via shell utilities). This directory could be changed to union over the directory exported by the old mqueue server by using the mq -N/dev/mqueue option, but this isn't recommended, because it may cause some user-namespace confusion.

The two POSIX message queue implementations may coexist but are disjoint. Queues created with mq_open() from libc aren't accessible to mq_open() from libmq and vice versa. When relinking applications to use the new implementation, be sure to change all affected components. We require such explicit intervention to use the alternate implementation because of potential incompatibilities if your code isn't strictly POSIX conforming.

Message queue descriptors (mqd_t) are no longer file descriptors in the alternate implementation. The POSIX 1003.1 standard makes no claim as to the underlying type of an mqd_t, and provides a specific set of functions to manipulate a message queue and its attributes based on an abstract mqd_t type.

For example, the following code modifies the nonblocking attribute of an open message queue:

mq_getattr(mq, &attr);
attr.mq_flags |= O_NONBLOCK;
mq_setattr(mq, &attr, NULL);

And this example attempts to obtain the count of messages in a queue:

mq_getattr(mq, &attr);
nmsg = attr.mq_curmsgs;

Other examples include the historic interchangeability of mq_send() with write() and of mq_receive() with read(). There's no direct counterpart to select() when used on a mixed set of queues and file descriptors or for the transition from a full queue, although mq_notify() may be used to register an event against a message queue on transition from empty.


Note: The alternate implementation doesn't support the DCMD_MISC_MQSETCLOSEMSG QNX extension to inject a canned message when a queue descriptor is closed.

The default configuration of a message queue created by mq_open(O_CREAT) with a NULL mq_attr structure has been changed, because kernel buffers for the messages are now created up-front rather than on-demand. To create a queue with a specific configuration, simply provide a non-NULL mq_attr. To force the NULL default to match that of the old implementation, use the mq -m1024 -s4096 options (which isn't recommended, because this will consume 4MB of system memory for each such queue!).

Since the kernel primitives supporting the asynchronous message-queue facilities are non-orthogonal with respect to native QNET networking, the alternate implementation allows for message queues to be manipulated only from the local machine. Of course, distributed access and the network-qualified naming of message queues is undefined by POSIX.

The following table summarizes the main differences between the alternate implementations:

Style Server Library Pathname mqd_t implementation Qnet
Old (6.x) mqueue libc /dev/mqueue/ int (file descriptor) Yes
New (6.3.0) mq libmq /dev/mq/ int (internal index) No

 

PPC startups

Priority levels

The OS now supports 256 priority levels.

Note that non-root processes can use only priority levels 1 to 63. Only root processes (i.e. those whose effective uid is 0) are allowed to set priorities above 63.

You can change the allowed priority range for non-root processes with the procnto -P option:

procnto -P priority

Here's a summary of the ranges:

Priority level Owner
0 idle thread
1 through priority − 1 non-root or root
priority through 255 root

resmgr_handle_tune()

This is a new function that you can use to tune some of the parameters used internally by the resource manager layer when performing the client fd - ocb mapping. For more information, see the Neutrino Library Reference.

select()

The select() function used to make use of the functions _select_event() and _select_block(). The latter two functions weren't doc'd (other than being prototyped in /usr/include/sys/select.h.)

As of 6.3, these two functions are no longer used internally. However, they've been left in libc for the time being, but may be removed altogether in a future release. For reference, here is the old implementation of select():

/*
Copyright 2001, QNX Software Systems Ltd. All Rights Reserved
 
This source code has been published by QNX Software Systems 
Ltd. (QSSL). However, any use, reproduction, modification,
distribution or transfer of this software, or any software
which includes or is based upon any of this code, is only
permitted under the terms of the QNX Realtime Platform End
User License Agreement (see licensing.qnx.com for details)
or as otherwise expressly authorized by a written license
agreement from QSSL. For more information, please email
licensing@qnx.com.
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
/*  The routine implements the Unix select call.  When 
 semantics differ the BSD
 semantics defined in APUE (pg. 396-400) are followed.
*/
 
int select(int nfds, fd_set *readfds, fd_set *writefds, 
fd_set *exceptfds, struct timeval *tvptr) 
{
     struct sigevent            event;
     struct timespec            ts;
 
     if(tvptr) 
     {
         if (tvptr->tv_sec < 0 ||   /* don't bother 
                         checking upper ends, roll over will catch really bad overflows */
             tvptr->tv_usec < 0)
             return errno= EINVAL, -1;
         
         ts.tv_sec= tvptr->tv_sec ;
         ts.tv_nsec= tvptr->tv_usec * 1000L ;
     }
 
     event.sigev_notify = SIGEV_SIGNAL_THREAD;
     event.sigev_signo = SIGSELECT;    /* This signal is     
      always SIGBLOCKed */
     /* event.sigev_value will be modified as needed by 
      select_sigevent() */
     event.sigev_code = SI_NOTIFY;
     event.sigev_priority = -1;
 
      return _select_event(nfds, readfds, writefds, exceptfds, tvptr ? &ts : 0, &event, _select_block, 0);
}

Shared memory on ARM processors

New! The behavior of the SHMCTL_GLOBAL and SHMCTL_PHYS flags has changed for ARM processors.

On ARM, you can use shm_ctl() to create shared memory objects that can be mapped outside the regular process address space to overcome the 32MB address-space limitation.

In 6.2.1, these objects, when mapped, weren't protected and were potentially accessible via their global virtual addresses from any suitably privileged process. This access was restricted to processes that had performed ThreadCtl(_NTO_TCTL_IO), so in general, this was restricted to drivers or other system processes. The SHMCTL_LOWERPROT flag lowered this restriction so that any user process could potentially access these mappings without having to use ThreadCtl(_NTO_TCTL_IO) first.

In 6.3.0, these global mappings are protected, so that only the process that performed the mmap() of the shared memory object can access it. If you have any code written for 6.2.1 that relies on the implicit access allowed by these global mappings, you must modify it to use the flags to explicitly remove the per-process protection:

In addition to the per-process protection, 6.3.0 changes the alignment of the virtual addresses where these global mappings are placed:

In 6.2.1, mmap() mapped separate objects similar to the following:

In 6.3.0, mmap() maps these objects as:

If you have any code written for 6.2.1 that makes assumptions about the alignment of mappings or uses MAP_FIXED with non-1MB alignment, you must modify it to comply with the new behavior.

64-bit “large file” libc/filesystem support

QNX Neutrino 6.3 now implements the X/Open Largefile Support extensions. For details, see the 6.3.0 and 6.2.1 Compatibility note posted on our website.

Startup library

The startup library now supports 64-bit physical addresses for the MIPS, PPC, and X86 architectures. Two versions of the libstartup.a are built:

By default, startup programs will compile and link with the 32-bit version. If a board needs 64-bit physical addresses, add the make macro PADDR_SIZE=64 to the board's pinfo.mk file (see startup/boards/440rb/pinfo.mk for an example).

stat()

swapctl

Support for swapping (experimental on x86) has been removed with the 6.3.0 release. It was introduced to help compile and link large projects on memory-constrained hosts, but is no longer required using current PC configurations.

System page

User's Guide

We've developed a Neutrino User's Guide covering a broad range of topics to help users as well as system administrators work with a Neutrino system.

Flags for ChannelCreate()

New! We've corrected the behavior of the _NTO_CHF_COID_DISCONNECT and _NTO_CHF_THREAD_DEATH flags for ChannelCreate(). For descriptions of the new behavior, see the entry for ChannelCreate() in the Neutrino Library Reference. (Ref# 15480)

Math functions

New! The following math functions are deprecated:

Instead of: Use:
drem() remainder()
dremf() remainder()
finite() isfinite()
finitef() isfinite()
isinff() isinf()
isnanf() isnan()
significand() scalbn( x, -ilogb( x ))
significandf() scalbnf( x, -ilogbf( x ))
scalbf() scalbn()

Drivers

Audio (deva-)

Block (devb-)

New drivers:

Graphics (devg-)

Driver Controller Target CPU
devg-chips.so (replaces devg-chip_hiqv.so) Chips & Technologies 65550 and greater MIPSLE, PPCBE, SHLE, X86
devg-coral.so Fujitsu Coral B & Coral P ARMLE, PPCBE, SHLE, X86
devg-i830.so Intel 82830, 82845, 82865 X86
devg-orchid.so Fujitsu Orchid PPCBE, SHLE, X86
devg-ravin.so NEC RavinE MIPSLE, PPCBE, X86
devg-sis630.so SiS 300 & 630 X86
devg-smi7xx.so Silicon Motion 712, 722 & 731 ARMLE, MIPSLE, PPCBE, SHLE, X86
devg-smi5xx.so Silicon Motion 501 ARMLE, MIPSLE, PPCBE, SHLE, X86
devg-tvia.so (replaces devg-igs5300.so) TVIA 52xx and 53xx MIPSLE, SHLE, X86

 

Polygon acceleration

Network (devn-)

USB (devu-)

Flash filesystem

A new version of the NOR flash filesystem library offers significantly improved resistance to power-loss corruption. However, this improvement isn't backwards-compatible with the older version of the library.

The older library (libfs-flash.a) has been removed from this release. All flash drivers (devf-generic, devf-ram, etc.) now link against the version 3 library, i.e. libfs-flash3.a.

If your existing code links against libfs-flash.a, you must now use the version 3 library. For more information, please refer to the documentation on the new version 3 flash filesystem as well as the migration technote.

Installation

Photon-specific

Image loading

Helpviewer

Photon File Manager

Photon Library (libph.so)

PxConfig* API

The new API has been reworked to lift some of the restrictions of the old API. The old API can hold only one config file open at a time, seriously limiting its practicality (particularly for use in a library).

All existing PxConfig* calls (from pre-6.3) continue to be supported in the form of macro wrappers around the new API.


Note: You need to recompile your applications if you're moving to 6.3 — we encourage you to migrate to the new API, particularly for new projects. But apps that worked with the old API should continue to work with the new.

For details on the new API, see the PxConfig* entries in the Photon Library Reference.

Voyager and IDE docs

If your connection configuration includes a proxy server, remember to add the following in the Proxy Overrides field in the Connection tab (Edit-->Preferences):

127.0.0.1, localhost

This will allow the IDE's help system to locate the files it needs.

Application Builder

Shelf (Launch menu)

phfont

The design architecture has evolved from 6.2.x. Under 6.2.x, io-graphics was able to load the font server into its own data segment in order to speed up rendering services. This interface has been taken to a new level, through libfont, by allowing several system configurations:

  1. An external font server and a client font instance within io-graphics.
    Benefit:
    Increased speed.
    Cons:
    Increase in memory footprint. Although io-graphics instantiates a client font instance, it can use greatly reduced resources, since it isn't concerned with other application requests.
  2. A server font instance within io-graphics. This is the same behavior as 6.2.x. If an external font server isn't started, io-graphics will attempt to start a server font instance.
    Benefits:
    Good speed; middle memory footprint.
    Cons:
    Slower than option 1, since the graphics driver may have to wait for an outside client font request to complete.
  3. An external font server only.
    Benefit:
    Minimal memory footprint
    Cons:
    Slowest option

Client applications may also load a private client font instance, resulting in maximum speed when making font requests. Please read the new documentation for phfont, fontadmin, and libfont (Font Library Functions, specifically Pf*Dll() API calls).

Under the 6.3 architecture, rendering plugins are utilized by phfont. These DLLs are located in /lib/dll/font. Each rendering DLL has an embedded use message; just type use dllname.

The following binaries are no longer required:

Please read the documentation on phfont for further details. Options for the DLLs are set via the fontopts file; see the docs on fontadmin for further details.

Due to the new library (libfont), when linking against a static libph you must also link against libfont.

embed_font

This script can be used to copy all the font system binaries and libraries to a target build image. Usage is simple:

embed_font target_root_directory

fontopt is now fontopts

The fontopt configuration file is now deprecated and no longer used. Use the fontopts file instead. See the docs for phfont and fontadmin for further details.

fontview

The fontview program is a font-viewer application that can display glyphs from any font format supported by phfont, without having to install the font file. For more information, see the usage message (type use fontview from a pterm).

The fontview utility uses the same rendering plugins as phfont.

mkfontdir

This utility now uses the same rendering plugins as phfont to process index files.

io-graphics

Now has a new command-line format; supports configuration file, and multi-headed display.

TrueType fonts

Fixed a problem where PhAB for Windows wouldn't recognize and render user-supplied TrueType fonts. (Ref# 19865)

To install a TrueType font:

  1. Use the Windows Control Panel to install the font.
  2. Add the .ttf file to the following directory:

    %QNX_TARGET%\usr\photon\font_repository directory

  3. Run mkfontdir so that the font appears in the font index file (fontdir).

Pg*() functions

Most Pg*() functions have Cx* versions, which are context-specific.


Note: Since the Pg*() versions are implemented as macros based on their *Cx() counterparts, they no longer have symbols in the new libraries; you'll need to recompile your code if you use these functions.

The macros are defined in the <PhProto.h> public header file.


New window frames

The window frames have been updated with a new look and new decorations. You can revert to the 6.2-style window frames by moving or removing /usr/photon/dll/winframe_updated.so.

You can have the new window frames on the desktop and have the old window frames in PhAB by launching PhAB with the -D option (ab -D) or with any other style of window frame by using the -F framestyle option.

Photon hook

You can pull in and execute a block of user code during the initialization of Photon applications. For details, see the widget styles section of the Managing Widgets in Application Code chapter of the Photon Programmer's Guide.

Photon clipboard

The Photon clipboard has been enhanced with added security. You can no longer get access to another user's clipboard files, unless you're running as root. Clipboard files are no longer compatible between 6.3.0 and previous releases. This also means that Photon applications built against libph.so.2 can't share the clipboard with Photon applications built against libph.so.3.

Note also that in 6.3, you're no longer limited to 64K when you cut-and-paste text. The limit is now your system RAM.

Clipboard Changed Event

Starting in 6.3.0, clipboard changes cause a new event to be emitted. The event will be a Ph_EV_INFO, with a subtype of Ph_CLIPBOARD_CHANGED. The data associated with the event will contain the input group number and the “clip type” string, so that the listener can call PhClipboardRead() to paste the data just copied. The old region changed event has been deprecated, but for now will still be emitted when the clipboard changes.

Multimedia

phlogin

The default login application is now phlogin2, which provides a user icon that you can select to log in. If you remove phlogin2 from the path, phlogin (the original GUI login from 6.2) is used automatically.

savercfg

PtExit()

The PtExit() function no longer causes individual threads to exit. See the docs for details.

Pt_CB_NUMERIC_CHANGED

If the PtNumericInteger and PtNumericFloat widgets have the Pt_CALLBACKS_ACTIVE bit set in the Pt_ARG_FLAGS resource, these callbacks are also invoked when your application changes the Pt_ARG_NUMERIC_VALUE with a call to PtSetResource() or PtSetResources(), or if the Pt_ARG_NUMERIC_VALUE is changed indirectly by a change to Pt_ARG_NUMERIC_MIN or Pt_ARG_NUMERIC_MAX.

Qnet

For 6.3, we're shipping two versions of Qnet:


Note: The new Qnet (npm-qnet-l4_lite.so) is not compatible with the pre-6.3 versions.

The default version is the new lightweight Qnet (npm-qnet.so is a link to npm-qnet-l4_lite.so). If you wish to use the older version of Qnet, have npm-qnet.so link to npm-qnet-compat.so and restart io-net.


Note:
  • You can't have an instance of npm-qnet-l4_lite.so and npm-qnet-compat.so active at the same time on the same node.
  • You can't unmount Qnet (either version) from io-net in 6.3.0.

TCP/IP

dhcp.client

SCTP (in Extended Networking TDK)

IPFilter (in Extended Networking TDK)

IPFilter (lsm-ipfilter-[v4|v6] can be used only with the matching TCP/IP stack (i.e. lsm-ipfilter-v4.so with npm-tcpip-v4.so; lsm-ipfilter-v6.so with npm-tcpip-v6.so).

Full TCP/IP stack and other updates


Note: IPv6 is now part of the Extended Networking TDK.

rpcbind

By default, rpcbind executes in “secure” mode and uses Unix Domain Sockets for local communication.

If you wish to use an older RPC application with rpcbind or to use rpcbind in combination with the Tiny TCP/IP stack, you'll need to refer to the -L and -i options to rpcbind.


Note: The service rpcbind must be defined for both UDP and TCP in the /etc/services file. While the default /etc/services provided has these modifications, if you choose to use the current /etc/services file at installation time, these definitions will be missing and rpcbind will fail to function. The required lines are:
    
sunrpc    111/tcp        rpcbind portmap 
sunrpc    111/udp        rpcbind portmap

RPC library

Timeouts for clnt_broadcast() have changed. In 6.2 and earlier, timeout and retransmission occurs at 4 seconds and increases by 2 seconds for every timeout after that to a max of 14-second timeouts, resulting in 6 retransmissions.

In 6.3, timeout and retransmission occurs at 4 seconds and doubles after that to a max of 8 seconds, resulting in 2 retransmissions. You can alter timeout values by calling the lower-level call rpc_broadcast_exp().

Global Name Service Manager (gns)

The name_open() function used to be a silent operation for the server in that it wouldn't know when a client called name_open(). This behavior is changed to allow operation over the network.

The server will now always receive an _IO_CONNECT message when a client calls name_open(). (For more information, please refer to the gns entry in the Utilities Reference.)

rcp

New! This utility sets its user ID to root. It was reported that you can overrun the source/target file argument buffers in the utility, giving yourself root access. Under QNX Neutrino, rcp spawns the cp utility for local file-copying operations; it's the cp utility that faults. When rcp spawns cp, it does so with the credentials of the user who launched rcp, rather than root's. (Ref# 22002)

Windows-specific

We now provide two shells:

You'll find these executables under ${QNX_HOST}/usr/bin (e.g. C:\QNX630\host\win32\x86\usr\bin). You may want to create desktop shortcuts for these or other executables you'll use often.

Documentation

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 Momentics 6.3.0 are:

Known issues

The 6.3 release contains known problems in these areas:

BSPs and DDKs

For more information about specific BSPs and DDKs, see the release notes that accompany them.

Uninstalling BSPs

GCC

At this time, we recommend that you use the GCC 2.95.3 tool chain to compile the source for the BSPs and DDKs. (Ref# 19949)

DBPXA250DP (Lubbock)

The system crashes when using intensive memory allocations. (Ref# 17929)

Drivers

Audio

deva-ctrl-ymfds1.so
New! QNX Momentics 6.3.0 should have included this shared object, but didn't. (Ref# 24662)

Block-oriented

devb-doc, devb-doc3, dformat, dformat3
New! The Disk On Chip drivers were provided by the vendor. If you run use -i on them, the state is given as Experimental. (Ref# 23101)

Graphics

Networking

Compiler & tools

Core OS

Documentation

IDE


Caution: New! If you use the CVS Checkout as... command and specify an existing directory, the contents of that directory are deleted and replaced with the checked-out files — without prompting. This is a problem in Eclipse (see bug 25783 at www.eclipse.org).

Workaround: Make sure you specify a new subdirectory as the location.


Linux

Neutrino

Solaris

Photon-specific

ABLANG

When you select a specific language, the ABLANG environment variable isn't set until you log out and back in. (Ref# 19550)

PtFileSel

The “closed folder” icon looks like the “symlink to folder” icon. The default icon that PtFileSel uses for directories has the little arrow that represents a symlink; it shouldn't. (Ref# 20425)

Workarounds: If you're using PtFileSelection(), you could try using a PtHook to install a style.

If you're using the PtFileSel widget directly, you could use the resource to provide your own icon.

ptermcs

The ptermcs utility core-dumps when saving. The problem is in PxTerminalBuildCharsets(): if the “internal” charset is NULL but the “font charset” is specified, it builds a bad data structure that causes PxTerminalSaveCharsets() to crash. (Ref# 19568)

PtMultiText

Scrolling a PtMultiText in a PtOSContainer brakes the content of the offscreen container. (Ref# 20565)

Mozilla

Mozilla server doesn't handle graphic mode change. If you change the graphics mode (using Launch-->Configure-->Graphics) and if you have Voyager already running, this will cause the Voyager window to go blank. (Ref# 20441)

Workaround: Exit Voyager and restart it after changing the graphics mode.

Save Target As... (Voyager)

In Voyager, if you right-click on a link, the Save Target As... item in the context menu doesn't work. (Ref# 20476)

Workaround: Click on the link —don't right-click — and if the browser can't handle the target, wait for the browser to display the file selection dialog, then download the window.

If the browser can display the target in the window, choose File-->Save Document As....

Phindows

Phindows is slow via a modem connection (Ref# 19986)

A phrelay performance problem was fixed too late to make it into the 6.3.0 GA release. It affects mainly situations where round-trip time is slow, such as over a modem link, and was present in 6.2.1 as well. The fix will be made available in the first 6.3.0 update. The fix includes phrelay, phindows.exe (v2.15), and phditto. A fixed 6.2.1 version of phrelay will also be available.

3D demos (QNX Neutrino hosts only)

You'll find 3D demos under /usr/photon/demos/glph/. You can run them from the Launch menu (Launch-->Demos-->OpenGL).

PtText and PtNumeric

New! PT_CB_ACTIVATE and PT_CB_ARM callbacks don't work with PtText and PtNumeric. (Ref# 21608)

Workaround: For a PtText, add this code:

int raw_text_callback( PtWidget_t *widget, void *data, PtCallbackInfo_t
*cbinfo )
{
    PtSuperClassRawEvent( PtBasic, widget, cbinfo->event );
    return Pt_CONTINUE;
}

When you create a PtText widget, add this code:

PtRawCallback_t text_cb = { Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE,
  raw_text_callback };
…

PtSetArg( …, Pt_CB_RAW, &text_cb, Pt_LINK_INSERT );
… = PtCreateWidget( PtText, … );

You can use similar code for a PtNumeric widget.

PhAB

New! Opening a PhAB 6.2.1 project in the 6.3 IDE or PhAB converts it to a 6.3 project, which then won't run correctly if compiled for a 6.2.1 target. (Ref# 24298)

Workaround: If you're using the coexistence feature in the IDE to target Neutrino 6.2.1, you should set the IDE to open the 6.2.1 version of PhAB. To do this, change the Path to Photon Appbuilder setting on the Appbuilder preferences dialog (Window-->Preferences-->QNX-->Appbuilder).

phditto

New! If you run gdb over phditto, gdb hangs, because the Photon server spawned by phrelay inherits phrelay's set of ignored signals including SIGUSR1, which gdb relies on. (Ref# 24817)

Workaround: Launch pterm windows using pwm's Desktop Menu (press Alt-Enter or right-click on the desktop background) instead of using the Terminal button on the shelf. Only pterm windows started by shelf inherit the ignored SIGUSR1.

Another option is to write a wrapper around gdb to reset SIGUSR1.

Helpviewer

Qnet

startup-*

startup-bios
New! There's a new -I option that isn't described in the documentation. (Ref# 24418)

Workaround: Here's the description:

-I irq
Make irq the highest-priority hardware interrupt in the system. You can specify a number from 0 through 7 (the default is 3).

TCP/IP

Solaris-specific

Windows-specific

Helpviewer

In the Neutrino Helpviewer, the search facility treats a hyphenated term (e.g. “io-usb”) as if it were two separate words. (Ref# 20730)

Workaround: Turn off Match Whole Words, then search. For example, searching for “io-usb” will show occurrences of “io,” “usb,” and “io-usb.”

Documentation

Assuming you've installed your development suite, you'll find an extensive set of online documentation in HTML format. Go to the help menu item (e.g. in Windows XP: All Programs-->QNX Momentics-->Documentation) or look under the following directory:

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

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

Technical support

If you have any questions, comments, or problems with a QNX product, please contact Technical Support. For more information, see the How to Get Help chapter of the Welcome to QNX Momentics guide or visit our website, www.qnx.com.

List of fixes

The problems fixed in 6.3 include the following:


Note: This is only a partial list of all the problems that are fixed in this release. If you know of a particular issue that isn't listed here, please contact your QNX representative for its status in this release.

New! We've updated this section to reflect the corrections that we've made, instead of the problem. We've also listed the changes to the software and documentation separately.

Software fixes

Change Ref #
If you set an alias for an interface, phlip now applies it to the correct interface. 3280
When entering Direct mode, or switching to the same mode you started in (same resolution, bit depth, and refresh rate), the displayable area no longer shrinks. 3623
devn-smc9000.so now handles promiscuous mode. 6531
timer_gettime() and timer_settime() no longer return invalid values. 7613
phdialer no correctly converts the modem auto-disconnect time from minutes to seconds. 8069
We now ship mkfontdir for Windows and Solaris. 8322
It's now possible to use setrlimit() to set a process's maximum heap size (RLIMIT_DATA). 9070
The mtu option no longer makes the ARMLE variant of devn-smc9000 crash. 9357
The Local Protect Bit (LPB) is now set correctly in full-duplex mode, so devn-ppc800.so no longer encounters transmission errors 9569 (Ticket ID 38913)
On mipsle platforms, ftpd no longer faults whiling listing a directory. 9771
The SMC9000 driver now supports multicasting with the Lubbock BSP. 9888
PtScrollContainer now positions its scrollbars correctly when the scrollbars are set to “display always.” 9988
devb-aha2 no longer faults if you don't have any AHA 2 cards installed. 10391
Applications that use a PtOSContainer widget no longer have problems when redrawing via phrelay. 10628
spawnp() no fails with an error of EACCES when you try to execute a directory. 11417
PtSlider now correctly changes its appearance when you set the Pt_GHOST flag. 11531
The devg-rotate* drivers now correctly handle scaled blits. 11593
flashctl now rounds the values of the -o and -l (“el”) options down to the nearest block bound. If the range specified exceeds the partition size, it's rounded down to fit. If you use the -v option, flashctl displays what the values have been rounded to. 11738
The Acer EIDE driver now has DMA support for CD-ROMs. 11788
The devf-dbpxa20dp flash driver no longer crashes with a SIGBUS error on ARM. 12449
If you use waitfor in a startup script, processes that depend on the entry in /dev now find the entries correctly. 12450
The performance of the devn-prism.so driver is now better. 12455, 14339
In the IDE, the output from an application run using Run-->C/C++ Application now consistently makes it to the console. 12485
The PtWebClient interface and the voyager server now let you match whole words when searching. 12596
The USB stack now allows multipacket interrupt transfers. 12642
The TVIA driver now renders the image correctly with the digital interface. 12719
devn-speedo.so now detects the correct MAC address and works with large EEPROMs. 10983, 12774
The front porch timing is now correct in the TVIA graphics driver. 12809
The autodetection scheme that npm-qnet-compat.so uses to determine whether or not the platform it's running on supports misaligned access now works on ARMBE targets. 12989
The x86 version of J9 no longer crashes the kernel when it runs out of RAM. 13280
devn-sis9.so now honors the speed and duplex setting specified on the command line. 13297
Alpha maps can be put in shared memory, and the graphics framework and the PNG loader now support RGBA images. 13362
The IDE no longer stores project-specific data in .metadata. 13365
In the IDE's Debug perspective, you can now cast a selected variable to a differet type in the Variables view. 13367
The network drivers now allocate 64 receive descriptors and 128 transmit descriptors by default. 13453
There are no longer any problems using PCI memory as shared memory on SH4 targets. 13532
PdCreateOffscreenContext() and PdGetOffscreenContextPtr() no work correctly on ARM targets. 13539
devc-serppc8260 and devc-serppc800 now send commands correctly. 13741
devn-fd.so now increments its packet counts correctly. 13785
In the IDE, if you launch the Memory Analysis module, and the application is being debugged, you can now reattach the debugger when a memory error is encountered. 13968, 14099
devn-speedo.so no longer auto-negotiates when the media rate is forced on the command line. 13970
devb-eide no longer faults on MIPSBE because of a command-line typo (== instead of ==). 14114
BREAK now works on the SCI AND SCIF port of devc-sersci. 14166
Bulk transfers no longer timeout on the devu-sp1161 driver. 14197
devn-epic.so no longer drops multicast packets in promiscuous mode. 14225
devn-ns83815.so no longer drops multicast packets in promiscuous mode. 14246
devn-rtl.so no longer drops multicast packets in promiscuous mode. 14247
devn-via-rhine.so no longer drops multicast packets in promiscuous mode. 14248
devn-i82544.so: _IO_NET_REMOVE_MCAST now removes (rather than adds) addresses. 14256
devn-via-rhine.so: _IO_NET_MCAST_RANGE now processes the entire range. 14259
devn-rtl.so: _IO_NET_MCAST_RANGE now processes the entire range. 14264
When you set Pt_END in the Pt_CB_LOST_FOCUS callback for a PtComboBox, the widget now correctly maintains focus instead of shifting it to the next widget. 14286
The IDE's Debugger is now faster when uploading/initializing large applications. 14287
devb-ncr8 no longer faults in libcam.so.2 when copying files to disk. 14388
devn-fd.so no longer faults when you use it with Qnet on x86 targets. 14389
startup-bcm1250 can now detect memory properly when there's more than 256 MB. 14404
The translation of Photon events no longer causes problems when the emitter region is the same size as the Photon space. 14421
Navigating the Help tree in the IDE is now faster. 14506
devc-sersci now sets the parity and stop bits correctly. 14528
Dual use of USB HID and bulk now works correctly. 14644
devg-radeon.so no longer distorts images when they're scaled down. 14662
The resolv.conf file now supports a nocache keyword that prevents the socket library's resolver code from caching the nameserver's configuration. 14686
We've corrected the SH7751_PCI_STAT_* definitions for pci-systemh. 14795
Simultaneous interrupts no longer cause the system to freeze on the MGT5100. 14823
devu-ohci no longer prints diagnostics when you run the usb utility, unless you've specified the verbosity option. 14838
You can now include spaces in the ssid option for all wireless network drivers. 14868
A flood ping no longer kills devn-prism.so. 14880
devb-eide is now faster on PPCBE MTX platforms. 14944
A blue arrow now helps you keep track of the active line of code in the IDE's Debug perspective. 15017
dhcp.client can now reconfigure an interface that has already been reconfigured. 15072
devc-sersci now has odd and even parity correct. 15102
The date on a generated temporary license no longer appears in the local format (which caused problems with Flexlm). 15170
The HID driver now enumerates USB devices correctly. 15183
The devn-prism.so driver now supports retrieving the BSSID value. 15211
mprotect() now correctly honors SHMCTL_LOWERPROT set on memory objects. 15227
devn-ne2000.so no longer makes io-net crash. 15229
The devf-* drivers now handle the timeout that AMD flash uses after issuing an erase sequence specifying additional erase blocks. 15279
devn-tulip.so no longer takes 25 seconds to auto-negotiate the media rate. 15286
Creating a debug version of a large application no longer causes an internal compiler error. 15296
You no longer get “unable to get stack depth” errors while launching the (IP - qconn) debugger with a simple C/C++ application. 15309 (Ticket ID 61634)
fs-cifs now supports code sharing. 15362
devn-tulip.so now works correctly on the MTX604 platform. 15370
devn-gt64260.so: mount/umount with traffic no longer locks up the board. 15374
The ARMLE kernel no longer has high latencies when a program is terminating. 15377
devn-via-rhine.so no longer faults during a benchmark test. 15394
The system now has a way to be notified when the autoip module either chooses an address or notices a DHCP server address. 15421
The snd_pcm_plugin_params() function no longer leaks playback streams. 15445
In the IDE, the Remove executables from target option now works for serial debugging. 15455, 15461
A high-priority thread in a usleep-loop no longer causes some problems with round-robin scheduling for other threads running at a lower priority. 15456
io-graphics no longer crashed when the shared-memory area is too small for the given PgReadScreen() command. 15499
The shutdown command's -S option no longer supports the photon or user type. Use phshutdown for Photon's shutdown options. 15528
Compiling large C++ sources with debugging using the Dinkumware <xmemory> header no longer results in an internal compiler error. 15530
The reboot callouts on SH boards no longer have an error accessing the system page. 15534
A flood ping no longer hangs the SMC9000 driver. 15563
The flash library now passes the correct offsets to the suspend/resume MTD functions, so the devf-generic driver longer core-dumps (a side effect from AMD MirrorBit changes). 15566, 16060
The Microsoft ISA Firewall Client is now compatible with PhAB for Windows. 15568
Calling mmap() or mmap_device_memory() with MAP_FIXED no longer causes the kernel to crash. 15573 (Ticket ID 61868)
The USB interrupt transfer handler is now called correctly. 15578
It's now possible to verify that the version of /usr/lib/ldqnx.so.2 that's loaded into memory is the same as the version on the disk. 15579
io-net -dspeedo mmap no longer faults while parsing the options. 15608
The ecpp library now supports uint64_t. 15653 (Ticket ID 61889)
The input drivers now ignore the Pause Break key; it no longer clears the Pk_KF_Compose flag forever. 15681
deflate now works as a mkefs filter. 15683
devn-el900.so no longer resets the multicast filter when promiscuous mode is disabled. 15721
devn-speedo.so no longer resets the multicast filter when promiscuous mode is disabled. 15722
devn-i82544.so now supports the DCMD_IO_NET_CHANGE_MCAST command to devctl(). 15728
devn-speedo.so now supports the DCMD_IO_NET_CHANGE_MCAST command to devctl(). 15731
GDB now correctly gets I/O privileges when single-stepping over a ThreadCtl(_NTO_TCTL_IO,0) system call. 15735, 19351
dumpefs now has a usage message. 15794
The USB stack now correctly handles the removal and insertion of devices. 15852
Thread creation no longer fails with ENOMEM. 15865
devn-tulip.so no longer reports the wrong speed and duplex settong after a parallel detection. 15869
The USB stack now correctly send an interrupt IN request within the specified polling period. 15871
Configuring the PRISM driver no longer causes it to reset every four seconds. 15872
The startup time for devf-systemh on SystemH has improved. 15880
Our SH4 kernel calls now save the frame pointer, so gdb can now backtrace out of them. 15882
The usage message for devn-bcm1250.so now gives the correct IRQ setting (0x80050013). 15895
We've added a missing _CSTD to <netmgr.h>, so this file now compiles for C++. 15904
If you use the VESA driver on an SMP machine, your machine no longer spontaneously reboots. 15928, 16009
devg-tvia.so: we corrected some TVIA Cyberpro 5050 video overlay problems. 16006 (Ticket ID 62284)
deva-ctrl-sis.so is now included in 6.3. 16020
PiFlipImage() can now flip PNG pictures. 16059
The driver for the Renease Camelot-Biscayne no longer suffers from a DMA problem that caused “pops” and “clicks.” 16084
In PhAB, if you import a GIF with transparency as a button image, and you close that project and reopen it, the transparency in the image is now maintained. 16097
When devn-pcnet.so runs with a big stack, it can now receive packets longer than 32 bytes. 16187
Standard utilities no longer core-dump with the SMP kernel on MIPS 1250. 16206
The -fno-fp-moves option is now set by default for the compiler for PPC code. 16263
devn-bcm1250.so now handles multicast packets correctly in promiscuous mode. 16293
Running devn-speedo.so driver with two Speedo network cards no longer causes a system hang. 16337
devn-bcm1250.so: removing a Compact Flash card no longer produces an error (“Free IRQ: Invalid argument”). 16340
We corrected an problem with operator precedence in tto.c for devc-serppc8260. 16375
PhAB for Windows now handles transparent GIFs correctly. 16392
gcc now correctly recognizes the “mutable” qualifier. 16397
devc-serppc8260 now correctly unmasks the Carrier Detect and hardware flow-control interrupts. 16431 (Ticket ID 62640)
We now ship a Windows version of the deflate utility. 16457 (Ticket ID 62518)
In the IDE, setting or removing a breakpoint no longer suspends running processes. 16465
PgDrawPolygon() no longer draws extra lines in a polygon. 16466 (Ticket ID 62627)
If you use ftp -u .... in a system call, it no longer returns an error even if it uploaded the file correctly. 16469 (Ticket ID 62351)
/etc/nslookup.help is now correctly /usr/share/misc/nslookup.help. 16481
The PtWebClient widget, when connected to Mozilla now handles its configuration settings properly. 16498
If you specify the nomulticast command-line argument to devn-rtl.so, and you then issue a DCMD_IO_NET_CHANGE_MCAST devctl() command, the driver now correctly sets the error code to ENOTSUP. 16505
devn-tulip.so no longer incorrectly resets the multicast filter when you disable promiscuous mode. 16509
devn-tulip.so's multicast filter is no longer corrupted when you add a large number of addresses. 16511
devn-el900.so's multicast filter is no longer corrupted when you add or remove large sets of multicast addresses. 16513
Toggling promiscuous mode no longer interferes with devn-el900.so's multicast filter. 16515
If dispatch_block() is interrupted by a signal, it once again returns NULL and sets errno to EINTR. 16531
The IDE's debugger no longer uses the wrong name for the executable when you launch a Standard Make C Project. 16535
The smartset -R option to devi-elo now works correctly (i.e. it doesn't reset the device). 16564
Photon now honors the setting of the NumLock on startup. 16583
In the IDE's System Builder, you can no longer set the use-in-place or copy attribute for items that you're adding to an embedded filesystem. (This setting has no meaning for an embedded filesystem.) 16609
Including the ha/ham.h header in a C++ application no longer causes compile errors. 16648 (Ticket ID 62597)
If you try to import a QNX 4 Photon application into PhAB, and the files includes Windows end-of-line characters, PhAB no longer tries to import the application. 16709 (Ticket ID 62828)
We now ship the fdformat utility for Windows hosts. 16738 (Ticket ID 62852)
The Variables view in the IDE's Debugger now correctly displays multiple variables with the same name. 16753
The use command no longer crashes if you use the malloc_g library. 16769
PhAB language translation now works correctly with a widget database opened with ApOpenDBaseFile(). 16786
The devn-i82544.so driver no longer reports an error when you specify the busindex option. 16818
The devn-eepro.so driver no longer fails under a heavy load. 16842 (Ticket ID 62976)
The rsrcdbmgr_*() functions no longer fail because of an error in sorting an internal list. 16872
Lines with a stroke width > 1 are no longer drawn 1 pixel too wide. 16889
io-graphics no longer crashes with a SIGSEGV when used with the devg-rotate90 driver. 16892
devb-eide now works correctly on the Sandpoint board (X3 and X2). 16900
devp-biscayne now has a -d option that you can use to override the default time (500 ms) that the driver waits before enumerating the cards. (The MSAC-PC2 MemoryStick adaptor requires more than 700 ms to initialize.) 16901
If you call fcntl() with F_DUPFD and a file descriptor's that's greater than the configured number of maximum open file descriptors per process, the function now sets errno to EINVAL instead of EMFILE. 16960
The gettytab file is now correctly shipped in /etc/config. 16971
PCI servers no longer SIGSEGV when you call pci_read_config8() called with length of 256 or more. 16996
A hard power-down no longer causes file corruption. 16999 (Ticket ID 63132)
The Thread Info view in the IDE's Application Profiler now correctly shows rarely scheduled threads. 17003
devn-epic.so and devn-gt64260.so now have an mtu option that you can use to set the maximum transmission unit. 17026, 17027
The IDE's System Builder now supports Ctrl-C in the Serial Terminal view. 17054
cpp0 no longer fails to include some include files under Cygwin. 17076
Resetting the sample counts in the IDE's Application Profiler now zeroes out the call-count information. 17093
The IDE's debugger no longer locks up when it's disconnected from the target (e.g. when the power fails or a cable is disconnected. 17095
The bootscript editor in the IDE's System Builder now supports keyboard shortcuts for cut, copy, and paste operations. 17096
devn-i82544.so now supports promiscuous multicasting. 17139
With devn-ns83815.so, if you enable promiscuous multicast mode, and then enable and disable regular promiscuous mode, promiscuous multicast mode is now correctly still enabled. 17141
devn-speedo.so no longer hangs when you add a lot of multicast addresses to filter. 17142
devn-speedo.so now displays the negotiated duplex setting in nicinfo's output. 17151
If you use ifconfig to create and assign more than one VLAN interface, the assigned MAC addresses are now displayed correctly. 17172 (Ticket ID 63323)
The BENQ CD rewriter can now read CD filesystems. 17186
We now ship devg-i830.so. 17209
Phindows now correctly draws lines in Pg_DRAWMODE_XOR mode. Note that Phindows doesn't support the extended drawing modes, including XOR raster operations such as Pg_DrawModeDSx. 17217
If you set Pt_SHOW_TITLE in the Pt_ARG_CONTAINER_FLAGS for a PtMultitext, PhAB no longer crops the widget's vertical scrollbar. 17218
devn-epic.so now uses the speed and duplex setting specified on the command line. 17255
devn-speedo.so no longer has transmit lockup/slowdown issues. 17268
devn-smc9000.so no longer hangs the Daytona board when you umount the device during high traffic. 17287
devg-banshee.so now handles alpha maps correctly in 8bpp mode. 17289
_mcount is now correctly defined when compiling for profiling for ARM targets. 17298
In the IDE, compile times are now shorter when you've enabled enhanced dependency checking. 17299
New RAM-detection routines now allow BCM1250E and BCM1125E to boot. 17312
Phindows now correclty handles expose events for alpha images. 17323 (Ticket ID 63511)
The first insertion of a CD is now correctly detected with a Plextor CD-Writer. 17340
devf-ram now handles SRAM properly. 17344
pfm now has a filename-encoding option that lets you tell it how to treat filenames that include non-UTF characters. 17349
devn-bcm1250.so can now run port1 on BCM91125 a second time. 17353
devf-bcm91125 no longer crashes with a SIGBUS in little-endian mode. 17358
pidin now sorts its output by process ID. 17376
The IDE now gives you more control over the names of output files. 17384
The IDE now provides a way for you to add variants (QNX Projects). 17385
make clean in IDE now removes .i files. 17388
IDE now lets you specify compiler and linker options manually. 17390
The IDE's System Summary now displays the correct amount of used memory. 17396
The version of memcmp() in libmalloc now works correctly. 17401 (Ticket ID 63540)
The BCM1250A BSP now properly detects noninterleaved RAM in big-endian mode. 17414
The getaddrinfo() function no longer faults if the hostname can't be resolved. 17441
pppd no longer crashes with a SIGBUS or SIGSEGV during connection on SHLE targets. 17445
devn-ppc405.so now reports the correct duplex setting in nicinfo. 17478
You can now load an SH4 dump file in a standard C project into the IDE's postmortem debugger launch configuration. 17483
Data corruption no longer occurs when you transfer a file to an NFS drive and the server is qnx. 17567
For devn-ns83815.so, adding or removing large sets of multicast addresses no longer corrupts the multicast filter. 17570
With devn-i82544.so, if you delete multicast addresses from an empty filter, you now get an error of ENOENT. 17571
tracelogger now supports daemon mode. 17572
devn-el900.so no longer fails with the 3COM 3CCFE575BT card. 17573 (Ticket ID 63671)
libc has a better implementation of ftw() and now implements nftw(). 17575
A mmap() of physical memory now gets the right color on SH and MIPS targets. 17582
ntpd no longer displays “Can't adjust time (0 sec, -24 usec): Invalid argument” messages. 17593
With devn-tulip.so, if you start with an empty filter, force a filter overflow, and then go back to an empty filter, the protocol stack now correctly doesn't get any multicast packets, because the filter is empty. 17598
devn-epic.so now uses the correct transmission rate in duplex mode. 17604
If you use pci_attach_device() to connect a device with the PCI_PERSIST flag set, then subsequently attach with the PCI_SHARE flag set, the resources are now correctly shared. 17606
Qnet no longer leaves clients NET_REPLY-blocked if the cable is disconnected. 17640
qtalk now correctly clears the FILENAME macro after sending a file using qcp. 17677
Qnet now works correctly with two (or more) Ethernet network cards plugged into the same network. 17763
The bind=ip option to npm-qnet-l4_lite.so now works correctly on MIPS, ARM, and SH processors. 17810
devi-hirun no longer core-dumps if keyboard-mapping files aren't found. 17811
In PhAB, if you click a file in the Browser Files panel, the file is no longer popped up twice. 17834
devg-i830.so: the bus no longer locks when you use the overlay. 17859
If you change a PtBasic into a PtArc, the arc is no longer a very large size. 17865
devn-ppc405.so now reports the correct speed of in nicinfo. 17877
libsocket now correctly exports the symbols dn_skipname and __dn_skipname. 17898
ldqnx.so now honors weak undefined symbols, even in DLLs. 17912
Capital letters with glyphs no longer get truncated at large point sizes. 17930
When you're debugging a C++ program in the IDE, you no longer get messages of Error while reading shared library symbols: string table offset backs up at 64. 17954
mkifs now reserves enough space in the OS images for [data=uip] executables. As a result, booting with the debug shell no longer hangs the boot procedure. 17961
The pre-6.3 version of Qnet (npm-qnet-compat.so) now does some consistency checking to handle node-down situations. 17963
SMP systems now boot correcty when using procnto-smp. 17984 (Ticket ID 64023)
When debugging a Photon application (using gdb), if you copy something to the clipboard, your terminal window containing gdb no longer freezes. 17993
If you use a PtTree, calling PtTreeModifyItemString() now damages the widget correctly. 18001
Using devg-i830.so with fullscreen programs no longer causes the machine to reboot. 18013
devn-i82544.so is now enumerated properly when you start your system. 18035
devg-i830.so no longer causes a test application to run READY. 18046
The res_queryN() function (called from getaddrinfo()) now allocates a larger stack, so it can run properly. 18053
The usage message for devn-i82544.so now has the correct vid, did, and pci options. 18057
The TFTP server now works correctly on Linux, Neutrino, and Solaris hosts. 18097
Using name_attach() no longer causes applications to crash. 18161
C++ programs no longer fail to execute when compiled with gcc 3.3.1 for ARMLE and SHLE targets. 18224
PtMenuBar's anchor flags are now honored after you've turned anchoring off and then back on in PhAB. 18226
devg-banshee.so (with all 3dfx Interactive VooDoo3 chipsets) no longer corrupts the display when you scroll in the Voyager browser. 18227
Repeatedly mapping (MAP_FIXED) to an address returned from mmap() no longer fails. 18230
Mapping to a fixed virtual address no longer fails on MIPS. 18231
The fs-nfs3 utility no longer corrupts mountpoint directories. 18257
devn-i82544.so driver now auto-negotiates to 10 Mbps. 18271
fs-cifs no longer causes errors when you compile an application on a mountpoint. 18337 (Ticket ID 64307)
The Qnet DNS server no longer truncates the domain if it matches the current domain. 18343
The nfsd utility no longer has trouble handling many clients. 18369
munmap() now correctly sets errno to EINVAL if you specify a size of zero. 18413
PhAB's pixmap editor no longer has a clipping problem. 18430
If a sudden power loss corrupts a flash filesystem directory entry as it's being written, it's now properly detected and repaired the next time the driver is run. 18446
Holding a key no longer causes Photon to consume a lot of CPU cycles. 18453
A stack walkback using __builtin_return_address on PPC targets no longer causes a SIGSEGV. 18457 (Ticket ID 64448)
devc-ser8250 no longer randomly pauses transmission for a number of seconds. 18465 (Ticket ID 64124)
devf-generic's format operations no longer show an “overpoll” error on Biscayne SHLE platform (AMD MirrorBit-related). 18477
libfs-flash3 now correctly sets errno to EINVAL for unsupported XTYPES. 18516
tinit -p no longer displays a text-mode login before starting Photon. 18653
phlogin now runs .profile when you log in as root. 18716
The find utility now returns 0 if all path operands were successfully traversed, or a positive number if an error occurred. 18763
PhAB for Windows no longer has problems with special characters (e.g. umlauts) in its resource editors. 18787
The device enumerator now starts multiple audio drivers correctly. 18811
If you use DL_DEBUG, dlopen() now displays diagnostic messages if it can't open the library. 18857
io-usb now supports device insertion and removal. 18891
devf-generic no longer runs READY on 6.2.1 Biscayne systems with Strata Flash. 19006
The ps utility once again displays the processes' name and arguments. 19031
The IDE's QNX Project now supports a more complex build structure. 19060
You no longer get warnings about the deprecated attribute when you compile code that includes <math.h>. 19155
mkifs no longer strips the version information (QNX_usage, QNX_info, and QNX_Phab) from binaries in an image filesystem. 19183
opendir() no longer leaks file descriptors after you call exec(). 19223
The template for PtRaw now includes the Draw, Init, Extent, and Connect functions. 19274
PhAB no longer core dumps when you click Done in the Edit Template dialog and the directory is empty. 19294
If you move the needle of a PtMeter in test mode, the needle no longer disappears. 19313
In the IDE, you can now remove a process from the Debug view, even if you started the process from the File System Navigator with no console. 19371
PhAB no longer lets you modify image dimensions before you've created a new image. 19419
We've fixed various issues that caused FFSv3 corruption. 19421
When a thread is created, if the process has reached a breakpoint, the new thread is also stopped. 19446
Phindows now supports local font-lookup. 19460
PtPolygon and PtBezier no longer shift relative to their parent's position (if the container's position isn't (0,0)). 19553
io-blk no longer has a 10 MB cache cap; the limit is now 15% of system memory. 19619
io-graphics now marks images on PPC as big-endian. 19658
execl() now correctly returns EACCESS when you don't have permission to search the target directory. 19692
The DHCP and NTP binaries now include embedded build properties (displayed by use -i). 19705
Changing the numeric value of a PtNumericFloat() no longer resets the value to 0.0 19730
In the IDE, importing a C++ library project no longer turns it into a C++ application project. 19731
In PhAB, if you drag and drop a template in a template folder, the correct name is now displayed in the Selected Templates field. 19745
In the System Profiler in the self-hosted IDE, moving a window over an editor no longer causes redraw problems. 19746
qnxplayer no longer core-dumps when you run the Audio Player from Phindows. 19777
devn-pegasus.so no longer has problems registering its entry in /dev/io-net. 19802
PtNumeric widget and its subclasses no longer have Pt_CALLBACKS_ACTIVE set by default. 19814
If you change a menu module or menu item in a menu module, PhAB now knows that you need to regenerate the code the next time you build the application. 19821
In PhAB for Windows, the rightmost and bottommost stripes of the PhAB window are now drawn correctly. 19828
devg-tnt no longer causes background flickering with OpenGL applications. 19850
devb-ram no longer faults on MIPS targets when you use POSIX locks. 19868
resmgr_msgread() no longer erroneously returns 0 bytes because of a boundary condition in message passing. 19884
devf-bigsur and devf-generic can now identify flash devices properly. 19891
The IDE's System Builder now provides better support for the prebuilt directory in BSP packages. 19912
Images (16- and 32-bit) are no longer inverted on PPC targets. 19918
6.3.0 includes the J9 plugin. 19954
exec() no longer hangs if you try to execute a FIFO. 19957
The environment is now set up to allow a J9 plugin or VM to run, even from the browser. 19963
devg-i810.so no longer causes the contents of a Voyager window to be corrupted when you scroll horizontally. 19980
The IDE's System Builder now supports the [+page_align] attribute in OS images and embedded filesystems. 19981
Phindows exposures are now faster when the window isn't in focus. 20070
devn-smc9000.so now handles the speed and duplex options correctly, and its performance has improved. 20103
The video drivers no longer have endian problems on big-endian platforms. 20127
Moving the mouse over the shelf in Phindows no longer causes an assertion that causes the shelf to exit. 20152
devg-ati_rage128.so no longer locks up when it exits direct mode. 20169
Calling PgWaitHWIdle() no longer destabilizes applications. 20192
There's no longer a launchmenu or wm directory in /. 20199
We've corrected a boundary condition where an arc rendering flips over and renders the path in a clockwise fashion rather than counterclockwise. 20200
Resizing the Phindows window no longer breaks the blitting in PhAB for Windows. 20250
mozserver for Voyager can now download files. 20355
Photon executables now include build properties and version information that you can display with use -i. 20379
TCP/IP: valid ACKs are no longer thrown out if snd_nxt is rewound. 20430

Documentation fixes

Change Ref #
The documentation for cvs now mentions that CVS requires the HOME environment variable be defined. 10101
We've updated the Photon in Embedded Systems appendix in the Photon Programmer's Guide. 12451
The documentation for the Renesas SystemH BSP now advises you to avoid using initialized global variables in the IPL; use automatic variables instead and pass them by value or reference. 13059
The documentation for calloc(), free(), malloc(), and realloc() now tell you to include <stdlib.h>. 14268
We've updated the entry for the usbd_hcd_info_t structure in the USB DDK documentation to include some new members. 14380
The documentation in the IDE's help system and in the Photon helpviewer (/usr/help/product) are now in sync. 14479
The documentation for tar now explains that this is a GNU utility and is incompatible with POSIX. 14590
We've corrected many errors in Sandpoint BSP documentation. 14792
We've added a technical note on choosing the correct MTD routine for flash filesystems. 14884
The documentation for sem_open() now explains that if the message-queue server isn't running, the function sets errno to ENOENT. 14911
The documentation for strrchr() now says that this function returns a const char*. 15034
The documentation for inputtrap now says that it prints out the devi-hirun command line only if you specify the query option. 15198
The documentation for devn-pcnet.so now lists the valid values for “receive” and “transmit.” 15400
We've corrected some minor errors in the documentation for the Big Sur and Aspen BSPs. 15438
We've corrected a DMON command in the Camelot/Biscayne BSP documentation. 15529
The documentation for devf-generic no longer wrongly claims that the driver works only on 16-bit devices. 15995
We've removed references to the obsolete meminfo section from the startup* documentation. 16091
The documentation for the Renesas SystemH-ASB BSP now explains how to start devu-ohci-amanda 16266
The Utilities Reference now includes entries for the devg-rotate90.so and devg-rotate270.so rotation drivers. The entry for io-graphics now includes the -T option. 16683
We've added the -h and -H options to the documentation for devc-sersci. 16835
We've corrected the documentation for nanospin_ns() and nanospin(); these functions return an error code instead of setting errno. 16849
The documentation for devu-ohci.so, devu-uhci.so, and devu-ehci.so now includes all the options. 16924
The documentation for devn-fd.so now says that it doesn't support multicast addresses. 17015
We've corrected the type of the info argument to layer_query() in the Graphics DDK documentation and added a description of the disp_layer_query_t structure. 17115
The Utilities Reference now includes an entry for devg-i830.so. 17209
The documentation for devi-microtouch now includes the usbtouch option. 17257
We corrected the name of the board in the Walnut BSP documentation. 17282
The documentation for pthread_getspecific() and pthread_setspecific() now states that you must call these functions with a key that you got from pthread_key_create(). You can't use a key after destroying it with pthread_key_delete(). 17644
We've added an entry for devn-dm9102.so to the Utilities Reference. 17705
The documentation for mknod() now correctly says to set the mode argument to S_IFIFO to create a FIFO. 17807
The documentation for io-blk has more information about the effect of setting the commit option. 17857 (Ticket ID 64005)
The documentation for mkifs now includes the -n option. 17869
The Utilities Reference now has entries for mmplay and qnxplayer. 17969, 17970
The documentation for devu-prn now gives the correct default device name (/dev/usbpar0). 18208
The Neutrino User's Guide now mentions that NCFTP is third-party software. 18238
Building Embedded Systems now describes the ppc405_set_clock_freqs() function. 18254
The entry for ado_pcm_cap_t in the Audio DDK documentation now describes the max_frag member. 18590
The documentation for ApCreateWidget() now warns you not to close the database until you're done with the image (if it contains image resources). 18663
We've corrected the example for PhAppAddInput() in the Photon Library Reference. 19217 (Ticket ID 64955)
The documentation now includes a guide to help you port applications from QNX Neutrino 6.2.1 to 6.3. 19385
The documentation for the Dinkum libraries now appears in the IDE's help system. 19411, 19807
The entries for PfFractionalExtentText(), PfExtentText(), PfExtent(), and PfExtentCx() in the Photon Library Reference now explain how the functions determine the height of the text. 19417
The documentation for PdCreateOffscreenContext() now explains that you can set the flags to 0. 19791
The documentation for devc-sersci now describes the sh7760scif# serial port. 18803
The documentation for PtNumericFloat and PtNumericInteger now states that the Pt_CB_NUMERIC_CHANGED callbacks are invoked if you've set Pt_CALLBACKS_ACTIVE for the widget and you then use PtSetResource() or PtSetResources() to change the widget's value. 19824
We don't provide a Printer DDK, so we've removed the documentation for it. 19968
The names of the members of the PgHWCaps_t structure have been corrected in the entry for PgGetGraphicsHWCaps() in the Photon Library Reference. 20068
The Pt_LIST_INACTIVE flag no longer exists. 20083
We've updated the description of PhKeyEvent_t in the Photon Library Reference. 20170
The entry for PhEvent_t in the Photon Library Reference now includes the Ph_OFFSCREEN_INVALID event subtype of Ph_EV_INFO. 20172
We corrected an example of PdReleaseDirectContext() in the Raw Drawing and Animation chapter of the Photon Programmer's Guide. 20193
We've documented the new Photon clipboard API: PhClipboardWrite(), PhClipboardRead(), PhClipboardCopyString(), and PhClipboardPasteString(). 20230
We've added a section on using custom TrueType fonts in PhAB for Windows in the Using PhAB under Microsoft Windows appendix of the Photon Programmer's Guide. 20232
PtTerminal and pterm now let you paste more than 64 KB from the clipboard; we've updated the documentation. 20258
PtFlash supports Flash 4, not 5. We've corrected the documentation. 20377