QNX Technical Articles
QNX® Momentics® 6.3.0 Professional and Standard Editions Release Notes
Date of this edition: November 17, 2014
![]() |
Changes to these notes since June 7, 2004 are highlighted below
with this icon:
|
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)
![]() |
|
![]() |
Make sure that Plug and Play OS is disabled in the BIOS before you run QNX Neutrino self-hosted. |
Contents...
- What's new in QNX Momentics 6.3?
- Changes
Experimental items
- Known issues
- Documentation
- Technical support
- List of fixes
![]() |
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?
![]() |
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:
![]() |
For more details, please refer to the “what's new” sections in the docs. |
Momentics
- Simplified installation — we're now using InstallShield for all hosts except QNX Neutrino (which installs via tarballs and shell scripts). The QNX Software Installer is now used only for third-party software.
- Version coexistence — you can install 6.3.0 and still build 6.2.1 target systems. (See the section below.)
- Linux-hosted development — we officially support Red Hat 8/9, but most Linux systems should work.
- GCC 3.3.1 support — enhanced C++ ABI (smaller footprints); improved code-generation/performance (especially for ARM/XScale); compatible with third-party offerings (e.g. Intel icc compiler for X86).
- Enhanced IDE:
- v2.1.2 of the Eclipse framework
- v1.2 of the Eclipse C/C++ Development Tools (CDT) framework
- Code Coverage plugin
- Enhanced System Profiler plugin (new editor; event statistics views)
- Better integrated System Builder plugin (BSP integration; Builder projects can be built outside the IDE; Builder-specific navigator; support for adding directories; independent EFS generation)
- Numerous other enhancements (improved new-project wizard; more flexible project layouts; configurable keyboard shortcuts; improved build control; faster navigation; easier launch facility; and more).
- BSPs (binaries/bootable images) for several platforms.
For 6.3 and beyond, BSPs are available only from our website. - In QNX Momentics 6.3.0, separately packaged technology
development kits (TDKs) augment the base Neutrino OS with
specialized, value-added technologies.
The base QNX Momentics suite includes the operating system and services required for most embedded systems (e.g. filesystems, GUI, IP networking technologies). The value-added TDKs, which are available from your myQNX account center, help you control costs and achieve overall lower TCO for QNX Momentics-based systems.
The TDKs include:
- Flash Filesystem & Embedding
- Extended Networking
- Symmetric Multiprocessing
- Multimedia
- 3D Graphics
For more details, please contact your QNX sales representative.
![]() |
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
Utilities
Libraries
|
Neutrino
- USB 2.0 stack (with mass storage class driver)
- Updated TCP/IP stack to NetBSD 1.6 source base
- SCTP protocol support (in Extended Networking TDK)
- Asynchronous messaging (experimental implementation — may change)
- Qnet — new lightweight architecture featuring improved throughput, better reliability, and support for multiple simultaneous interfaces over various media.
- Global name service for Qnet
- IPFilter — for NAT and IP filtering (firewall) support (in Extended Networking TDK)
- Multilink PPP
- NTP (Network Time Protocol) client/server
- Process resource limits
- Performance Counter API
- Standardized (unpublished) performance benchmarks and interpretation documents
- Added support for PowerPC Book E Architectures (IBM 440 and Motorola PowerQUICC 3 [8540, 8560]).
- Added support for physical addresses above 4G on PowerPC, MIPS, and X86.
- New flash filesystem offers improved resistance to power-loss corruption (in Flash Filesystems & Embedding TDK).
- The OS now supports 256 priority levels.
Photon
- Extensible widget model (greater reuse of implementation code; widget layout managers; architectural footprint enhancements)
- GB18030-2000 Chinese character encoding
- 3D graphics (accelerated, OpenGL-based).
- New multimedia playback features (player/browser plugin using new multimedia framework; new readers/playback formats (MIDI; CD audio).
- Various other enhancements (io-graphics handles commands via config file; multi-headed displays; most Pg* functions are context-specific; added security to Photon clipboard [note that clipboard files are no longer compatible between 6.3.0 and previous releases]; clipboard changes cause a new event to be emitted; ped now supports drag and drop from the file manager; added support for the SGI image file format; and more).
The default permissions on /dev/photon are now 600, but you can use chmod to change the permissions if you want to let other people look at your Photon session and inject keys into your pterms.
![]() |
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.
).For details on using QWinCfg, see its entry in the Utilities Reference.
qconfig utility for non-Windows hosts
If you're using the command-line tools, use the qconfig utility to configure your machine to use a specific version of Neutrino:
- If you run it without any options, qconfig lists the versions that are installed on your machine.
- If you specify the -e option, you can set up
the environment for building software for a specific version
of the OS. For example, if you're using the Korn shell
(ksh), you can configure your machine like this:
eval `qconfig -n "QNX 6.3.0 Install" -e`
![]() |
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.)
![]() |
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):
- BSPs and DDKs
- Compiler and tools
- Core OS
- Asynchronous messaging
- C++
- dinit
- fcntl()
- FD_SETSIZE
- Instrumented kernel
- LD_LIBRARY_PATH
- libpm and libpmm
- pidin
- poll()
- POSIX Message Queues
- PPC startups
- Priority levels
- resmgr_handle_tune()
- select()
- Shared memory on ARM processors
- 64-bit “large file” libc/filesystem support
- Startup library
- stat()
- swapctl
- System page
- User's Guide
- Flags for ChannelCreate()
- Math functions
- Drivers
- Flash filesystem
- Installation
- Photon-specific
- Qnet
- TCP/IP
- Windows-specific
- Documentation
![]() |
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
- BSPs and DDKs are now packaged separately as standalone archives. The documentation is being changed to reflect this.
- BSPs will be available only from our website. (Ref# 18522)
- The IDE now includes a BSP Perspective. To build a BSP,
select
You can use this import facility only for 6.3 (and later) BSPs.
and follow the wizard's
instructions.
- The PowerPC startup- programs now have a -E option. For details, see the note re: PPC startups under Core OS below.
![]() |
For more information on BSPs and DDKs, see the installation notes and release notes (under /etc/readme/bsp|ddk/*.html). |
Compiler and tools
- Changed the configure search paths for editors to look for vi first, then vim and others.
- Fixed the MIPS issue where linked-against static objects were compiled with older versions of the binutils.
- Fixed a problem where the wrong installation directory showed up in pinfo files.
- Fixed some quoting issues under Windows. Now, output the mkasmoff -f option only if it's needed.
- The import library gets installed in a place that gets picked up during linking, even when the shared object is going to a directory meant for runtime only.
- Changed the usemsg -o option to spawn ntomulti-objcopy because the unprefixed version (objcopy) doesn't exist on all hosts.
- Introduced a proper Windows fix to prevent usemsg from calling ldrel.
- Added the ability to specify a path in default files (e.g. gcc/2.95.3,gcc_ntox86)
- Ensured that solib-absolute-prefix isn't initialized if it has already been set.
- Due to the new location of the default C++ libraries, you must either:
- ensure that boot images that contain C++ shared objects
include the explicit “versioned”
.so file (e.g. libcpp.so.4
rather than just libcpp.so)
or:
- specify the appropriate GCC version directory in the library search paths in your buildfiles.
- ensure that boot images that contain C++ shared objects
include the explicit “versioned”
.so file (e.g. libcpp.so.4
rather than just libcpp.so)
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.
![]() |
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
- 6.3.0 is shipping with both gcc-2.95.3 and gcc-3.3.1. Note that the newer version contains some alignment changes and adjustments. For details, see the 6.3.0 and 6.2.1 Compatibility note posted on our website.
- gcc-2.95.3 is the default compiler version. To get the
default compiler, simply run:
nto$CPU-gcc
or:
qcc -Vgcc_nto$CPU
To get a specific version, run:
nto$CPU-gcc-$version
or:
qcc -V$version,gcc_nto$CPU
Examples:
Command Compiler version ntoarm-gcc 2.95.3 ntoarm-gcc-2.95.3 2.95.3 ntoarm-gcc-3.3.1 3.3.1 qcc -Vgcc_ntomipsle 2.95.3 qcc -V2.95.3,gcc_ntomipsle 2.95.3 qcc -V3.3.1,gcc_ntomipsle 3.3.1
To change the default compiler in the IDE, use the Compiler Tab in the project Properties dialog. - GCC 3.3.1 has deprecated the pre-processor cpp0; this functionality is now merged in the compiler cc1.
- The binutils have lost their generic names (e.g. objcopy is now ntomulti-objcopy or ntox86-objcopy).
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.
![]() |
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
- Now has a -n option that forces all modification times of inline files to be 0. This enables the checksum value to be repeated on subsequent builds.
- The mkifs program attempts to shrink the size of executables and
shared objects that it puts in the image filesystem by removing
data that isn't absolutely needed for execution of the program.
You can disable this by using the +raw attribute.
Starting with 6.3.0, mkifs keeps the following ELF sections by default, even without the +raw attribute:
- QNX_Phab
- QNX_info
- QNX_usage
You can use the new -s command-line option to name sections that you want mkifs to keep.
If you specify -s, only the sections that you specify are kept. You need to explicitly specify the above names if you want to keep them as well.
Linker
- Our linker (ld) used to behave such that any path specified with the
-L option would also be added to the list of
paths to be searched for shared objects.
This behavior is being deprecated; it will be removed post 6.3.0. The correct method is to use the -rpath-link option.
- If you run ldrel on a binary that contains segment relocations, the relocations will be stripped. If you don't want them stripped, specify the -r option.
Core OS
Asynchronous messaging
![]() |
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++
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)
![]() |
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)
![]() |
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.
![]() |
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.
![]() |
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
- The pm_power_mode_t type has changed from 8-bit to 32-bit. This means that all code that includes <sys/pm.h> must be recompiled and relinked against the latest libpm.a and libpmm.a libraries.
- The prototype for the mode_init() policy function in libpmm changed from a void function to a return type of pm_power_mode_t. This function is now intended to return the initial power mode that the device should be set to. This will typically be PM_MODE_ACTIVE.
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.
![]() |
![]() |
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.
![]() |
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
- All PowerPC startup- programs now have a -E option. The procnto-600 kernel/process manager will no longer save and restore the EAR register (on chips that have it) during context switches, unless the -E switch is specified on the startup command line.
- The startups now provide better support for chip
variations. The new design:
- minimizes the number of locations that check the PVR SPR
- minimizes duplication of code
- makes it easier to leave out unneeded chip-dependent code
- makes it easier to add support for new CPUs
- removes the notion of a PVR split into “family” and “member” fields
- automatically does as much CPU-dependent code as possible in the library
- handles the Book E MMU.
With the new design, the following routines are now deprecated (and they spit out a message to that effect if you call them):
- ppc600_init_features()
- ppc600_init_caches()
- ppc600_flush_caches()
They're handled automatically by the library now.
Instead of ppc7450_init_l2_cache(), use ppc700_init_l2_cache().
The startup library now enables instruction and data translation very early on for PPC 600-series chips. It also enables the data cache as well. Doing this speeds up the startup, removes code from the kernel (eventually), and lets us avoid duplicating the same routine over and over again in the startup/boards tree.
However, basically all the board startups for PPC 600 chips have to be tweaked. Since the MMU is now enabled while startup is running, you can't just in8/out8 or dereference a physical address. Instead, you must use the startup_io_map/startup_memory_map|unmap functions to gain access to the storage.
Also, callout routines should have a patcher that uses callout_[io/memory]_map[_indirect] calls to map the given physical addresses to a virtual address that the callout code can use. The kernel no longer looks for a “kernel_device” entry in the asinfo section and provides the mapping for you.
For more information, see the section “PPC chips support” in the Customizing Image Startup Programs chapter of Building Embedded Systems.
The MIPS startup library also uses the same style of code as with the PPC to deal with chip variations. - In all previous PPC implementations, an interrupt would cause the
processor to begin executing at a known location in low memory.
The init_intrinfo() functions would indicate this by specifying
a PPC_EXC_? constant for the cpu_intr_base field in the static
array fed to add_interrupt_array() function. That's what you
continue to do for boards with non-book E CPUs.
With Book E processors, interrupts (and all other exceptions as well) no longer start at fixed locations in low memory. Instead, there's a set of IVORs (Interrupt Vector Offset Register). There's a different IVOR for each exception class. Book E describes 16 of them and reserves another 48 for future expansion and implementation use.
Accordingly, when specifying the interrupt layout to startup you don't use the PPC_EXC_? constants on a Book E CPU. Instead, you identify the particular IVOR register that the processor will use when the interrupt goes off. For example, PPCBKE_SPR_IVOR4 is used for normal external interrupts, PPCBKE_SPR_IVOR10 for decrementor interrupts. See startup/boards/440rb/init_intrinfo.c for an example of what to do on Book E CPUs.
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
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:
- SHMCTL_PRIV disables the per-process protection and restricts access to processes that have performed a ThreadCtl(_NTO_TCTL_IO). This is equivalent to the default 6.2.1 behavior.
- SHMCTL_LOWERPROT disables the per-process protection and allows access from any user process. This behavior is the same as the use of this flag in 6.2.1
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, mappings were aligned on a 4K boundary.
- In 6.3.0, mappings are aligned on a 1MB boundary. This alignment must be honored even if MAP_FIXED is used.
In 6.2.1, mmap() mapped separate objects similar to the following:
- First object at 0x80000000 - 0x80002fff
- Second object at 0x80003000 - 0x80005fff
In 6.3.0, mmap() maps these objects as:
- First object at 0x80000000 - 0x80002fff
- Second object at 0x80100000 - 0x80102fff
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:
- libstartup.a with 32-bit paddr_t's
- libstartup-64.a with 64-bit paddr_t's.
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()
- The stat() function has been changed so that it no longer accepts 0 (zero) for the second argument. If you use this in your code, please check to see that the second argument points to a struct stat buffer.
- The st_size field for S_ISBLK devices was changed to mimic QNX 4 behavior (i.e. to report it as the number of 512-byte blocks and not the number of bytes or the number of raw sectors). (Ref #17294)
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
- System page no longer contains the meminfo section, nor is the SYSPAGE_ENTRY(system_private)->ramsize field filled in. This is because they're restricted to 4G. Code referencing those syspage items should be modified to use the asinfo section (which has been generated since Neutrino 2.0).
- The add_mem() function has been removed from
the startup library.
Here's replacement code for SYSTEM_ENTRY(system_private)->ramsize:
uint64_t get_total_mem(void) { char *str = SYSPAGE_ENTRY(strings)->data; struct asinfo_entry *as = SYSPAGE_ENTRY(asinfo); uint64_t total = 0; unsigned num; for(num = _syspage_ptr->asinfo.entry_size / sizeof(*as); num > 0; --num) { if(strcmp(&str[as->name], "ram") == 0) { total += as->end - as->start + 1; } ++as; } return total; }
For code that scans meminfo, replace the check of the type field with a strcmp() of the appropriate asinfo entry name (as above) and scan asinfo.
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()
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
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-)
- deva-ctrl-sblive.so is no longer supported.
Block (devb-)
New drivers:
- devb-umass (USB mass storage)
- devb-adpu320 (SCSI driver for Adaptec Ultra320 adapters).
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
- Added polygon acceleration support for some chipsets (e.g. Fujitsu Coral, Orchid).
Network (devn-)
- devn-dm9102.so — for Davicom DM9102 controller.
- New MDI/PHY routines for Network drivers.
USB (devu-)
- New io-usb resource manager that supports USB 2.0/1.0.
- devu-ehci.so — for EHCI controllers for USB 2.0.
- devu-ohci.so — for OHCI controllers for USB 1.0.
- devu-uhci.so — for UHCI controllers for USB 1.0.
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
- The installation process has changed — we're no longer using the QNX Software Installer or cl-installer.
- You can't select individual target platforms
(e.g. PPC, MIPS, etc.) anymore — you get all
platforms when you install 6.3.
If you're using the IDE, you might want to set your preferences for QNX projects to build only for the specific target platforms you want. See: .
Photon-specific
Image loading
- Fixed an error when loading png files, which occasionally would cause SIGSEGVs.
Helpviewer
- Changed the helpviewer to allow matching of whole words when searching inside documents.
Photon File Manager
- The Photon File Manager now has a new addition to its preferences dialog that lets you select a filename-encoding scheme. This feature allows PFM to properly display filenames that aren't encoded in valid UTF8. For details, see the pfm entry in the Utilities Reference.
Photon Library (libph.so)
- Removed compilation type problem for PdSetTargetDevice().
- Fixed a bug where a non-editable combobox wouldn't give focus to the list when clicked.
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.
![]() |
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 (
):127.0.0.1, localhost
This will allow the IDE's help system to locate the files it needs.
Application Builder
- Fixed an error when PhAB builds and tries to run phabbind.
Shelf (Launch menu)
- The Launch menu was changed to use the /etc/photon/launchmenu directory structure to generate the launch menu. For details, see the chapter Using the Photon microGUI in the Neutrino User's Guide.
- Added a “launch in terminal” toggle to the launcher plugin.
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:
- 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.
- 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.
- 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:
- phfontphf
- phfontpfr
- phfontFF
- phfontFA.
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:
- Use the Windows Control Panel to install the font.
- Add the .ttf file to the following
directory:
%QNX_TARGET%\usr\photon\font_repository directory
- 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.
![]() |
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
- New MIDI parser and configuration-file documentation.
- The dvdplayer is removed from the old Multimedia library.
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
- There's now support for power-saving modes and enhanced password protection.
- Format of the config file has changed, but the new savercfg/saver are able to read both old and new formats.
- The new savercfg writes only the new format, so the old format will be lost once you change your settings. The transition is essentially transparent from the user's point of view, but anyone sharing their homedir between 6.3/6.2.x platforms should be aware of this.
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:
- npm-qnet-l4_lite.so — the new lightweight Qnet
- npm-qnet-compat.so — the pre-6.3 version.
![]() |
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.
![]() |
|
TCP/IP
dhcp.client
- If you specify the -a option, dhcp.client sets the configured IP address as an alias. This allows it to coexist with AutoIP and its link-local address.
SCTP (in Extended Networking TDK)
- SCTP currently supports only IPv4; its API may be subject to change.
- Although SCTP (lsm-sctp.so) supports only the IPv4 protocol family, it must be used in combination with the npm-tcpip-v6.so DLL. You can't mount lsm-sctp.so while using the npm-tcpip-v4.so DLL. This is due to internal dependencies. Note that npm-tcpip-v6.so also supports IPv4 along with IPv6 and other features.
- The TCP/IP stack (npm-tcpip.so) must be started with the option stacksize using a larger value than the default. For example, io-net -d -ptcpip stacksize=4096 when using SCTP (lsm-sctp.so).
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
- The full TCP/IP stack (npm-tcpip-v6.so;
npm-tcpip-v4.so) has been updated to overcome the
vulnerabilities in the TCP protocol. For details, see the
security advisories NISCC Vulnerability Advisory
236929 and CERT Advisory TA04-111A.
Although our Tiny TCP/IP stack (npm-ttcpip.so) hasn't been updated to address the TCP vulnerabilities, we anticipate that embedded devices using our tiny stack have applications that use short-lived TCP connections and are therefore not as vulnerable. - Fixed problem re: select() where a socket would be erroneously marked as writable when it isn't. A subsequent write() would block or fail with EWOULDBLOCK. Another possible symptom is that a notification for write would be lost.
- portmap has been replaced by rpcbind (portmap is now a symbolic link to rpcbind).
- RPC library has been updated to support RPC Bind version 4.
- dhcpd and dhcprelay have been updated to ISC dhcp version 3.0 p2.
- New binaries: rpcbind, rpcgen, ntpd, ntpupdate, ntpdc, ntpq, ntptrace, gns.
- New DLLs: nfm-autoip.so (in Extended Networking TDK), npm-qnet-l4_lite.so, npm-qnet-compat.so, lsm-ipfilter.so and lsm-sctp.so (in Extended Networking TDK).
- New libraries (in Extended Networking TDK): libipsec, libsctp.
![]() |
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.
![]() |
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
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:
- Bash shell (bash.exe)
- Korn shell (ksh.exe)
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
- Updated the IDE User's Guide.
- Developed a Neutrino User's Guide.
- Added a description of the various commit levels to the documentation for io-blk.so in the Utilities Reference.
- Removed PtColorPalette from the Photon Widget Reference.
- Deprecated PtTerminalFont() from the Photon Widget Reference.
- Added PtTerminalFontInfo() to the Photon Widget Reference.
- Added the cursor structure file description to Photon Library Reference.
- Changes to the new Pg*Cx() functions in the Photon Library Reference.
- Added PgDefaultAlpha() and PgDefaultChroma() to the Photon Library Reference.
Experimental items
![]() |
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:
- asynchronous messaging
Known issues
The 6.3 release contains known problems in these areas:
- BSPs and DDKs
- Drivers
- Compiler & tools
- Core OS
- Documentation
- IDE
- Photon-specific
- Qnet
- startup-*
- TCP/IP
- Solaris-specific
- Windows-specific
- Helpviewer
BSPs and DDKs
For more information about specific BSPs and DDKs, see the release notes that accompany them.
Uninstalling BSPs
- On QNX Neutrino hosts, running the default uninstall script will uninstall both binary and source packages. (Ref# 18894)
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
QNX Momentics 6.3.0 should have included this shared object, but didn't. (Ref# 24662)
Block-oriented
- devb-doc, devb-doc3, dformat, dformat3
The Disk On Chip drivers were provided by the vendor. If you run use -i on them, the state is given as Experimental. (Ref# 23101)
Graphics
- io-graphics requires that you set up
LD_LIBRARY_PATH in the buildfile's proc line so that it can
set up the _CS_LIBPATH environment variable. For example:
PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto
Or, use setconf from the command line to set up LIBPATH. You must be root to do this.
- devg-chips.so — non-PCI adapters aren't detected.
Workaround: To get the support modes on a non-PCI Chips & Technologies graphics adapter (version 65550 and greater):
- Edit /etc/system/enum/devices/graphics
and add the following line at the end of the file,
immediately after the last nonblank line:
echo(devgt-iographics -dldevg-chips.so, $(fname))
- Reboot the system.
- Run this command:
crttrap trap
- Edit /etc/system/enum/devices/graphics
and add the following line at the end of the file,
immediately after the last nonblank line:
- devg-chips.so — LCD/flat-panel support
is available only on X86 platforms.
Workaround: If you need flat-panel support for a non-X86 platform, contact your QNX sales representative for options.
- devg-igs5000.so; devg-tvia.so
— these drivers don't work well at resolutions greater
than 1024×768 due to the memory timing of the
hardware.
For non-X86 systems, you must set jumper J3 on the IGS card on. - devg-radeon.so — many different laptops
now have a variety of ATI Radeon chipsets. Although we
support most chipsets, each laptop has its own
implementation; our driver may not set the display mode
correctly on all systems. Symptoms range from a slightly
distorted display on the flat panel to no display at all.
As a workaround for some systems, you can manually lower the refresh rate from the default 60Hz to 53Hz. But for other systems there is no workaround, apart from using one of the generic drivers (e.g. devg-vesabios.so or devg-svga.so).
We are working on a better flat-panel solution for devg-radeon.so and plan to ship a new driver in a patch following the 6.3 release.
- devg-tnt.so — with the GeForce 2 Go, only certain video modes will work on the flat panel (depending on what the BIOS supports). If you're using a flat panel (e.g. a laptop display), you should set the refresh rate to 60Hz.
- Multiple video card trapping — Certain
combinations of video cards will cause the
system to lock up when running crttrap trap.
Workaround: Try removing all cards from the system except the card that will be used.
For some users, this isn't a good option. For example, you may not be able to remove cards if they're built into the motherboard, and the system uses one card for QNX Neutrino and a different card for Windows. In this case, there's another workaround that you can try. When the system boots, the graphics enumerator searches the system for graphics adapters that may be present, and creates a list of drivers to be used when crttrap is executed. This search is based on PCI Vendor and Device ID. Here's what to do:
- Boot into safe mode and don't start Photon.
- Edit the /etc/system/enum/devices/graphics file.
- Find the line(s) with the PCI Vendor and Device ID(s) of the graphics adapter(s) that you don't want to be used.
- Remove or comment-out those lines by adding a # to the front of the line.
- Reboot the system.
This workaround might not work with all hardware combinations. - Text mode and laptops — on some laptops, the
graphics driver doesn't return to text mode correctly when
exiting Photon.
Workaround: If your laptop has special function keys to switch the display from the LCD panel to a CRT monitor (or to both), try cycling through the displays to see if the text prompt returns to the LCD. Even if this workaround helps, please let us know the type of laptop and graphics adapter you're using. Note that this may not fix the problem on all systems.
- Screen not centered / refresh rate not exactly as
selected — with some graphics drivers that program the
graphics mode directly (rather than use the video BIOS), the
screen may not be centered or the refresh rate may not match
exactly what you set it to.
Workaround: There's a new configuration file (/usr/photon/config/crtc-settings) that io-graphics uses to set the graphics mode timings. You can modify these settings to get the correct timings for your graphics mode.
If this file can't be found, io-graphics uses a set of generic timing formulas to calculate the values. This may also cause the very centering/refresh-rate problem you're trying to solve! - devg-coral.so — 3D acceleration doesn't display correctly in all cases. (Ref# 20412)
Networking
- devn-smc9000.so — There's an alignment
problem in devn-smc9000.so that may cause
io-net to SIGBUS. This could happen on all
non-X86 platforms. (Ref# 19170)
Workaround: Enable alignment-fault emulation for procnto:
procnto -ae
Compiler & tools
- SH targets — if you're using the unsupported GNU libstdc++ library, cout/cin doesn't work (in gcc-3.3.1). Use the Dinkum C++ library instead.
- SH startups — between the 2.10.1 version of the
GNU linker in Momentics 6.2.1 and the 2.12.1 version in
Momentics 6.3.0, a bug was fixed in the handling of
relocation addends for SH targets. As a result of this fix,
SH startup binaries (e.g. startup-systemh) that
were created prior to Momentics 6.3.0 won't work correctly
if included in a boot image generated in Momentics 6.3.0.
Workaround: Rebuild the startup binary using Momentics 6.3.0. The resulting startup will work with both 6.2.1 and 6.3.0.
- MIPS C++ support with gcc-3.3.1 works only with the Dinkumware NO_EXCEPTION libraries. Anything else will generate a SIGILL error.
- __builtin_return_address() doesn't work for SH targets using 2.95.3. (Ref# 19706)
- On Neutrino self-hosted, bison.simple is located in
${QNX_HOST}/usr/share/bison, but the tools
expect to find it
in /usr/share/bison. (Ref# 18563)
Workarounds:
- Update your profile to include these exports:
export BISON_SIMPLE=$QNX_HOST/usr/share/bison/bison.simple export BISON_HAIRY=$QNX_HOST/usr/share/bison/bison.hairy
Or:
- Create the following link:
ln -s /usr/qnx630/host/qnx6/x86/usr/share/bison /usr/share
- Update your profile to include these exports:
- Because of recent changes to the Cygwin library, you can't use COM1 as the port name for serial debugging under Windows. Instead, you must use /dev/com1.
- Our implementation of gzip doesn't handle large (64-bit) files or modern gzip archives. (Ref# 19651)
- There's an alignment issue with gcc-2.95.3 where an
__attribute__((__aligned__(N))) applied to a typedef will
also apply that alignment to the base type. (Ref# 18662)
For example, the following will apply an alignment of 8 to both my_long_long_t and the long long:
typedef long long my_long_long_t __attribute__((__aligned__(8)));
Workaround: Make a duplicate typedef of a dummy type:
typedef long long my_dummy_t; typedef my_dummy_t my_long_long_t __attribute__((__aligned__(8)));
- With gcc-3.X, C++ shared objects can optionally use __cxa_atexit(), which allows their atexit handlers to be called at dlclose() time. This feature isn't fully supported yet, and as a side effect, C++ shared objects can't be dlopen()'d and dlclose()'d. (Ref# 19702)
- The gcc compiler's stabs and
stabs+ debug format (-gstabs or
-gstabs+) can sometimes report the wrong address
when analyzed with addr2line. This may cause the
IDE to wrongly identify source code line numbers. In most
cases, the next or previous line is identified, so it's
generally obvious although potentially confusing. (Ref# 18965)
Workaround: Use the dwarf-2 debug format (-gdwarf-2) instead of stabs.
- gcc-3.3.1 ignores
__attribute__((__aligned__(N))) on typedefs.
This means that with gcc-3.3.1, the alignment of
inttypes.h types will match the
architecture's ABI for the equivalent C-type. Those values
happen to match in almost all cases. However, for
int64_t and uint64_t on SH4,
ARM, and x86, the alignment will be 4 bytes instead of the
requested 8 bytes. (Ref# 20443)
Workaround: Specify the alignment for each data declaration that needs it. For example:
struct mystruct { int my_int; int64_t my_int64 __attribute__((__aligned__(8))); };
- In Windows, make sure your HOME environment variable is set if you're on a network. If you don't set HOME, then gdb may become unresponsive because it will waste time searching over the network for its initialization files. (Ref# 20566)
- In the debugger under certain conditions, breakpoints won't
work if they've been set prior to hitting main(). (Ref# 20657)
This problem affects only shle targets and occurs only on Windows when using gcc 3.3.1 with dwarf debug format while specifying an absolute source path. Note that the IDE uses an absolute source path and defaults to dwarf.
Workaround: Change the default debugging format from dwarf-2 to stabs+.
If you're using the IDE:
- From the Project menu select Properties, then QNX C/C++ Project.
- Click the Compiler tab, then click the Advanced button.
- From the Variant dropdown menu choose Debug. Under Other options type:
-gstabs+
- Click Apply, then Ok.
If you're using the command line, you have two options:
Use -gstabs+ instead of -g. For example, change: qcc -V3.3.1,gcc_ntoshle -g c:\code\first_c.c -o first_c_g
to:
qcc -V3.3.1,gcc_ntoshle -gstabs+ c:\code\first_c.c -o first_c_g
Or:
Use the relative path to the source file. For example: qcc -V3.3.1,gcc_ntoshle -g first_c.c -o first_c_g
Both gcc 2.95.3 and 3.3.5 report parsing errors for seemingly simple code. (Ref# 20409)
Workaround: See “Parse errors for simple code” in gcc.gnu.org/bugs.html#known.
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.
Core OS
Specifying the -as option to procnto on SH platforms is the same as specifying -ad, not -ae as stated in the Utilities Reference. (Ref# 22858)
- pipe() — When there are multiple
writers to a pipe and the O_NONBLOCK flag is clear, a write
of less than PIPE_BUF bytes into a full pipe could cause
loss of data in the particular write even though the write
returns with no error. (Ref# 20220)
This issue will be addressed in a patch to 6.3.0.
- pipe() — When there are multiple
readers and writers to a pipe, and reader/writer processes
terminate repeatedly, the pipe manager may fault. (Ref# 20128)
This issue will be addressed in a patch to 6.3.0.
- fork() — physically contiguous areas aren't preserved across a fork(). If one process does a mmap() with MAP_ANON|MAP_PHYS to obtain a physically contiguous memory (drivers and the like), and then forks, the child process (which is supposed to be a duplicate of the parent) actually doesn't enforce contiguous areas when copying the parent's mappings. (Ref# 17531)
- mmap() — If you use mmap()
with the MAP_ANON|MAP_PHYS|MAP_SHARED flag combination to
create a mapping to an anonymous shared object with
physically contiguous anonymous memory, you may not always
end up with physically contiguous memory. (Ref# 20478)
This issue will be addressed in a patch to 6.3.0.
Workaround:
Don't use the MAP_SHARED flag. Most applications don't really need to create an anonymous shared object, just a mapping to physically contiguous memory.
If an object is required, please use shm_ctl() to overlay an object on top of a physically contiguous mapping.
- MAP_LAZY|MAP_STACK — mapping reference counts don't seem to work properly using MAP_LAZY|MAP_STACK. If you set your VM limit, and begin to map/unmap MAP_LAZY|MAP_STACK areas over and over, the amount of free address space seems to increase over time. (Ref# 17165)
- FDs — there seems to be an inconsistency about the enforcement in the number of FDs allowed. Setting the max via -F to procnto, the _SC_OPEN_MAX system variable (via sysconf()) and the rlimit_NOFILE need to be synced together. For now, you're able to set your rlimit for number of files higher than the _SC_OPEN_MAX variable says you can. (Ref# 16966)
- Large contiguous allocations — after creating threads over and over until memory is exhausted, all the objects allocated internally to procnto aren't returned to the main memory pool, but remain in an object list (by design). Memory gets very fragmented with all these little objects holding onto memory; eventually large (4MB and greater) contiguous allocations start to fail. (Ref# 16405)
- name_attach() — A server using
name_attach() to accept connections from a client
that uses name_open() must accept and reply to
_IO_CONNECT messages that are sent as part of the open and
location handling. If the server doesn't accept and reply to
the _IO_CONNECT messages, the client won't be able to open a
connection to the server. (Ref# 20507)
This issue will be addressed in a patch to 6.3.0.
- name_attach() — The example in the docs
is wrong. (Ref# 20285)
The server needs to look like this:
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <sys/dispatch.h> #define ATTACH_POINT "myname" union msg_hdrs { uint16_t type; struct _pulse pulse; }; /*** Server Side of the code ***/ int main(int argc, char *argv[]) { name_attach_t *attach; union msg_hdrs msg; int rcvid; if ((attach = name_attach(NULL, ATTACH_POINT, 0)) == NULL) { return EXIT_FAILURE; } while (1) { rcvid = MsgReceive(attach->chid, &msg, sizeof(msg), NULL); /* name_open sends a connect message, must EOK this */ if (msg.type == _IO_CONNECT ) { MsgReply( rcvid, EOK, NULL, 0 ); continue; } /* Some other QNX IO message received, reject */ if (msg.type > _IO_BASE && msg.type <= _IO_MAX) { MsgError(rcvid, ENOSYS); continue; } } }
- The 74xx series PPCs with a 60x bus (not MBX) don't
support 16-byte bus transactions. This limitation can cause
unexpected alignment exceptions when using Altivec
instructions to/from uncached memory regions. Symptomatic of
this issue, message passing to/from uncached memory regions
can result in a kernel crash due to the 60x bus limitation.
(Ref# 14878)
Workarounds:
- Don't message pass to/from uncached memory regions.
- Disable the PPC_CPU_ALTIVEC feature flag in startup-* code to avoid using Altivec instructions in a message pass. (This also means that the OS won't save/restore the Altivec register set on a context switch.)
- SHLE — In a very limited case, when mapping
anonymous memory into a process as noncacheable, stale
entries may exist in the data cache for a portion of the
noncacheable mapping. The net effect is that there's a rare
chance that a write-back from the data cache will corrupt
data in the noncacheable mapping. (Ref# 19459)
Workaround:
To avoid this issue, the application needs to:
- Map the anonymous memory as cacheable.
- Invalidate the data cache for that region.
- Change the attributes of the cacheable mapping into noncacheable.
For example:
... char *p; p = mmap(0, __PAGESIZE, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, NOFD, 0); msync(p, __PAGESIZE, MS_INVALIDATE); mprotect(p, __PAGESIZE, PROT_READ|PROT_WRITE|PROT_NOCACHE); ...
For your convenience, 6.3.0 installed an empty, executable version of /etc/rc.d/rc.local. However, the permissions are currently 777 (read, write, and execute for everyone), which could be a security problem. (Ref# 22665)
Workaround: To make your system more secure, change the permissions to 750 (read, write, execute for the user; read, execute for the group; no permissions for others).
If a FILE* stream is placed into unbuffered mode (so theoretically all writes should physically happen immediately and any failures be detected), the low-level functions correctly indicate the errors, but the FILE*-oriented output functions (fwrite(), fprintf(), etc.) don't propagate these errors back as their return values. For example, if there's no space left on the disk, these functions don't indicate that an error has occurred. (Ref# 19598)
Workaround: Use the file-descriptor I/O functions instead, or call ferror() to check for errors after each call to fwrite(), fprintf(), and so on.
The asctime(), ctime(), gmtime(), and localtime() functions return a time in one of two static buffers (either a tm structure or an array of type char). Calling any of these functions can change the data in both these buffers. The documentation needs to make this clear. (Ref# 24716; Ticket ID 69174)
If you use the instrumented kernel to trace events while you're using mq, emitting _NTO_TRACE_COMM_SMSG communication-class events might cause your application to crash with an EFAULT when it calls mq_send(). We've encountered this problem on SHLE boards. (Ref# 38082)
Workaround: Filter out the _NTO_TRACE_COMM_SMSG events by doing one of the following:
- On the command line, filter out all COMM-class messages by passing the -F6 option to tracelogger.
- In your application, filter out COMM_SMSG messages by
calling:
TraceEvent( _NTO_TRACE_DELEVENT, _NTO_TRACE_COMM, _NTO_TRACE_COMM_SMSG);
- In the IDE, filter out COMM_SMSG messages with qconn by selecting the Class Specific mode in the System Profiler Configuration dialog, then selecting the Communication tab, selecting the Event Specific mode, and then disabling Send Message.
The side effect of filtering out these events is that the IDE's System Profiler won't be able to show you any message-passing.
ELF64_R_INFO() — The definition of this macro is incorrect in <sys/elf.h>. It uses Elf32_Xword() instead of the Elf64_Xword() macro. (Ref# 40936)
Workaround: Edit the header file and change this line:
#define ELF64_R_INFO(s,t) ((((Elf32_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
to this:
#define ELF64_R_INFO(s,t) ((((Elf64_Xword)(s))<<32) | ((Elf64_Xword)((t)&0xffffffff)))
Documentation
The telephone numbers and email addresses for Technical Support in the Welcome to QNX Momentics guide are now obsolete. For up-to-date information, see the Technical Support section in the Services area of our website, www.qnx.com. (Ref# 26700)
IDE
![]() |
![]() Workaround: Make sure you specify a new subdirectory as the location. |
- Code coverage works only when using the GCC 2.95.3 compiler. (Ref# 18026)
- Deleting a second instance of a code-coverage session causes an internal error. (Ref# 19309)
- For MIPS only, the dietician can't shrink the socket library because the library exports symbols that should be resolved in the C library. This problem (Ref# 12394) was fixed on all platforms except MIPS. (Ref# 15986)
- The System Profiler sometimes has problems opening the initial log file when initiated from the IDE. (Ref# 19754)
- In the System Profiler, filtering out event owners might cause the scrollbar to be set incorrectly. (Ref# 19913)
- To check out projects from CVS, use Check out Project, and then convert the projects; don't use Check out as..., which generates invalid configurations. (Ref# 18405)
- Compiler errors from gcc 3.3.1 have been
formatted to be more user-friendly, but they break the IDE's
error parser. (Ref# 19221)
Workaround: Add -fmessage-length=0 to the qcc or gcc command-line options.
- You can't currently launch a telnet session from the IDE. (Ref# 19282)
- If you import a System Builder project by copying an existing .bld file from a previous installation, the project isn't properly converted. (Ref# 20073)
- Error markers in the editor aren't being updated properly. (Ref# 20197)
- The gcc compiler's stabs and
stabs+ debug format (-gstabs or
-gstabs+) can sometimes report the wrong address
when analyzed with addr2line. This may cause the
IDE to wrongly identify source code line numbers. In most
cases, the next or previous line is identified, so it's
generally obvious although potentially confusing. (Ref# 18965)
Workaround: Use the dwarf-2 debug format (-gdwarf-2) instead of stabs.
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 (
).If you don't have a web browser in any of the directories listed in your PATH variable, you can't display the documentation in the IDE. (Ref# 29861)
Workaround: Specify a browser for the IDE to use, by choosing
, and then choosing Help from the list on the left side of the dialog. In the right part of the dialog, select Custom Browser and fill in the path to the browser below.
Linux
- Under Linux with GTK, if you switch in and out of
debugging for a few hours (four hours on average), you get a
JVM termination with the following at the top of the
resultant hs_err_pidxxxx.log file:
An unexpected exception has been detected in native code outside the VM.
This is a core Eclipse issue; we have submitted a problem report to IBM.
- On Linux hosts, don't try to run multiple instances of the IDE on the same workspace — this can corrupt the workspace. (Ref# 19384)
Serial debugging via pdebug doesn't work in some versions of Linux. Redhat and Suse (and probably most of the distros) run mgetty on the available serial ports by default, probably to facilitate modems and serial terminals. If you stop mgetty, serial debugging works. (Ref# 19718)
Workaround: Set up a PPP link between the host and target, and then use TCP/IP communication.
Neutrino
- On Neutrino hosts, various SWT drawing artifacts and widget issues affect the IDE. (Ref# 20041, 19944)
Solaris
- If you're using the IDE, make sure you have the appropriate patch installed to run the Java 2 SE 1.4.2 VM under Solaris. You can download the patch from java.sun.com:
- By default, the IDE uses Mozilla (which isn't installed) as the browser for displaying help documentation. You need to change this to hotjava; in the IDE, choose and change the Custom Browser Command from mozilla %1 to hotjava %1.
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
) 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
.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 (
).PtText and PtNumeric
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
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 (
).phditto
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
If you aren't using ksh or sh as your login shell, the environment variables that the helpviewer uses aren't initialized. (Ref# 27250)
Workaround: Set QNX_HELP_HOME_PAGE to /usr/qnx630/target/qnx6/usr/help/product/momentics/bookset.html, and QNX_HELP_PATH to /usr/qnx630/target/qnx6/usr/help/product (assuming you installed QNX Momentics in the default location).
If you run the helpviewer as one user, and you then log in as another user and search the documention, helpviewer's indexer fails with a message of “Cannot open /var/help/usr/qnx630/target/qnx6/usr/help/product.” (Ref# 25628)
Workaround: Log in as root and type:
rm -r /var/help/usr
and then generate the index.
Qnet
- The file resolver (as described in the chapter on Qnet in the Programmer's Guide and in the npm-qnet-l4_lite.so utility page) doesn't function correctly at this time. (Ref# PR 20059)
- If connectivity is lost to a gns process in server mode while it's acting as a redundant server, the server may become out of sync with the other redundant servers during the interruption. (Ref# 20008)
- Currently, name_attach() isn't compatible
with the resource manager framework.
Workaround: Your manager must handle the raw QNX messages until this is corrected. (Ref# 20062)
- Qnet (either version) can't be unmounted from io-net in 6.3.0.
- The older version of Qnet (npm-qnet-compat.so) uses an autodetection scheme to determine whether the platform it's running on supports misaligned access or not. This scheme doesn't work on ARM big-endian; you'll need to pass the option align_fault=1. (Ref# 12989)
startup-*
- startup-bios
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
- If you mount and unmount an NFS mountpoint many times (using the mount and umount utilities), a resource may not be cleared, in which case you'll need to restart fs-nfs3. (Ref# 15078)
- pppd's dial-on-demand feature
(demand option) doesn't work with the
persist option. (Ref# 19667)
Workaround: Restart pppd manually or in a script. Refer to pppd's disconnect option for starting scripts at pppd termination.
- dhcp.client — While the domain name and second nameserver are applied in your host configuration correctly, they're not supplied to the dhcp-up configuration script. (Ref# 20093)
- fs-nfs3 — We've improved the performance of writes for fs-nfs3 by buffering writes to the server. This can affect the interaction between two separate NFS clients that have mounted the same directory on the server and that manipulate the same files. If one client writes to the server, the data from that write() is cached at the client side. The other client can't see the data from that write until it's synchronized with the server. If you have a scenario where two NFS clients must be able to see what the other is writing to disk, you can use the fs-nfs3 option -w sync=hard. This will cause every write() to be synchronized with the server. This will be documented in a future release. (Ref# 20812)
If you're using fs-nfs3 with asynchronous writes, and the server is using root-squashing (i.e. it maps root to anonymous or nobody), you can create directories and files, but when you open a file and put data in it, save, and reopen it, the file is always empty. (Ref# 25113)
Workaround: Do one of the following:
- Use the no_root_squash option on the server.
Or:
- Run fs-nfs3 with the -w sync=hard option.
- Use the no_root_squash option on the server.
Slinger lets a remote user access files outside of its root directory (as identified by the HTTPD_ROOT_DIR environment variable) by including ../ in the URI of the request sent to slinger (e.g. http://hostname/././../../etc/passwd). (Ref# 21825)
Workaround: Install the TCP/IP Security Patch from our website.
A large HTTP GET request-URI (greater than the value of PATH_MAX) can overflow Slinger's internal buffer and cause a fault. (Ref# 21965)
Workaround: Install the TCP/IP Security Patch from our website.
During the initialization of the telnet link, if the client sends a large number of parameters to negotiate, telnetd can overrun its reply buffer with the responses to all of the request's parameters. (Ref# 21965)
Workaround: Install the TCP/IP Security Patch from our website.
Solaris-specific
If you're using the default Solaris shell, you might have problems switching between different installed versions of QNX Momentics. When you run a command like this:
`eval qconfig -e -n"QNX Momentics 6.3.0"`
you get this error:
QNX_HOST=/opt/qnx630/host/solaris/sparc: is not an identifier
and your PATH isn't updated. (Ref# 20653)
Workaround: Use ksh instead of the default Solaris shell.
Windows-specific
- If you install 6.3.0 over 6.2.1 and select “No” when
prompted about upgrading the environment variables, the QNX Momentics 6.3.0
shortcuts are created pointing to 6.2.1.
You need to manually change each shortcut to point to the 6.3.0 folder
(e.g. replace QNXsdk with QNX630 or wherever you
installed 6.3.0).
Shortcuts affected include the IDE, documentation, and Phindows.
- 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)
Certain programs (e.g. Norton Ghost) add directories inside double quotation marks (e.g. ...;"c:\Program Files\Norton Ghost\";...) to your PATH environment variable. This causes the Cygwin spawn() function to fail, which in turn causes cp to fail when called by ln-w. (Ref# 20046)
Workaround: Modify your PATH environment variable and remove any quotation marks.
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:
- Open a command window and run cmd.
- Type set.
- Find the value for MAKEFLAGS and save it.
- Type set MAKEFLAGS.
- Do your MSVS work.
- To work with QNX Momentics again, type:
set MAKEFLAGS=saved_makeflags_value
If you don't have permission to write files in the top-level directory of the C drive, you won't be able to run certain tools, such as bindres and usemsg, which are needed for building PhAB applications. (Ref# 21849)
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:
) 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:
![]() |
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. |
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 | 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 |