4.8 Release Notes

The 4.8.2 release was made on 18 March 2010. This release branch is frozen and available only for legacy support.

<blockquote> <b>Latest:</b> </blockquote>

This page lists the changes and improvements that have been made to the RTEMS development source since the 4.7 release branch was made. As usual, there will be submissions that were not expected and the user community is to be thanked again for these. In keeping with project history, the feature set of the 4.8 release series was largely driven by user submissions and requests.

User submissions are highly valued by the RTEMS Project. Please note that if we forgot to include anyone's work in this release information, it is an accident. Please email and we will add the information.

<blockquote> The RTEMS project provides built tools sets that are available for download. For Linux the RPM package formater is support and avaliable from the APT/Yum Repository. For Windows MinGW Executable Installers are available. </blockquote>

If any changes or enhancements are missing in this list, feel free to add them. After all, that's why this is a Wiki.

Tool Improvements

  • Ralf Corsepius is continuing on his effort to improve the build infratructure and eventually support the CPU and BSP Kits in released version. This is both an RTEMS and a Tool Improvement as Ralf's goal is to be able to release CPU Kits in binary RPM form. In late May 2007, he made his first cpukits available for testing.
  • Thanks again to Ralf, it is possible to provide target specific versions of the development tools. This is important when GCC drops support for an old architecture or we are avoiding target specific bugs in a particular tool version. Nominally, most RTEMS targets will use the same tools and they have been upgraded to the following versions:
    • autoconf 2.61
    • automake 1.10
    • binutils 2.18
    • gcc 4.2.1 for C/C++ with newlib 1.15.0
    • gdb 6.6

The latest patch for each tools is in rtems/contrib/crossrpms/patches.

RTEMS Improvements

  • Modified behavior when changing priority of a thread which is blocked on a priority based thread queue. Previously, the thread remained enqueued based upon its original priority. Now the thread is requeued to reflect its new priority. This work was sponsored by RUAG Space AB (at the time named Saab Space).
  • Nanosecond time of day and time stamp granularity now supported.
    • CPU Usage statistics can be at nanosecond granularity
    • Rate Monotonic Period Usage statistics can be at nanosecond granularity
  • Rate Monotonic Period Usage statistics are now always maintained as part of the manager.
  • Code Space Reduced
    • Optional Managers are more useful and now actually reduce the code size of your executable again.
    • The C Program Heap is now implemented directly in terms of the SuperCore? Heap Handler. This means that the Region Manager is no longer a required manager.
    • The newlib reentrancy user extension is now statically installed. This means that the User Extension Manager is no longer a required manager.
    • Much work has been done to split files which contained multiple functions into one function per file in the SuperCore?, Classic API, and SAPI. This reduces code space.
    • Much work as been done to instantiate global data on a per manager and per handler basisin the SuperCore?, Classic API, and SAPI. This reduces .data and .bss space.
  • Promotion of libmisc components to "first class citizens". This involves changing the name of routines to reflect RTEMS naming standards, adding documentation to the Users Guide and where appropriate integrating them more tightly with the RTEMS SuperCore? or API implementations. This impacts the CPU Usage, Stack Checker, and Rate Monotonic Usage support components.
  • Addition of new general object operations
    • object ID to uint32_t name service -- rtems_object_id_to_name()
    • object ID to string name service -- rtems_object_get_name()
  • Addition of rtems_iterate_over_all_threads() service that iterates over all threads and tasks in the system calling a user supplied function
  • Faster boot time: The default behavior was to zero out the C Program Heap and RTEMS Workspace areas. Analysis showed that this was often 90+% of instructions executed at the boot time. Changing the default to not zeroing out memory resulted in a significant boot time savings.
  • Addition of new Ports
    • Altera NIOS II from Kolja Waschk.
    • Analog Devices Blackfin from Alain Schaefer.
  • The Skyeye and RTEMS communities have come together to make sure more BSPs run on the Skyeye simulator. The RTEMS tests hello.exe and ticker.exe are now included in the Skyeye testsuite for multiple BSPs. See SkyEye for details and status.
  • Additional POSIX API support
    • Barriers added
    • Spinlocks added
    • RWLocks added
  • Additional Classic API support
    • Barriers added
  • Corrected types in C User's Guide.
  • Updated and corrected Development Environment Guide.
  • Updated Ada bindings to bring them in sync with the C Classic API.
  • Significant updates to existing BSPs
    • powerpc/gen5200 now supports more variants including Freescale LITE5200B
    • sparc/leon2 and leon3, AMBA scanning routines updated. Added a bunch of new drivers.
  • Addition of new BSPs
    • arm/nds (Nintendo DS)
    • arm/rtl22xx
    • arm/smdk2410
    • bfin/eZKit533
    • powerpc/gen5200
    • powerpc/mpc8349eads
    • powerpc/mvme3100
    • powerpc/icecube
    • powerpc/virtex
  • Removal of obsoleted BSPs
    • arm/armulator
    • m68k/dmv152
    • powerpc/gen405 (last of "old" exceptions BSPs)
    • powerpc/helas403 (last of "old" exception BSPs)
  • Added new test cases in sptests and libtests to improve test coverage.


  • Most uses of rtems_unsignedXX and rtems_signedXX types should now use C99 uintXX_t and intXX_t types.
  • Classic API Barrier Manager added
  • Addition of object ID to name lookup services
    • rtems_object_id_to_name
    • rtems_object_get_name
  • Rate Monotonic Manager now implicitly maintains statistics and adds the following services:
    • rtems_rate_monotonic_get_statistics,
    • rtems_rate_monotonic_reset_statistics,
    • rtems_rate_monotonic_reset_all_statistics,
    • rtems_rate_monotonic_report_statistics
  • Clock Improvements
    • clock_get_uptime
    • rtems_clock_set_nanoseconds_extension
  • Rate Monotonic Period Reporting Additions
    • Functionality now integrated with Rate Monotonic Manager
    • All routines named rtems_XXX
    • Nanosecond granularity on times available
    • Uses printk
  • CPU Usage Reporting Changes
    • All routines named rtems_XXX
    • Nanosecond granularity on times available
    • Uses printk
  • Stack Checker Changes
    • All routines named rtems_XXX
    • Added method which is called by the user to check if the current task has blown its stack at this exact time.
    • Uses printk

Changes Per Point Release

Release 4.8.2 Changes

This release is the third in the 4.8 series and was cut on 18 March 2010.

Significant changes between 4.8.1 and 4.8.2 include the following:

Issues With Problems Report Numbers

  • 1297/cpukit - pthread_rwlock_init misinterprets NULL attr pointer
  • 1313/cpukit - "rtems_pty_maximum_ptys" not initialized
  • 1316/cpukit - message queue broadcast truncated messages that were too long and should have return an error per the documentation
  • 1330/cpukit - free.c: Print of wrong address in error message
  • 1333/cpukit - typo in termiostypes.h uses major instead of minor
  • 1334/doc - Misc Documentation Typos and Object ID correction
  • 1337/bsps - Stripping .rodata section produces unusable executables for the i386-rtems target.
  • 1348/cpukit - Resetting CPU usage information while a period is running results in a negative minimum cpu time used being reported.
  • 1350/bsps - arm/csb336/network/lan91c11x.c: array subscript is above array bounds
  • 1354/bsps - AV5282 Network driver can put empty mbuf on descriptor chain
  • 1357/cpukit - creating task with RTEMS_NO_ASR has no effect
  • 1359/cpukit - rtems_libio_allocate: rtems_libio_iop_freelist incorrectly zeroed on semaphore error
  • 1363/filesystem - Fix issue where 32 bit values are not written correctly in FAT f/s data.
  • 1364/cpukit - gxx_wrappers.c won't compile with diagnostics enabled
  • 1376/filesystem - lseek filesystem internal handlers should return off_t
  • 1378/filesystem - seek device file system handler returns 0 not offset
  • 1380/bsps - Unreadable comments in c/src/lib/libbsp/arm/rtl22xx/include/bsp.h
  • 1387/doc - Add Interrupt Manager services to set callable from ISR
  • 1388/cpukit - Classic Semaphores allow both priority inherit and ceiling attributes to be set
  • 1391/bsps - sparc BSPs spurious handler printk format error
  • 1396/bsps - mvme5500 update from Kate Feng
  • 1414/cpukit - Valid Id of Wrong Object Type Accepted
  • 1415/cpukit - Semaphore obtain with invalid priority ceiling
  • 1421/filesystem - Backport ftruncate support for devices so fopen(device, "w") works
  • 1482/cpukit - POSIX timer_settime has path which does not exit dispatching critical section

Issues Without Problems Report Numbers

  • mips/jmr3904 - runtest improvements
  • In Classic API User's Guide Remove reference that realloc() is implemented in terms of Region Manager. No longer true after 4.7

Release 4.8.1 Changes

This release is the second in the 4.8 series and was cut on 13 August 2008.

Significant changes between 4.8.0 and 4.8.1 include the following:

NOTE: There is no current plan to upgrade the gcc version on the 4.8 branch from 4.2.x to 4.3.x but we are backporting any minor changes needed so this is an option.

Issues With Problems Report Numbers

  • PR741 - Add dummy network configuration table for autoconf probes
  • PR1192 - libblock: Update the disktap pointer after the realloc.
  • PR1212 - Correctly enabled timeslicing when done by calling task. Adds sp44.
  • PR1237 - SPARC port specific modifications to avoid overflowing interrupted task stack under high load
  • PR1257 - Various BSPs: Use rtems_interrupt_disable and enable instead of directly using _CPU_ISR_Enable and _CPU_ISR_Disable. Ensures proper compiler memory barrier usage.
  • PR1263 - User's Guide Partition: Improve discussion of alignment and minimum buffer sizes.
  • PR1265 - objectbyindex.c and prototype - rename parameter so including rtems.h and string.h in user code does not give warning.
  • PR1277 - i386 in_cksum macro had incorrect assembly constraints
  • PR1278 - SPARC/cpu.c - Fix incorrect bit manipulation on returning old address of raw trap handler.
  • PR1282 - librtems++ Interrupt class has confusion over vec and vector variable names
  • PR1280 - shttpd modified to avoid gcc 4.2.x coldfire bug fix in 4.3.
  • PR1284 - Memory corruption in NFS if server connectivity is lost
  • PR1285 - remove obsolete rtems_configuration_get_maximum_devices()
  • PR1288 - Services Allowed From ISR updated
  • PR1291 - POSIX Blocking Calls with Timeouts as Absolute Times. There was confusion over absolute versus relative time used as timeout values for some blocking POSIX services. When correctly implemented as absolute time, some services could calculate a time as 0 ticks into the future and block the caller forever. The impacted services are:
    • pthread_cond_timedwait - could block forever
    • mq_timedreceive - used relative not absolute time
    • mq_timedsend - used relative not absolute time
    • pthread_mutex_timedlock - used relative not absolute time
    • pthread_rwlock_timedrdlock- used relative not absolute time
    • pthread_rwlock_timedwrlock- used relative not absolute time
    • sem_timedwait - could block forever
  • PR1293 - PSX10 should avoid using -1 for tv_nsec value
  • PR1294 - Correct prototype and usage of sparc_disable_interrupts

Issues Without Problems Report Numbers

  • Many BSP linkcmds were changed to say .gcc_except_table* instead of .gcc_except_table. This is needed to be able to link programs compiled with gcc 4.3.x.
  • find command modified to work on MacOS X. See the thread which starts at for details.
  • Fix typo in comment in cpukit/score/include/rtems/system.h
  • SPARC/LEON2 BSP now supports nanoseconds time granularity
  • SPARC/LEON3 BSP now supports nanoseconds time granularity
  • User's Guide corrections
    • CONFIGURE_MAXIMUM_TASKS defaults to 0 not 10.
    • Use ensure not insure.
    • Make it clear that a user does not have to calculate the memory needed for the RTEMS Workspace. confdefs.h does this.
    • Emphasize RTEMS is s library and that by defaults code that is not used is not linked into an application.
    • Fixed minor mistakes on rtems_io_unregister_driver.

Release 4.8.0 Changes

This release is the first in the 4.8 series and was cut on 14 February 2008.

Last modified on 12/29/15 at 20:36:59 Last modified on 12/29/15 20:36:59