QNX® Software Development Platform 6.4.0: Release Notes
QNX® Software Development Platform 6.4.0: Release Notes
Date of this edition: November 28, 2008
Target OS: This development platform produces software that's
compatible with targets that are running QNX® Neutrino® 6.4.0.
Host OS: You can install this package as a self-hosted
QNX Neutrino® development system, or on one of the following
development hosts:
- Microsoft Windows Vista, Vista 64-bit, XP SP2 or SP3, or 2000 SP4
- Linux Red Hat Enterprise Workstation 4 or 5,
Red Hat Enterprise Server 5.1 64-bit,
Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7, or SUSE 10
You can also install the QNX Neutrino RTOS as a virtual machine:
- We support and have tested SDP on VMware Workstation 5.5.
- Other virtualization products (e.g. VMware Workstation 6.0,
VMware Player, Microsoft VirtualPC) should work.
- VMware Player can't create virtual machines, but the one supplied
has been tested on VMware Player.
If you find problems with any virtualization environment, please let us know.
 |
- We no longer support the QNX Momentics Tool Suite on the following hosts:
- Windows NT
- Linux Red Hat 8 and 9
- Solaris
- You can't install QNX SDP 6.4.0 on machines that are running
64-bit Linux Ubuntu 7.10.
(Ref# 56182)
- We no longer include the IDE on self-hosted QNX Neutrino systems.
- For the latest information about using BSPs with
QNX SDP 6.4.0, see the SDP 6.4.0 BSP Information page
(http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/SDP_6.4.0_BSP_Info?_message=1218739798710)
found in the BSPs and Drivers project of Foundry27.
- For the most up-to-date version of these notes, go to our website,
www.qnx.com,
log into your myQNX account, and then go to the Download area.
|
 |
If you installed an alpha version of this software, uninstall it before
installing the production version. |
Throughout this document, you may see reference numbers
associated with particular issues, changes, etc. When
corresponding with our Technical Support staff about a given
issue, please quote the relevant reference number. You might
also find the reference numbers useful for tracking issues
as they become fixed.
For the most up-to-date version of these release notes,
go to our website,
www.qnx.com,
log into your myQNX account, and then go to the Download area.
 |
Make sure that Plug and Play OS is disabled in the BIOS before you
run QNX Neutrino self-hosted. |
The QNX Software Development Platform bundles the
QNX Momentics Tool Suite, the QNX Neutrino RTOS, or both, as shown below:
| On Linux and Windows:
|
On QNX Neutrino: |
| QNX Momentics Tool Suite
|
QNX Momentics Tool Suite
QNX Neutrino RTOS |
The QNX Momentics Tool Suite includes the following:
| On Linux and Windows:
|
On QNX Neutrino: |
Command-line tools
Libraries, documentation, and other development components
Integrated Development Environment
|
Command-line tools
Libraries, documentation, and other development components |
We no longer include the IDE on self-hosted QNX Neutrino systems.
The key improvements in 6.4 include:
- Performance — improvements in performance for the kernel and
the networking stack are significant for the 6.4.0 release.
Moreover, the complete OS has been rebuilt with the gcc 4.2
compiler, resulting in more compact and faster code.
- POSIX PSE52 Certification — Neutrino RTOS version 6.4.0 is
officially POSIX certified.
Products are listed here: http://get.posixcertified.ieee.org/cert_prodlist.tpl
- New Power-Safe Filesystem — The power-safe filesystem,
fs-qnx6.so, is a new copy-on-write filesystem for block
file devices.
- If you install QNX Neutrino in a Power-Safe filesystem partition,
Symmetric Multiprocessing (SMP) is enabled by default.
The SMP version of the kernel works on multi- and single-processor systems.
- Expanded Processor Support:
- ARM version 6 Support — the Core OS now takes full advantage
of the ARM V6 architecture.
This support also removes the 32 MB restrictions on process memory space.
- Freescale e500 and Renesas 7786 processors with SMP support.
- WiFi Wireless Support — the new networking stack introduced with
6.4.0 includes WiFi support.
- Introduction of Core Graphics — the former Advanced Graphics TDK
is no longer offered.
In its place, the same advanced graphics capability is available as
a runtime option, Core Graphics.
Photon and Core Graphics share a common driver framework, so drivers
for either technology work (e.g. Photon can run on AG TDK drivers).
Note also that Photon requires Core Graphics to run.
- Adaptive Partitioning — no changes to CPU partitioning,
but we've added memory partitioning as an experimental feature.
For more details on Memory Partitioning, see
http://community.qnx.com/sf/wiki/do/viewPage/projects.core_os/wiki/Memory_Partitioning_Technology.
- High Availability Technology — now available as part of the
base QNX Neutrino runtime.
For more details, see the following sections:
We no longer support ARMBE, MIPSBE, MIPSLE, or Intel 386 targets.
(Ref# 58190, 58192, 58193)
We've made the changes described below in order to conform to
PSE52, a subset of POSIX intended for realtime controllers.
- POSIX requires that you specify MAP_PRIVATE or
MAP_SHARED as one of the mmap() flags,
but earlier versions of our OS assumed MAP_PRIVATE if
you didn't specify either.
(Ref# 46290)
- We've implemented the _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
configuration string.
(Ref# 48046)
- We've added another underscore to the names of the _mutex_*
macros in pthread.h, so that they no longer
violate POSIX name space rules.
We still provide the macros with the old names as Neutrino extensions.
(Ref# 46122)
- In <aio.h>, we changed the name of the next
member of the struct aiocb to _aio_next to avoid
namespace pollution.
(Ref# 46119)
- In various structures, we've protected field names that aren't specified
by POSIX by renaming them so as to start with two underscores.
The affected types are:
- sync_t
- sem_t
- pthread_mutex_t
- pthread_cond_t
- pthread_mutexattr_t
- pthread_condattr_t
- pthread_attr_t
Any code that explicitly references the old field names will no longer
compile.
You should modify those references to use a leading __ before
the field name.
This issue affects only the compilation of code with the latest system
header files; binary compatibility isn't affected.
(Ref# 46088, 46089, 46090, 51558)
- In <fcntl.h>, we changed the
name of the zero1 member of the flock and
flock64 structures to l_zero1.
(Ref# 46084)
- The aio_fsync() function now ignores all fields except
aio_fildes.
(Ref# 45733)
- The aio_fsync() function now returns EBADF
if the file descriptor isn't a valid file descriptor opened for writing.
(Ref# 45732)
- For signal delivery on asynchronous I/O completion, the
si_code is now set to SI_ASYNCIO.
(Ref# 45730)
- For sporadic scheduling, pthread_getschedparam() now returns
the original priority instead of the low priority.
(Ref# 45693)
- The timer_settime() function now rounds up time values that are
between two consecutive nonnegative integer multiples of the
resolution of the specified timer to the larger multiple of the
resolution.
(Ref# 45388)
- A call to rmdir("..") now results in an error of
EEXIST instead of EINVAL.
(Ref# 45387)
- The scanf() function now correctly returns EOF
instead of 0 in a test.
(Ref# 45383)
- We fixed some bugs in strxfrm() and strcoll()
to deal with the collation ordering in POSIX locale definitions.
(Ref# 45380, 45381)
f# )
- The sysconf() function now indicates that the value of
_SC_SEM_NSEMS_MAX (the maximum number of semaphores)
is indeterminate because that limit applies to both named and unnamed
semaphores. The kernel allows an arbitrary number of unnamed semaphores
(they're kernel synchronization objects, so the number of them is limited
only by the amount of available kernel memory).
(Ref# 45143)
- We've implemented _SC_AIO_PRIO_DELTA_MAX,
the maximum amount by which a process can decrease its asynchronous I/O
priority level from its own scheduling priority.
(Ref# 45141)
- Asynchronous I/O operations now check aio_reqprio and return
EIO if it's invalid.
(Ref# 45124)
- The pthread_key_create() function now correctly invalidates
previously used key values.
(Ref# 45071)
- If you specify the LIO_WAIT flag, lio_listio()
now correctly reports I/O errors.
(Ref# 45057)
- The lio_listio() function now returns an EINVAL
error if you specify an invalid mode.
(Ref# 45056)
- The pthread_mutex_getprioceiling() and
pthread_mutex_setprioceiling() functions now retry instead of
returning EINTR if they're interrupted.
(Ref# 44957)
- The pthread_mutex_setprioceiling() function now correctly
acquires an unlocked mutex.
(Ref# 44955)
- The values of PTHREAD_STACK_MIN and
_SC_THREAD_STACK_MIN now match.
(Ref# 44565)
- The ftrylockfile() function no longer causes a
SIGSEGV.
(Ref# 44521)
- We now support PTHREAD_PRIO_NONE.
(Ref# 44486)
- If you call aio_cancel() with an invalid file descriptor,
the function now fails and sets errno to EBADF.
(Ref# 44239)
- Calling sysconf(_SC_DELAYTIMER_MAX) now returns the
value used by the timer overrun code.
(Ref# 44230)
- If you call fcntl() with an invalid command, the function now
sets errno to EINVAL instead of
ENOSYS.
(Ref# 44229)
- The mktime() function now correctly updates the time
structure passed in when it specifies tm_isdst==-1.
(Ref# 44226)
- The lgamma() function no longer causes an underflow
condition to be raised by intermediate calculations.
(Ref# 44126)
- Calling difftime(0xffffffff, 0) now returns
0xffffffff instead of 1, and calling
difftime(0, 0xffffffff) now returns -0xffffffff
instead of -1.
(Ref# 44124)
- The fpathconf() function now returns values for
_PC_ASYNC_IO and _PC_PRIO_IO.
(Ref# 44122)
- The strtod() function now correctly rounds negative numbers.
(Ref# 44053)
- The strtod() function now sets errno to
ERANGE if an underflow occurs.
(Ref# 44047)
- It's now possible to open OPEN_MAX file descriptors,
instead of just OPEN_MAX − 1.
(Ref# 44046)
- The strftime() function now returns the correct string when
tm_isdst is negative.
(Ref# 43768)
- The fseek() function now fails if you specify an invalid
whence parameter.
(Ref# 43738)
- The freopen() function now sets errno to
EBADF instead of to EINVAL if the underlying
file descriptor is invalid or doesn't support the requested mode change.
(Ref# 43737)
- The freopen() function no longer reuses the existing file
descriptor.
(Ref# 43736)
- A call to fcntl(F_GETFL) now returns only the status and
access bits.
(Ref# 43679)
- If the POSIXLY_CORRECT environment variable is set,
functions that check the length of a pathname do so before removing
any redundant . and .. components.
If POSIXLY_CORRECT isn't set, the functions check the
length after removing any redundant components.
(Ref# 43677)
- Calls to sysconf(_SC_TZNAME_MAX) now return the value
of TZNAME_MAX.
(Ref# 43658)
- Using an invalid 32-bit aio_offset now causes errno
to be correctly set to EINVAL instead of
EOVERFLOW.
(Ref# 43335)
- The strtol() and related functions now set errno
to EINVAL if the base is invalid.
(Ref# 43213)
- SIGEV_NONE, SIGEV_SIGNAL, and
SIGEV_THREAD are now defined as symbolic constants
instead of as enumerated values.
(Ref# 43049)
- The value argument to timer_settime() is now
a const.
(Ref# 43046)
- The non-POSIX symbols in <sys/types.h>,
<sys/platform.h>, <time.h>,
<stdio.h>, <math.h>,
and other header files are now defined
as extensions.
(Ref# 42978, 42979, 42981, 42982, 42985, 42988, 42990, 42993, 43044, 43045)
- The addr argument to mprotect() is no longer
defined as const.
(Ref# 43043)
- We've implemented strerror_r().
(Ref# 43034)
- We've implemented getc_unlocked(),
getchar_unlocked(), putc_unlocked(), and
putchar_unlocked().
(Ref# 43033)
- The <signal.h> header file now defines
pthread_kill() and pthread_sigmask() as
__EXT_POSIX1_200112 instead of as
__EXT_XOPEN_EX.
(Ref# 43032)
- The sporadic scheduler fields in sched_param are now
defined for __EXT_POSIX1_200112, as well as for
__EXT_QNX.
(Ref# 43031)
- We've implemented pthread_setschedprio().
(Ref# 43030)
- The attr argument to pthread_cond_init() is now
defined as const.
(Ref# 43029)
- We've fixed _POSIX2_VERSION so that it aligns with
POSIX 1003.1-2001 and 1003.1-1996.
(Ref# 42992)
- We put isfdtype() under __EXT_QNX.
This was a function 1003.1g that was withdrawn in later drafts.
(Ref# 42989)
- We've corrected the values of _POSIX_CHILD_MAX,
_POSIX_NGROUP_MAX, _POSIX_OPEN_MAX, and
_POSIX_TZNAME_MAX in <limits.h>.
(Ref# 42987)
- POSIX requires that the error numbers in <errno.h>
have unique values.
(Ref# 42983)
In order to satisfy this requirement, we need to change the value of
EALREADY;
its current value is 16 (same as EBUSY), but
the new (POSIX-compliant) value is 237.
However, this change would cause incompatibility problems because
code that currently uses EALREADY will be compiled to use
the old value.
In order to allow applications to safely make the transition to the
new value, we've modified <errno.h> to define the
following symbolic values:
- EALREADY_OLD is the current value (16).
- EALREADY_NEW is the new value (237).
- EALREADY_DYNAMIC is a value that you can configure
at runtime.
This is a variable in libc that's set to either the old
or new value, based on a system-wide configuration parameter.
For QNX SDP 6.4.0, EALREADY is defined as
EALREADY_OLD in order to allow
programs by default to be compatible with existing binaries.
In a future release, we'll change EALREADY to
EALREADY_NEW.
You should modify your code as follows:
- If your code checks for an EALREADY error code, you
should change it to something like this:
#if defined(EALREADY_NEW) && defined(EALREADY_OLD)
if (error == EALREADY_NEW || error == EALREADY_OLD) {
// deal with EALREADY error cases
}
#else
if (error == EALREADY) {
// deal with EALREADY error cases
}
#endif
This will ensure that the code handles EALREADY error
cases from any API that returns either the old or new value of
EALREADY.
- If your code returns an EALREADY error, you should make
it return EALREADY_DYNAMIC instead.
In many cases, you can do this by adding
-DEALREADY=EALREADY_DYNAMIC to the compiler flags.
The value of EALREADY_DYNAMIC is determined by a
procnto option:
- procnto -en sets EALREADY_DYNAMIC to
EALREADY_NEW.
- procnto -eo sets EALREADY_DYNAMIC to
EALREADY_OLD.
The default for 6.4.0 is -eo
(EALREADY ==EALREADY_OLD).
We'll change this in a future release so that the default is -en
(EALREADY == EALREADY_NEW).
- The llabs() function is now defined in libc
instead of in libm.
(Ref# 42980)
- The following types are now defined in <sys/types.h>:
- pthread_attr_t
- pthread_cond_t
- pthread_condattr_t
- pthread_key_t
- pthread_mutex_t
- pthread_mutexattr_t
- pthread_once_t
- pthread_t
instead of in <pthread.h>.
(Ref# 42977)
- The ino_t type has changed from signed to
unsigned.
(Ref# 27903)
This change shouldn't affect any code that examines inode values, because
the only meaningful operation is to compare for equality.
If your code constructs 64-bit inode numbers from 32-bit ones, you should
make sure that you don't extend the sign into the top 32 bits.
- We've changed unsetenv() to comply to POSIX 1003.1-2001;
it now returns 0 on success, or -1 if an error occurs (errno
is set).
(Ref# 26165)
- POSIX requires that mmap() fail with EINVAL
if the flags argument doesn't contain either
MAP_SHARED or MAP_PRIVATE.
Currently, procnto treats these (incorrect) mmap()
calls as MAP_PRIVATE.
If you disable the memory manager's backward compatibility via the
-m~b option to procnto, these incorrect
mmap() calls fail with EINVAL as required by
POSIX.
(Ref# 46288)
You should examine all code that uses mmap(), to ensure that
it uses MAP_PRIVATE if required.
The most common example of code that requires this change is a call to
mmap() using only MAP_ANON.
You should change these calls to use MAP_PRIVATE|MAP_ANON.
 |
In order to provide time for you to make this change, the
procnto -m~b option still implicitly sets
MAP_PRIVATE if you use MAP_ANON without it.
However, we might remove this transitional behavior in a future release.
|
- POSIX specifies that a number of calls must fail with
EINVAL if the supplied timespec is invalid
(tv_nsec < 0 or tv_nsec > 1000000000).
We've updated the following functions:
- clock_nanosleep()
- mq_timedreceive()
- mq_timedsend()
- pthread_cond_timedwait()
- pthread_mutex_timedlock()
- pthread_rwlock_timedrdlock()
- pthread_rwlock_timedwrlock()
- sem_timedwait()
- sigtimedwait()
(Ref# 56889, 58977)
- Performance improvements:
- Automatic variable page size selection in the kernel's
virtual memory manager yields a speed increase of approximately 20%.
- Variable page size for performance improvement:
- You can increase the page size beyond 4 KB, using fewer TLB entries
- Results in fewer TLB misses, improving performance
- Increased networking throughput, up to twice that of the previous
network stack
- Code generation improvements through the use of gcc 4.2;
we've rebuilt the entire operating system with GCC 4.2 tool chain.
- Substantial maintenance update of entire product
- POSIX PSE52 certification
- New CPU architectures / features:
- ARMv6 architecture support (via procnto-v6),
including the removal of the
32 MB process restriction, no global address space
- Vector Floating Point support
- IBM 970 (PPC) architecture support including SMP (via
procnto-900 and procnto-900-smp)
- Freescale E500 SMP support
- Renesas 7786 SMP Support
- PPC BAT addressing
- We used to support only the SH-4 29-bit physical address model.
This model gives you 512 MB of system RAM, but some of that was required
for device mappings and flash, so we were restricted to 256 MB of RAM.
We now support the SH-4a 32-bit physical address model (in addition to
the SH-4 29-bit model), but with restrictions.
There must be sufficient RAM within the physical address range of 0 to
512 MB for the kernel to operate.
The startup and kernel can now support RAM above the 512-MB boundary,
but that RAM is available only to user-level processes.
Ideally large memory systems will have at least 256 MB of RAM available
below the 512-MB physical address boundary.
(Ref# 47671)
- Qnet doesn't fully support communication between a big-endian machine and a
little-endian machine.
However, it does work between machines of different
processor types (e.g. ARMLE, x86) that are of the same endian-ness.
If you require cross-endian networking with Qnet, please contact your
QNX sales representative.
- Support for lazy allocation of physical memory for shared memory
objects (SHMCTL_LAZY)
- Increased scalability of some kernel data structures (timers,
send queues, signals) for improved interrupt latency.
- On PPC targets, when the kernel does a context switch, it issues a
dummy stwcx. (Store Word Conditional Indexed) command to
clear any outstanding reservation, as recommended for the PPC architecture.
However, some processors can have issues if this stwcx. to
address A occurs while the reservation is already held to a
different address B.
To avoid this problem on these processors, procnto must
first issue a dummy lwarx (Load Word And Reserved Indexed)
command to a specific address, and then issue the dummy stwcx.
to the same address.
We've created a system page cpuinfo flag,
PPC_CPU_STWCX_BUG, to indicate which
CPUs are affected and, on those processors, adds the dummy
lwarx to the context switch code.
(Ref# 45538)
- We now support the N bit in the segment registers of the PPC600 family.
If this bit is on, any attempt to execute code in the region covered by
the segment register (a 256 MB size) will result in a protection exception.
 |
Any PROT_EXEC in a 256 MB region turns off the N bit and
allows code execution throughout the whole region.
|
There's a new -m[~]x option to procnto that enables
or disables the PROT_EXEC flag for system-allocated threads.
It's enabled by default.
(Ref# 58299, 58434)
- There's a new -m[~]P to procnto that
controls whether or not anonymous allocation can occur above the 4 GB mark.
(Ref# 52392, 60956; Ticket ID 80995)
- On PowerPC and SH4, if an msync() operation (with
MS_INVALIDATE) is performed on a lazy mapping (a
mmap() of anonymous memory with MAP_LAZY),
the msync() no longer causes the lazy pages to get allocated
and mapped in.
(Ref# 29647)
- If you send with the “nc” variant of
MsgSend*(), then when the server replies, you're now placed at
the front of the ready queue, rather than at the end.
Note that your timeslice isn't replenished; for example, if you had
already used half of your timeslice before sending, then you will still only
have half a timeslice left before being eligible for preemption.
This change lets MsgSendnc() to behave in a similar fashion to
a non-blocking kernel call, without penalizing the caller by forfeiting
its timeslice.
(Ref# 52564)
The documentation doesn't yet include this change.
(Ref# 62293)
QNX Neutrino has a new core networking stack that's
based on NetBSD 4.0 stack.
The main features include:
- Improved performance over the previous generation stack
- Jumbo packets
- TCP offloading (checksum and segmentation)
- Berkley Packet Filter interface
- Layer 2 Bridging & STP
- TCP SACK
- Unix Domain Sockets
- Fast forwarding
- Routing and raw socket support
- Transparent ioctl() support
- Security:
- IPSEC and hardware crypto offload
- IP Filtering and NAT using PF
- PF_KEY support (for encryption enabled stacks)
- NetBSD 4.0 driver API compatibility, with a
“shim” layer to transparently support legacy
io-net drivers
- Wireless support:
- 802.11 a/b/g with WEP, WPA, WPA2
- 802.11 Access Point
- Atheros 5006x , Marvell 86W86, Broadcom BCM43xx chipsets
There are three variants of the networking manager:
- io-pkt-v4
- IPv4 version of the stack with no encryption or Wi-Fi capability built in.
This is a “reduced footprint” version of the stack.
- io-pkt-v4-hc
- IPv4 version of the stack that has full encryption and Wi-Fi capability
built in and includes hardware accelerated cryptography capability
(Fast IPsec).
- io-pkt-v6-hc
- IPv6 version of the stack (includes IPv4 as part of v6) that has full
encryption and Wi-Fi capability, also with hardware accelerated
cryptography.
 |
In our documentation, we use “io-pkt” to refer to
all the stack variants.
When you start the stack, use the appropriate variant; io-pkt
isn't a symbolic link to any of them. |
We've discontinued the following:
| Instead of using:
|
Use: |
| io-net
|
io-pkt* |
| ipf, ipfs, ipfstat, ipmon,
ipnat
|
pf, /etc/pf.conf, pfctl |
| lsm-ipfilter-v4.so, lsm-ipfilter-v4.so
|
lsm-pf-v4.so, lsm-pf-v6.so |
| lsm-sctp.so
|
N/A; not currently supported by io-pkt* |
| nfm-autoip.so
|
lsm-autoip.so |
| npm-pppmgr.so
|
Now included in io-pkt* |
| npm-pppoe.so
|
Now included in io-pkt* |
| npm-qnet.so, npm-qnet-l4_lite.so
|
lsm-qnet.so |
| npm-qnet-compat.so
|
N/A |
| npm-tcpip.so
|
N/A |
| npm-tcpip-v4.so, npm-tcpip-v6.so
|
Now included in io-pkt* |
| npm-ttcpip.so
|
N/A |
We also no longer ship the SRI SNMP suite or the Network DDK.
The new, related binaries include:
- brconfig
- Configure network bridge parameters
- hostapd
- Authenticator for IEEE 802.11 networks
- ifwatchd
- Watch for addresses added to or deleted from interfaces and call up/down-scripts for them
- lsm-autoip.so
- AutoIP negotiation module for link-local addresses
- lsm-qnet.so
- Transparent Distributed Processing (native QNX network) module
- /etc/nsswitch.conf
- Name-service switch configuration file.
This file replaces the lookup keyword in
/etc/resolv.conf.
- openssl
- Command-line tool for using the OpenSSL crypto library
- pf
- Packet Filter pseudo-device
- pf.conf
- Configuration file for pf
- pfctl
- Control the packet filter (PF) and network address translation (NAT) device
- pppoectl
- Display or set parameters for a PPPOE interface
- sockstat
- List the open sockets
- tcpdump
- Dump traffic on a network
- wpa_cli
- WPA command-line client
- wpa_passphrase
- Set WPA passphrase for a SSID
- wpa_supplicant
- Wi-Fi Protected Access client and IEEE 802.1X supplicant
The other changes of note include the following:
- With io-net, loopback checksumming was via ifconfig.
For example:
ifconfig lo0 ip4csum tcp4csum udp4csum
With io-pkt, you control this via sysctl:
# sysctl -a | grep do_loopback_cksum
net.inet.ip.do_loopback_cksum = 0
net.inet.tcp.do_loopback_cksum = 0
net.inet.udp.do_loopback_cksum = 0
(Ref# 44227)
- We now use
/etc/nsswitch.conf,
a name-service switch configuration file.
This file replaces the lookup keyword in
/etc/resolv.conf.
(Ref# 45835)
- We now use the NetBSD 4.0 version of ftp and ftpd,
although ftpd also supports the -n option that was
added after version 4.0.
(Ref# 59340, 59368, 59369)
- The pppoed binary is now just a shim layer that
phdialer uses to dial up PPPOE.
PPP over Ethernet is now part of the io-pkt* stack.
(Ref# 60249)
- The pppd option persist now has a slightly
different behavior.
In earlier versions, if you specified the persist option,
pppd reopened the connection after closing without any limits.
The new version of pppd uses the maxfail option
to limit the number of reopenings that occur.
To emulate the original pppd behavior, use the
persist option combined with maxfail=0 to disable
the limit count.
(Ref# 50941)
QNX Neutrino 6.4.0 introduces the Power-safe “copy on write”
filesystem.
It's the default filesystem for self-hosted Neutrino systems.
FFSv3 and ETFS are included in base runtime.
The new filesystems and the related utilities include:
- chattr
- Manipulate the attributes of a file (QNX Neutrino)
- chkqnx6fs
- Check an entire Power-Safe filesystem for consistency (QNX Neutrino)
- fs-qnx6.so
- Shared object that supports the Power-Safe filesystem (QNX Neutrino)
- fs-udf.so
- Shared object that supports Universal Disk Format (OSTA-UDF/ECMA-167) filesystems
- fsysinfo
- Display filesystem statistics (QNX Neutrino)
- mkqnx6fs
- Format a Power-Safe filesystem (QNX Neutrino)
For more information, see the Filesystems chapters in the
System Architecture and the Neutrino User's Guide,
as well as the entries in the Utilities Reference.
Other changes include:
- fs-etfs-ram
- An ETFS filesystem is no longer mounted by default; you can
use the -m option or
mount -tetfs /dev/etfs2 my_mountpoint.
(Ref# 41841, 57498; Ticket ID 74912)
- fs-qnx4.so
- A deadlock no longer occurs during one of our benchmark tests.
(Ref# 49288, 49636)
- Common Photon and 2D/3D graphics drivers
- Photon, Aviage HMI player, and graphics applications can coexist on
the same system.
- Changes to Photon:
- one-pass widget rendering
- reimplemented offscreen container widget,
PtOSContainer
- improved font system: smaller, faster, and
easier to install and configure.
- an improved ph results in a cleaner and faster startup
- new phgrafx application for configuring graphics options
The new binaries include:
- dispconf
- Generate display configuration data
- gf-calib
- Calibrate a GF touchscreen (QNX Neutrino)
- io-display
- QNX Advanced Graphics server
When you want to run both GF/OpenGL ES and Photon applications, you must start io-display before starting
the Photon graphics server, io-graphics. In this situation, io-graphics queries io-display
for the display's settings rather than its own command-line settings.
For more information on io-display and Photon, refer to Appendix: Photon in Embedded Systems
in the Photon Programmer's Guide.
- phrelaycfg
- Configure remote access to your Photon session.
 |
We strongly recommend that you use the Advanced Graphics layering API
instead of the Photon layering API, due to increased functionality and
ease of use.
(Ref# 60878) |
- libc.so
- Because of some changes in the way that gcc handles its
runtime support routines, we've had to change the version number of
libc.so to 3, to be able to support old (pre-6.4.0) binaries
on a 6.4.0 system.
There are two changes that were made to gcc:
- The link visibility of the runtime support symbols in
libgcc has changed to be hidden.
This means that each binary (executable or shared object) has its
own copy.
Linking against a shared library now no longer lets you use the copy
that's in the shared library.
Earlier binaries relied on finding these symbols in
libc.so.2.
- The other change was in the way the compiler calls the runtime support
routines.
It has specific knowledge of the registers corrupted by each
routine, and it also assumes that the routines won't be called
indirectly (i.e. the routines won't live in another executable or shared
object).
This means that it saves fewer registers than it used to before
calling the routine (a performance improvement), but that if an
executable compiled with gcc 4 is linked in such a way that
it calls a runtime support routine indirectly, then register corruption
will occur.
You need to update your buildfiles as follows to use the new version of
libc.so:
- Change this line:
procmgr_symlink ../../proc/boot/libc.so.2 /usr/lib/ldqnx.so.2
to this:
procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2
- If your buildfile explicitly includes libc.so.2 in
the list of binaries, change it to include libc.so
(or at least libc.so.3).
- Add libc.so.2 to the list of included binaries
before libc.so:
# Include the current libc.so. It will be created as a real
# file using its internal SONAME, with libc.so being a
# symlink to it. The symlink will point to the last libc.so.*,
# so if an earlier libc is needed (e.g. libc.so.2), add it
# before libc.so.
libc.so.2
libc.so
(Ref# 58590, 59482)
- Dinkum libraries
- We've upgraded to Dinkumware version 5.0.
For information about the changes to the libraries, see
http://www.dinkumware.com/WhatsChanged.aspx.
The new libraries include at least the following corrections:
- If you call pow( x, 2.0f ), the function no longer returns
infinity for small values of x.
- _cmdname()
- The _cmdname() function now correctly gives the full
path that the current process was invoked from.
Not only does this change make _cmdname() behave as
documented, but it's necessary to make _cmdfd() work correctly.
(Ref# 59299)
- dispatch_create_channel()
- This function is similar to dispatch_create(), but it
lets you specify the channel ID for the dispatch.
This lets you safely use name_attach() in Photon applications,
as well as specify channel flags for name_attach().
(Ref# 24325, 59009)
 |
If your code calls the internal (and undocumented)
_dispatch_create() function, you should modify it to call
dispatch_create_channel() instead.
|
- encrypt()
- This function now lets you encrypt or decrypt the given string,
depending on the flags argument.
(Ref# 40565, 40639)
- pthread_mutex_timedlock()
- This function now returns EOWNERDEAD if the owner of the
lock died while holding it.
(Ref# 52449, 52863)
- shm_ctl_special()
- This function supports some new special flags for PPC and ARM platforms.
(Ref# 39614, 48279, 58664)
- spawn*()
- There's a new SPAWN_PADDR64_SAFE flag that permits
the selective application spawn of a task that's known to be
64-bit safe or doesn't care about the physical memory location.
(Ref# 52392, 60956; Ticket ID 80995)
The new drivers and DLLs include:
- deva-ctrl-intel_hda.so
- Sound driver for the Intel High Definition Audio controllers
- deva-mixer-hda.so
- Mixer DLL for High Definition Audio codecs.
We currently support a limited number of codecs.
Other changes include:
- There's a new open API snd_pcm_open_name() that lets you
specify the path to the PCM device as a string argument.
You can use this to open PCM devices by their symbolic name.
See io-audio and the play_device driver option.
- Audio drivers now support pause and resume functions, and can now
cache audio data in io-audio.
This feature is functional only if the driver supports it.
See snd_pcm_playback_pause(),
snd_pcm_playback_resume(), snd_pcm_capture_pause(),
and snd_pcm_capture_resume().
- Audio needs amounts of contiguous physical memory for its
transient DMA buffers, and due to fragmentation of the system memory
pool over time, io-audio can sometimes fail to allocate a buffer.
To address this issue, a DMA memory pool has been added to
io-audio such that the ado_shm_alloc()
DDK (Driver Development Kit) call uses the pool for buffer operations
and avoids the system memory pool.
See the pool_size option to io-audio.
- We fixed many problems that occurred when converting PCM streams to
match the underlying hardware using the PCM plug-in interface.
- We've improved the performance for demanding speech-processing
environments.
The changes to the Audio DDK include:
- You must recompile all audio drivers, due to changes to the
ado_pcm_dmabuf and ado_pcm_config structures.
- We changed the name of ado_shm_mmap() to be
ado_shm_map() because it now requires a flags parameter.
For compatibility, you can set the flags argument to NULL.
The changes to the software PCM mixer include:
- You can set the fragment size by using the global command option
sw_mixer_samples=xxx, specifying the value in samples.
The current mixer operates with a variable number of voices, but the
audio sample size is determined by the hardware capabilities of the
real hardware the mixer will operate against.
Therefore the fragment size in bytes is samples * voices * sample size
in bytes.
- The software mixer algorithm needs to operate at only one sample rate.
For this reason, there now are several methods that the algorithm can use
to select the best rate.
You can select the method by using the global option
sw_mixer_rate=rate, where rate is
one of the following:
- FAHC
- First Active High Quality.
The rate is set to 44.1 or 48 KHz, depending on the first active stream.
- FA
- First Active.
The rate is set by the first active stream.
- Lrate
- Lock the rate to the specified value, in hertz.
We've deprecated the drivers for Creative Sblive and Cyberpro5.
- On a modem disconnect, libio-char.a now triggers an
io_read for every client blocked on a read() call.
The client's read() call returns with 0 (EOF).
Make sure that your clients explicitly check for a return of
EOF, instead of simply calling read() repeatedly
if the number of bytes is less than expected.
(Ref# 59308, 59593)
- Flash filesystems now use a cache to remember the location of extents
within files and directories, so that random seeking (especially backward)
is much faster.
(Ref# 56650)
The new drivers include:
- devg-gma9xx.so
- Graphics driver for Intel 945GX and 945GMx chipsets
- devg-soft3d.so
- Software 3D graphics module
- devg-poulsbo.so
- Graphics driver for the Poulsbo chipset. Note that this graphics driver is currently undocumented. Refer to
the devg-poulsbo.so -use message for information about using this driver.
The new drivers include:
- devh-egalax.so
- Driver for USB Egalax touch devices
- devh-touchintl.so
- Driver for USB Touch International touch devices
The new drivers include:
- devi-semtech
- Semtech input manager for Photon
- devi-zytronic
- Zytronic input manager for Photon
The new drivers include:
- devn-asix.so
- Driver for the ASIX AX88172/AX88178/AX88772 USB Ethernet dongle
- devn-micrel8841.so
- Driver for Micrel 8841 (1 port) or 8842 (2 port) Ethernet controllers
- devn-rtl8169.so
- Driver for Realtek 8169 Gigabit Ethernet controllers
- devnp-ath.so
- Driver for wireless network adapters based on the Atheros AR5210, AR5211, AR5212, and AR5213 chips
- devnp-axe.so
- Driver for USB (2.0) Ethernet adapters based on the ASIX AX88172 chip
- devnp-bcm1250.so
- Driver for Broadcom BCM1250 10/100/1000 Mbit Ethernet controllers
- devnp-bcm43xx.so
- Driver for the Broadcom-based 802.11b/g wireless Ethernet controller
- devnp-bge.so
- Driver for Broadcom 57xx Tigon3 10/100/1000 Mbit Ethernet controllers
- devnp-i82544.so
- Driver for Intel 82540, 82544, 82545, 82546, and 82547 Gigabit Ethernet LAN adapters
- devnp-mpc85xx.so
- Driver for Freescale MPC85XX TSEC Ethernet controllers.
This driver is shipped only with the BSPs that need it.
- devnp-mpcsec.so
- Hardware Crypto Engine driver.
This driver is shipped only with the BSPs that need it.
- devnp-msk.so
- Driver for Marvell Yukon-2 based Gigabit Ethernet adapters
- devnp-ral.so, devnp-ural.so
- Driver for wireless adapters based on the Ralink RT2500, RT2501, RT2600, and RT2500USB chipsets
- devnp-rum.so
- Driver for USB 2.0 wireless adapters based on the
Ralink RT2501USB and RT2601USB chipsets
- devnp-shim.so
- “Shim” driver for backward compatibility with io-net
- devnp-speedo.so
- Driver for Intel 82557, 82558, and 82559 Fast Ethernet LAN adapters
The new binaries include:
- enum-usb
- Enumerate devices on the USB bus
- QNX Software Systems has bought the rights to
Getting Started with QNX Neutrino, by Rob Krten.
We've added it to the Neutrino documentation, and we're in the process
of updating it.
(Ref# 55876)
The updates include:
- The examples of resource managers now use
dispatch_context_alloc(), dispatch_block(), and
dispatch_handler() instead of
resmgr_context_alloc(), resmgr_block(), and
resmgr_handler().
(Ref# 56829)
- We've corrected the names of the _RESMGR_FLAG_BEFORE
and _RESMGR_FLAG_AFTER flags.
(Ref# 56828)
- _RESMGR_ERRNO() is deprecated; handler functions can
simply return errno values.
(Ref# 56828)
- The Clocks, Timers, and Getting a Kick Every So Often chapter
uses 10 ms as the ticksize.
The ticksize is now usually 1 ms, but the discussion is still valid.
(Ref# 56785)
- We've corrected the description of the
SIGEV_PULSE_PRIO_INHERIT flag.
We've also removed the obsolete “divide by 5” timer from
a diagram.
(Ref# 56785)
- There's no longer a bug in the setting of the size member
of the resmgr_context_t structure; we've removed a note
about it from the Resource Managers chapter.
(Ref# 56781)
- The name_attach() and name_detach() functions
aren't just for porting QNX 4 applications.
They work well for simple client/server situations.
(Ref# 56738)
- Priority inheritance no longer occurs just one level deep.
(Ref# 53452, 56738)
- The highest priority is now 255 instead of 63, and
the timeslice for round-robin scheduling is four times the ticksize.
(Ref# 56686)
- The spawn() and spawnp() functions aren't POSIX.
(Ref# 56686)
- The Resource Manager chapter now refers to
iofunc_close_ocb_default() instead of
iofunc_close_default(), and to
resmgr_attach() instead of resmgr_start().
It no longer refers to iofunc_read().
(Ref# 56565)
- Resource managers should use the _IO_FLAG_* bits
internally to indicate permissions, instead of relying on any
relationship between these values and O_RDONLY, etc.
(Ref# 53463)
- We've removed the entries for board-specific devf-* drivers
from the Utilities Reference.
All the flash filesystem drivers use the same options as
devf-generic.
(Ref# 12749)
The new binaries include:
- mcd
- Media Content Detector utility
- We've removed the following from QNX SDP 6.4.0:
- Voyager web server (vserver)
- Mozilla web server (mozserver)
- Voyager browser client
- Mozilla email and news client
- browser plugins, including: multimedia plugins (audio, video),
Adobe Flash Player and Java Virtual machine plugins
- The Netfront 3.1 web server and the Voyager browser client are still
available separately in the Web Browser TDK.
- The self-hosted Neutrino version of 6.4.0 includes a newer version of
the standalone Mozilla web browser.
It's called Bon Echo and is based on Firefox 2.0.0.14 source code.
We continue to work on other browser-related offerings that are
planned for future releases or available separately from SDP.
Please contact QNX directly for more information.
The QNX Momentics Tool Suite features:
- GCC 4.2 tool chain
- GDB 6.7
- Binutils 2.18
- Mudflap (command line only)
- Integrated Development Environment 4.5
- Phindows update that improves the experience of rendering Photon on
Windows
For more details, see the following sections:
The changes include:
- dumper
- There's a new -z option that makes dumper
use gzip to compress the core files.
The option takes an integer argument that specifies the level of
compression, in the range from 1 (fastest) through 9 (best compression).
(Ref# 39662)
- gcc
- We've updated gcc to version 4.2.
We no longer ship versions 2.95.3 or 3.3.5.
(Ref# 54006)
- With gcc 4.2, the char data type is now
unsigned on PPC targets.
(Ref# 43764)
- If you use the -Os option with gcc to
optimize for size, you no longer get some compile errors.
(Ref# 19955, 21347)
- Version 4.2 of gcc (unlike 2.95.3 and 3.3.5) doesn't report
any parsing errors for seemingly simple code.
(Ref# 20409)
- Nested functions (i.e. one function declared inside another)
now work properly.
- The __cxa_atexit() function is now supported.
C++ shared objects can optionally use
__cxa_atexit(), which allows their destructors
(normally registered with atexit())
to be called at dlclose() time.
As a result, you can now use dlopen()
and dlclose() on C++ shared objects.
(Ref# 19702)
- gdb
- We've updated gdb to version 6.7.
(Ref# 54030)
- icc
- We've discontinued the Intel 8.1 compiler, icc.
(Ref# 56606)
- make
- The MSYS version of make works with UNC paths,
such as //some_machine/dir.
(Ref# 24202)
- mkefs, mketfs, mkifs
- You now can specify a value of none for the filter
attribute.
This is useful if you need to override a global filter.
(Ref# 59585; Ticket ID 84523)
- qcc
-
- python
- We now include Python, the powerful object-oriented programming
and scripting language.
(Ref# 56492, 58443)
 |
We don't support Python on Linux or Windows.
If you need Python on these hosts, you should download it from
http://www.python.org.
(Ref# 60935, 60940)
|
- showmem
- This is a new utility that you can use to determine
how your system's memory is used.
(Ref# 26719, 60931)
New utilities include:
- ap
- Manage adaptive partitions
- paste
- Merge lines of input files, and writes the resulting lines to standard output. (POSIX)
- showmem
- Display memory information
- showmount
- Display memory information
- uudecode
- Decode a file that was encoded with uuencode
- uuencode
- Encode a binary file or standard input into ASCII
We've deprecated the following items:
- Zmodem tools
- Cygwin dependency; we're using MinGW (Minimalist GNU for Windows)
and MSYS (Minimal SYStem) instead
- some Windows command-line utilities, such as
ps, od, ctags, and vim
(We now ship a non-Cygwin version of bash.)
This version of the IDE includes the following fixes for previously reported
issues:
- If you don't have the latest version of qconn, the IDE now
gives you a working link to the section in the documentation that
explains how to update qconn.
(Ref# 50214)
- While profiling an application, function names are no longer
sometimes displayed as “$a” in the Sampling Information view.
(Ref# 44977)
- In the IDE's Memory Analysis Toolkit, the
Use dladdr to find all dll names option
isn't required anymore and is disabled if you're using the new memory
analysis library.
(Ref# 45807)
- When using Attach mode in Memory Analysis Tooling, you can now set the
Perform leak check when process exits option.
(Ref# 44768)
- When using Memory Analysis for ARMLE
and SHLE targets,
libmalloc no longer has difficulty tracing back to the
call site of a function.
(Ref# 47080, 26100, 41457)
- Whenever a build of a standard make project is completed without any
errors or warnings, the IDE no longer displays the following error message:
Severity and Description Path Resource Location
Creation Time Id
Error launching external scanner info generator (gcc -E -P -v -dD
C:/QNX640/ide4-workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)
code_cov Unknown 1157739187750 23
In this case, the project no longer includes a warning symbol beside
the project name.
(Ref# 41424)
- If you set the Save automatically before build option for
a project, and you change one of the project's files, the file is
saved whether the project or file is selected in the tree.
(Ref# 25866)
- In the Launch Configuration dialog, if a target isn't selected,
and you click the From Project button, you no longer receive
a NULL pointer exception error.
(Ref# 45599)
- If a project contains a file that only has the following line:
#include <iostream>
the Code Coverage tool no longer fails.
(Ref# 26376; Ticket ID 70067)
- On Linux, if your serial device is something like /dev/ttyUSB0,
the Terminal 1 view of the System Builder no longer displays the message
Device Not Specified.
Various bug fixes
- Offscreen context support
- PgReadScreen() and Photon's snapshot utility
are now supported
- User interface rework, including built-in help screens and per-user
configuration settings.
- New Photon session management capabilities
(Ref# 39725)
- gzip image compression
(Ref# 24208)
- clipboard sharing
(Ref# 8216)
- Offscreen contexts are now supported on multiple displays
simultaneously.
(Ref# 24530)
- antialiased font support
(Ref# 29481)
- PgReadScreen() and Photon's snapshot utility
are now supported
- encryption support
(Ref# 28910, 29376)
- Direct3D double buffering
(Ref# 46377)
The QNX Momentics Tool Suite lets you
install and work with multiple versions of Neutrino (from
6.2.1 and later). Whether you're using the command line or
the IDE, you can choose which version of the OS to build
programs for.
 |
Only versions of Momentics with different medial version numbers can coexist.
For example, 6.3.2 can coexist with 6.2.1, but not with 6.3.0.
Coexistence with 6.2.1 is supported only on Windows hosts. |
When you install QNX Momentics, you get a set of
configuration files that indicate where you've installed the
software. The QNX_CONFIGURATION environment
variable stores the location of the configuration files for
the installed versions of Neutrino; on a self-hosted
Neutrino machine, the default is
/etc/qnx.
On Windows hosts, you'll find a configuration program called
QWinCfg for switching between versions of QNX Momentics.
You launch QWinCfg via the start menu (e.g.
).
For details on using QWinCfg, see its entry in
the Utilities Reference.
If you're using the command-line tools, use the
qconfig utility to configure your machine to use
a specific version of Neutrino:
 |
In the above command, you must use the “back tick” character
(`), not the single quote character
(').
The string that you pass to the -n option is the
Installation Name field as printed by qconfig. |
This command affects only the shell in which you ran qconfig.
Other windows, for example, will be unaffected.
To change environments in all your windows, you can run the command in your
shell-initialization script or in your .profile.
You can also define separate users who use different coexisting versions.
When you start the IDE, it uses your current
qconfig choice as the default version of the OS;
if you haven't chosen a version, the IDE chooses an entry
from the directory identified by
QNX_CONFIGURATION. If you want to override
the IDE's choice, you can choose the appropriate build
target. (For more information, see the section
“Version coexistence” in the IDE Concepts chapter
of the IDE User's Guide.)
- We no longer provide the QNX Neutrino RTOS x86 Runtime Kit.
For information about generating this kit, see
How to create a Runtime Kit from a standard SDP 6.4.0
in the Neutrino technotes.
(Ref# 58197)
- We no longer ship the Neutrino-hosted version of the IDE.
(Ref# 60706, 61193)
- The umass-enum USB mass storage enumerator and
filesystem-mounting utility is for x86 systems only;
diskboot starts it, but then switches to its replacement,
enum-usb.
(Ref# 61031)
- We no longer ship packagebsp; for information about
packaging a BSP, see
http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/Packaging_BSP
on our Foundry27 community website.
(Ref# 61548)
- We plan to deprecate rtelnet in a future release.
(Ref# 61851, 61852)
- We no longer ship the former multimedia framework, including:
- MP3 decoder
- Media player (mmplay)
- CD player
- associated documentation and utilities
- associated ilbraries:
- aif_parser.so
- audio_writer.so
- au_parser.so
- avcodec.so.*
- avi_parser.so
- cdda_reader.so
- ff_mpegv_decoder.so
- fildes_streamer.so
- http_streamer.so
- iff_parser.so
- lame_mp3_encoder.so
- libmedia.so.*
- libmmconvenience.so.*
- libmmedia.so.*
- libmpeg.so.*
- libogg.so.1
- libogg.so
- liboggS.a
- libTremor.so.*
- midi_parser.so
- mpega_parser.so
- mpegs_parser.so
- mpegv_parser.so
- oggi_decoder.so
- ogg_decoder.so
- rawfile_writer.so
- stream_reader.so
- wavfile_writer.so
- wav_parser.so
- window_writer.so
- wma9_decoder.so
- xing_mpega_decoder.so
- We no longer ship the following binaries:
- crttrap
- deva-ctrl-cyberpro5.so
- deva-ctrl-tahoe.so
- devb-aha2
- devb-aha4
- devb-aha7
- devb-amd
- devb-ncr8
- devc-amctap
- devc_amctap_host
- devc-hspi
- devc-netrom540
- devc-ser2681
- devc-ser403
- devc-ser8250-ixp2400
- devc-serdsiu
- devc-sergt64260
- devc-serppc800
- devc-serpsc
- devc-sersci
- devf-800fads
- devf-aspen
- devf-bigsur
- devf-brh
- devf-ixdp2400
- devf-ixdp425
- devf-i365sl
- devf-mtx600-w8
- devf-p5064
- devf-ppaq
- devf-rpx-lite
- devf-sc400
- devf-vr41xx
- devg-banshee.so
- devg-igs5000.so
- devg-mach64.so
- devg-matrox.so
- devg-mq200.so
- devg-neomagic.so
- devg-orchid.so
- devg-pxa250.so
- devg-q2sd.so
- devg-ravin.so
- devg-rotate90.so
- devg-rotate270.so
- devg-rpxlite.so
- devg-s3.so
- devg-sa1110.so
- devg-stpc.so
- devg-vga.so
- devgt-iographics
- devi-ahl
- devi-carrol
- devn-artesyn.so
- devn-bcm43xx.so
- devn-cpci-mcp750.so
- devn-eepro.so
- devn-el589.so
- devn-gt64260.so
- devn-klsi.so
- devn-lance.so
- devn-ne2000-403.so
- devn-ns83815.so
- devn-orinoco.so
- devn-ppc405.so
- devn-ppc800-ads.so
- devn-ppc800-cllf.so
- devn-ppc800-mbx.so
- devn-ppc800-rpxlite.so
- devn-ppc8260.so
- devn-ppc860_mii.so
- devn-prism.so
- devn-rlan2.so
- devn-tulip-p5064.so
- devn-via-rhine.so
- devn-wd.so
- flashcmp
- fontadmin
- fontsleuth
- fontview
- fs-pkg
- gri-photon.so
- icc
- info
- io-net
- ipf
- ipfs
- ipfstat
- ipmon
- ipnat
- lsm-ipfilter.so
- lsm-sctp.so
- mmplay
- netfront
- nfm-autoip.so
- npm-pppmgr.so
- npm-pppoe.so
- npm-qnet-compat.so
- npm-qnet-l4_lite.so
- npm-qnet.so
- npm-tcpip.so
- npm-tcpip-v4.so
- npm-tcpip-v6.so
- npm-ttcpip.so
- packager
- pci-artesyn440
- pci-artesyn750fx
- pci-brh
- pci-cpc700
- pci-ixc1100
- pci-ixp2400
- pci-mpc8266
- pci-p5064
- pci-ppc440rb
- pci-raven
- pci-sandpoint
- pci-yellowknife
- phplay
- phrecord
- pkgctl
- playaudio
- playaudiocd
- psin
- qnxinstall
- qnxplayer
- startup-403evb
- startup-603evb
- startup-79s465
- startup-800fads
- startup-8260ads
- startup-artesyn
- startup-artesyn750fx
- startup-aspen
- startup-bigsur
- startup-cpci-6750
- startup-ddb-vrc5074
- startup-integrator
- startup-malta
- startup-mbx800
- startup-mcp750
- startup-mcpn765
- startup-mtx600
- startup-mvme
- startup-mvp
- startup-p5064
- startup-rpx-lite
- startup-sa1100-mm
- startup-sa1110-db
- startup-sandpoint
- startup-sengine
- startup-vme603
- startup-vr41xx
- startup-walnut
- voyager
- vserver
 |
Experimental software is primarily provided for customers and
the community to try out, and perhaps to get a glimpse of what might be
in store for the future.
For information about the use of
experimental software, see the Commercial Software License Agreement (CSLA) or
Partner Software License Agreement (PSLA) in the Licensing area of our website,
http://www.qnx.com/legal/licensing/. |
The experimental items in QNX SDP 6.4.0 are:
- asynchronous messaging
- asynchronous message queues
- adaptive partitioning memory allocator
QNX SDP 6.4.0 contains known issues in these areas:
 |
We're actively investigating all known issues. |
- The instructions in the printed Installation Guide for
uninstalling QNX SDP on Windows and Linux are incorrect.
(Ref# 62348)
Workaround: Here are the correct instructions:
- On some Linux distributions, the QNX SDP 6.4.0 installer incorrectly
displays accented “e” characters as a square box in the
French text of the “Language” section of the license
agreements.
(Ref# 61721)
Workaround: To display the text correctly, open a web browser
and view the license agreement .txt files located in
base_dir/install/qnxsdp/6.4.0, where
base_dir is where you installed SDP.
- If you install SDP 6.4.0 on a Windows or Linux system that already has
QNX Momentics 6.3.2, the installer tells you that it's modifying 6.3.2
to support coexistence with 6.4.0.
Here are the details:
- Windows
- The 6.4.0 installer checks to see if the cleanup utility,
QNXWinCleanup.exe, is present under the 6.3.2 host directory
(typically C:\QNX632\host)
and moves it to C:\Program Files.
If you uninstall 6.4.0, the uninstaller checks to see if 6.3.2 is present.
If so, it moves the cleanup utility back to its original location.
- Linux
- The 6.4.0 installer replaces uninstaller.bin in
632_base_dir with a script that launches the 6.3.2 uninstaller
with a special option:
./uninstaller.bin -W beanDeleteConfigDir.active="False"
If you uninstall 6.4.0, the uninstaller checks to see if 6.3.2 is present.
If so, it restores uninstaller.bin.
(Ref# 58784, 60037)
- If you've installed both QNX Momentics 6.3.2 and
the QNX Software Development Platform 6.4.0 on Linux or Windows, and you
then uninstall 6.3.2, the value of the QNX_CONFIGURATION
environment variable will be incorrect, and you won't be able to use
6.4.0.
(Ref# 58784)
Workaround: Remove the extra qconfig string from the
value of QNX_CONFIGURATION.
- If you install 6.4.0, and you then install 6.3.2, you need to do the
following:
(Ref# 56879)
- VMWare ESX (or a VMware workstation using SCSI disks) doesn't present
an EIDE interface to the guest OS.
It offers only a default of an LSI Logic SCSI 320 device (which we don't
support) and a second selectable option of a BusLogic 946C device as a
PCI device.
It does let you boot off an IDE CDROM, but won't let you install to an IDE
disk; even if the real physical storage is an IDE device,
VMWare presents it virtually as one of the two aforementioned devices.
(Ref# 51509)
Workaround: In order to install Neutrino on a VMware VM using the
BusLogic SCSI controller emulation, you must first apply a driver update.
We've included this update on the installation media:
- Boot from the installation CD.
- On seeing the initial “Press space for options” message,
press the space bar.
- Choose to apply the driver update.
- Follow the instructions on the screen using /fs/cd0
(i.e. the installation media) as the source.
For more information on installing driver updates, see
“Updating disk drivers” in the
Controlling How Neutrino Starts chapter of the
QNX Neutrino User's Guide.
- If you install QNX Software Development Platform 6.4.0 on Windows
using a third-party windows explorer (e.g. Total Commander), the
installer doesn't display the Activation window once the installation
is complete.
(Ref# 59359)
Workaround: Open the QNX SDP Activation dialog by selecting
from the Start menu, or by entering the following at the command prompt:
drive:\Program Files\QNX Software Systems\bin\qnxactivate -a
- The installer launches a web browser at the end of installation to display
a landing page on the QNX website.
On some versions of Linux, the installer can't launch the browser, but
sometimes only if you already have QNX Momentics 6.3.2 installed.
(Ref# 24429, 61494)
Workaround: Launch a web browser and go to
http://www.qnx.com/640foryou.
- procnto
-
- If you exec() a program with a relative path, and you're
using Qnet, the kernel will leak small amounts of memory, and Qnet
will leak some resources.
(Ref# 62502)
- We've observed some memory corruption for uncacheable memory
with the Renesas BigSur (SH7751)
board.
It might be a problem with the hardware.
(Ref# 27741)
- Some calls to mmap() with MAP_ANON or
MAP_LAZY may be slower with QNX SDP 6.4.0
than with earlier releases on certain platforms.
The difference is more pronounced for small sizes (e.g. 4 KB).
For larger sizes (more than 32 KB), performance may be the same or
better with 6.4.
It might take longer to start applications and create threads.
In part, this is due to the virtual memory manager's more complete
data structures.
(Ref# 27831)
- If you're in a directory on a remote machine, and you pipe the output
of a command to xargs, and you redirect the output to a file,
you get a “cannot fork” error.
For example:
cd /net/remote_machine/tmp
find . -type f | xargs grep FAIL > report.txt
/bin/sh: cannot fork - try again
It seems to be a problem with permissions.
Piping the output of xargs to less works.
(Ref# 29834)
Workaround: Log in as root.
- If you have multiple memory mappings to files that use the same
underlying
resource manager, and these mappings are first referenced simultaneously
(e.g. the first reference in a program), there is the potential for a
deadlock if the number of simultaneous first references exceeds the
number of threads in the underlying resource manager.
(Ref# 29440, 30045)
- Some older versions of VMWare may show signs of instability.
For example, you might get kernel faults that don't occur on real
machines or with VMWare 6.5. You might also see messages such as
“The CPU has been disabled by the guest operating system.”
(Ref# 57058)
- procnto and the underlying filesystem may become deadlocked
when you use read/write memory-mapped files with multiple threads,
under the following circumstances:
- If you have multiple mappings to files that use the same underlying
resource manager, and these mappings are first referenced simultaneously
(e.g. the first reference in a program), there is the potential for a
deadlock if the number of simultaneous first references exceeds the
number of threads in the underlying resource manager.
(Ref# 29440, 29380)
- procnto-smp
- On SMP systems, the functions that lock mutexes — such as
pthread_mutex_lock(), and
pthread_cond_wait() (when the thread is woken up by a
pthread_cond_signal() or pthread_cond_broadcast()
— can unblock threads in the wrong order, which can cause a
priority inversion. (Ref# 24522)
- asyncmsg_*()
- Asynchronous messaging doesn't work correctly on multiprocessor systems.
(Ref# 57260)
- chdir(), chroot()
- A bug in chdir() makes chroot() not work properly.
(Ref# 21089)
Workaround: Do the following:
- Run export DIR_KEEP_SYMLINK=1 before starting your program.
- Use chdir() to go to your new root directory before
you chroot() to it.
Here's an example:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <errno.h>
void print_cwd() {
char* cwd;
char buff[PATH_MAX + 1];
buff[0]=0;
cwd = getcwd( buff, PATH_MAX + 1 );
if( cwd != NULL ) {
printf( "mycwd: My working directory is %s.\n", cwd );
} else {
printf("mycwd: getcwd returned Null\n");
}
}
int main( void )
{
char* cwd;
int rc;
char buff[PATH_MAX + 1];
printf("before running this, you should 'export DIR_KEEP_SYMLINK=1' \n");
chdir("/home/ftp");
printf("mycwd: initial cwd:\n");
print_cwd();
printf("mycwd changing chroot to /home/ftp/\n");
rc=chroot("/home/ftp/");
printf("mycwd: chroot rc=%d\n",rc);
print_cwd();
printf("mycwd: chdir to ad\n");
rc=chdir("ad");
printf("mycwd: chdir rc=%d\n",rc);
print_cwd();
return EXIT_SUCCESS;
}
- ENDIAN_*()
- This release includes inline assembly optimization on
some platforms for the ENDIAN_*() (byte-swapping) routines.
These routines are macros that determine the best
method to perform the byte-swapping (as inline math using
shift-and-mask operations that may be constant-folded
at compile time, or as inline assembly using native CPU
instructions at runtime).
Due to a bug in the gcc 2.95.3
__builtin_constant_p() implementation, code compiled
with gcc 2.95.3 always selects the assembly variant.
This means that if you use an ENDIAN_*() expression as
a static initializer, it fails to compile.
For example, if you use gcc 2.95.3 to compile the following code:
static uint32_t numbers[] = {
ENDIAN_LE32(0x39c39c39),
ENDIAN_BE32(0x39c39c39)
};
you'll get an initializer element is not constant
compile error.
(Ref# 27099)
Workaround: Do one of the following:
- If you're defining the structure inside a function body,
remove the static qualifier, which causes
the data structure to be initialized at runtime rather than
compile time, at which stage inline assembly is valid.
- Compile affected code with gcc 3.3.5,
which has a fixed __builtin_constant_p() that allows
detection of a constant expression and implements the byte-swapping with
shift and mask operations.
You can choose gcc 3.3.5 by
specifying the appropriate -V compiler version to
cc or gcc, or by setting
GCC_VERSION=3.3.5 within a Makefile or
common.mk environment.
 |
This affects only static initializers containing
ENDIAN_*() expressions, and doesn't apply to any
runtime use of these ENDIAN_*() macros.
|
- fpemu.so.2
- This library causes some problems on x86 targets if it's compiled
with gcc 4 with optimization about -O0.
To avoid these problems, we've compiled the DLL with -O0
optimization for x86.
(Ref# 55883)
- Synchronization objects
- You should allocate synchronization objects (mutexes, condvars, etc.)
only in normal memory mappings.
Otherwise on certain processors, such as some PPC processors,
pthread_mutex_lock(), atomic_add(), and so on
will cause a fault if the control structure is allocated in uncached memory.
(Ref# 61585)
- Time zones
- QNX Neutrino uses a nonstandard method of defining time zones that's
difficult to keep up to date.
We plan to replace it in a later release.
(Ref# 44425)
- libxml.a
- This library is a Neutrino interface to version 1.1 of the
Expat XML Parser, but it isn't documented.
For information about this library, see <xmlparse.h>
and <xmltok.h> in
$QNX_TARGET/usr/include.
(Ref# 56140)