From 35a82194b0f5a947bf3b55607d18458722041330 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 4 May 2020 16:48:16 +0200 Subject: Update rtems-notes-5.txt --- rtems-notes-5.txt | 236 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 209 insertions(+), 27 deletions(-) diff --git a/rtems-notes-5.txt b/rtems-notes-5.txt index 3d319b1..3e8b779 100644 --- a/rtems-notes-5.txt +++ b/rtems-notes-5.txt @@ -8,68 +8,179 @@ the implementation of those API routines. Public API changes usually fall into one of the following categories: * Addition of new methods + * Modifications to prototypes + * Deletion of obsoleted methods Implementation improvements usually fall into one of the following categories: * Algorithm improvements in execution time or memory usage + * Critical section reduction ### API Changes +* The header file no longer includes and . + * Most services use now statically allocated resources and no longer need accounting in the application configuration. + * The work area initialization (RTEMS Work Space and C Program Heap) changed. BSPs must provide now a `_Memory_Get()` function. + * POSIX timers and signals are now the only POSIX resources which are enabled by the POSIX API. #### API Additions * Support for recording of high-frequency events in particular on SMP systems + * Support for thread pinning (enables support for Epoch Based Reclamation; used by libbsd) + * Termios supports now generation of signals. + * New fatal sources: + * `RTEMS_FATAL_SOURCE_EXCEPTION` + * `RTEMS_FATAL_SOURCE_PANIC` + * `RTEMS_FATAL_SOURCE_SMP` + * `RTEMS_FATAL_SOURCE_INVALID_HEAP_FREE` + * `RTEMS_FATAL_SOURCE_HEAP` +* New chain API function: rtems_chain_get_first_unprotected() + +* Add user defined thread names: pthread_setname_np() and pthread_getname_np() + +* Support for xz compression/decompression + +* Added rtems_scheduler_ident_by_processor() + +* Added rtems_scheduler_ident_by_processor_set() + +* Added RTEMS_PREDICT_TRUE() and RTEMS_PREDICT_FALSE() for static branch prediction hints + +* Added rtems_malloc() and rtems_calloc() + +* Added rtems_scheduler_get_maximum_priority() + +* Added rtems_scheduler_get_processor() + +* Added rtems_scheduler_get_processor_maximum() + #### API Implementation Improvements -* TBD +* Priority inheritance is now transitive. + +* POSIX key destructors are now called during thread restart. + +* More robust thread dispatching on SMP and ARM Cortex-M #### API Deprecations * `rtems_iterate_over_all_threads()`. Use `rtems_task_iterate()` instead. +* `rtems_get_current_processor()`. Use `rtems_scheduler_get_processor()` instead. + +* `rtems_get_processor_count()`. Use `rtems_scheduler_get_processor_maximum()` instead. + +* proc_ptr + +* rtems_context + +* rtems_context_fp + +* region_information_block + +* rtems_thread_cpu_usage_t + +* rtems_rate_monotonic_period_time_t + #### API Removals * `rtems_clock_get()` +* API defined by + +* Task notepads + +* Task variables + +### SMP Support Improvements + +* Reimplemenation of the Multiprocessor Resource Sharing Protocol (MrsP) to + address performance issues. + +* Implementation of the O(m) Independence-Preserving Protocol (OMIP). + +* The default SMP scheduler supports now EDF scheduling, one-to-one and + one-to-all thread to processor affinities, and thread pinning. + +* Timers (watchdogs) use now per-processor data structures. + +* Improved POSIX key to value look up. + +* The Ada runtime supports now SMP configurations. + ### Configuration Changes * All configuration options are now documented. + * Most resources are now statically allocated and no longer use the workspace. + * New configuration options: - * `CONFIGURE_DIRTY_MEMORY` - * `CONFIGURE_RECORD_EXTENSIONS_ENABLED` - * `CONFIGURE_RECORD_FATAL_DUMP_BASE64` - * `CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB` - * `CONFIGURE_RECORD_PER_PROCESSOR_ITEMS` - * `CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION` + + * `CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE` + + * `CONFIGURE_DIRTY_MEMORY` + + * `CONFIGURE_RECORD_EXTENSIONS_ENABLED` + + * `CONFIGURE_RECORD_FATAL_DUMP_BASE64` + + * `CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB` + + * `CONFIGURE_RECORD_PER_PROCESSOR_ITEMS` + + * `CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION` + + * `CONFIGURE_IMFS_ENABLE_MKFIFO` + +* Renamed configuration options: + + * `CONFIGURE_SMP_MAXIMUM_PROCESSORS` to `CONFIGURE_MAXIMUM_PROCESSORS` + + * `CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS` to `CONFIGURE_MAXIMUM_FILE_DESCRIPTORS` + * Removed configuration options: - * `CONFIGURE_HAS_OWN_CONFIGURATION_TABLE` - * `CONFIGURE_HAS_OWN_BDBUF_TABLE` - * `CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE` - * `CONFIGURE_HAS_OWN_FILESYSTEM_TABLE` - * `CONFIGURE_HAS_OWN_INIT_TABLE` - * `CONFIGURE_HAS_OWN_MOUNT_TABLE` - * `CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE` - * `CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE` + + * `CONFIGURE_SMP_APPLICATION` + + * `CONFIGURE_HAS_OWN_CONFIGURATION_TABLE` + + * `CONFIGURE_HAS_OWN_BDBUF_TABLE` + + * `CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE` + + * `CONFIGURE_HAS_OWN_FILESYSTEM_TABLE` + + * `CONFIGURE_HAS_OWN_INIT_TABLE` + + * `CONFIGURE_HAS_OWN_MOUNT_TABLE` + + * `CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE` + + * `CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE` + + * `CONFIGURE_DISABLE_SMP_CONFIGURATION` + + * `CONFIGURE_MAXIMUM_DEVICES` + * The helper macro for the clustered scheduler configuration `RTEMS_SCHEDULER_EDF_SMP()` has now only one parameter. @@ -83,6 +194,9 @@ The following improvements were made to the RTEMS Shell: ## General +* The system initialization is now performed by system initialization handlers + registered in a special linker set (similar to global constructors in C++). + * API header files have been collected from the various locations in the RTEMS source tree and placed under `cputkit/include` and for BSPs under `bsps/include`. There is no header pre-install phase when building RTEMS. @@ -103,30 +217,98 @@ The following improvements were made to the RTEMS Shell: support. Currently the supported architectures are i386 and ARM. The ARM support is experimental. +* Most BSP use now function and data sections to support the linker garbage + collection. + * This is the last release of RTEMS with the `autoconf`/`automake` build system. RTEMS will be moving to a `waf` based build system driven from YAML specifications files. The effort is part of the on-going wotk in the RTEMS project to support qualification of the operating system. +## Architectures + +Removed obsolete architectures: + +* AVR + +* H8300 + +* M32C + +* M32R + +Obsoleted architectures: + +* Epiphany + ## BSPs and Device Drivers * General - * BSP source code moved from `c/src/lib/libbsp` to `bsps` in the - source tree. The configure and some other related pieces are still - held in the original path. + + * BSP source code moved from `c/src/lib/libbsp` to `bsps` in the + source tree. The configure and some other related pieces are still held in + the original path. + * New BSPs - * BSPs for ARM - * `atsamv` - Microchip (former Atmel) SAM V71 series - * `xilinx-zynqmp` - Xilinx Zynq UltraScale+ MPSoC platform - * BSPs for RISC-V - * `riscv` - Family of generic BSPs - * `griscv` - BSP based on the GRLIB + + * BSPs for ARM + + * `atsamv` - Microchip (former Atmel) SAM V71 series + + * `xilinx-zynqmp` - Xilinx Zynq UltraScale+ MPSoC platform + + * BSPs for RISC-V + + * `riscv` - Family of generic BSPs + + * `griscv` - BSP based on the GRLIB + * Significant updates to existing BSPs - * `powerpc/qoriq`: 64-bit support + + * `powerpc/qoriq`: 64-bit support + * Removal of obsoleted BSPs - * `gdbarmsim` + + * `arm/gdbarmsim` + + * `arm/nds` + + * `arm/gp32` + + * `arm/ep1a` + + * `arm/score603e` + + * `m68k/idp` + +* Obsoleted BSPs + + * powerpc/mbx8xx + + * m68k/gen68302 + + * m68k/ods68302 + * Drivers - * Drivers for `getentropy()` + + * Drivers for `getentropy()` + + * New I2C device driver framework supporting the Linux user-space API + + * New SPI device driver framework supporting the Linux user-space API + +## Newlib Changes + +* time_t is now 64-bit to adress the year 2038 problem. + +* General improvements in the feature test macros support. + +* Newlib internal locks are now supported, e.g. for FILE objects. + +* The standard input, output, and error FILE objects are now global and no + longer thread-specific. + +* Added support for C++17 std::aligned_alloc ## Ecosystem -- cgit v1.2.3