Records in reverse chronological order.
os_thread_kill() wrapper to thread::kill()_fini()_LITE_EXIT redefinitionfile_descriptors_manager::used() to tell how many file descriptors are usedtimegm(), as the opposite of gmtime()statvfs()/fstatvfs()tcdrain()/tcflush()/tcgetattr()/tcsendbreak()/ tcgetattr() to POSIX aliases__ARM_FP instead of __VFP_FP__puts() accepts empty stringupdate_for_slept_time()tests -> testOS_INCLUDE_RTOS_CUSTOM_THREAD_USER_STORAGEos_startup_initialize_hardware()startup.c -> startup.cpp to be able to call C++ code, like the code to initialise the main stackOS_USE_RTOS_PORT_SYSTICK_CLOCK_SLEEP_FOR -> OS_USE_RTOS_PORT_CLOCK_SYSTICK_WAIT_FOROS_USE_RTOS_PORT_REALTIME_CLOCK_SLEEP_FOR -> OS_USE_RTOS_PORT_CLOCK_REALTIME_WAIT_FORos_rtos_idle_actions ()cmsis-plus/drivers -> cmsis-plus/driver (singular)assert_failed() (used by STM HAL)os_rtos_idle_enter_power_saving_mode_hook()cmsis-plus/iso -> cmsis-plus/estdfirst-fit-top for variable size allocationslifo for one-time allocationsnull to completely disable dynamic allocationsos_startup_initialize_free_store() to initialise the application free storeOS_INTEGER_RTOS_DYNAMIC_MEMORY_SIZE_BYTES is defined, optionally initialise a separate RTOS system allocation area and class specific pools_sbrk() to acknowledge all available RAM is usedmalloc & C++ new/delete to be thread safe and use the memory resource managernull_resourcemalloc_resourceestd::pmr namespaceestd::malloc() is no longer needed and was removed, the standard malloc() is now thread safememory_resource_create -> _construct, _destroy -> _destruct (add compatibility macros for the old names)new/delete operators to class object_named_system, and use it as base for all system objectsrtos::make_shared<> to use the system allocator (experimental, to be further refined with thread safe)thread::stack class; initialise interrupts stack with pattern and check the bottom marker in the idle threados_irq_get_stack() to the C APIos_terminate_goodbye() to display memory usage statisticsos_initialize_args() -> os_startup_initialize_args()os_initialize_hardware_early() -> os_startup_initialize_hardware_early()os_initialize_hardware() -> os_startup_initialize_hardware()os_terminate() as a portable function to terminate the application (implemented as reset on Cortex-M)block_pool class to manage pools of memory blocksblock_pool_typed_allocated and block_pool_typed_inclusive templatesfirst_fit_top_allocated and first_fit_top_inclusive templateslifo_allocated and lifo_inclusive templatesos_startup_create_thread_idle() as weakOS_INTEGER_RTOS_ALLOC_MUTEX_POOL_SIZE and similar, to create pools of storage for system objectsthread_static<> -> thread_inclusive<>memory_pool_static<> -> memory_pool_inclusive<>message_queue_static<> -> message_queue_inclusive<>Experience proved that one of the above changes was trickier than planned: the rename of the os_startup_initialize_hardware(), since without the renamed function the linker used the weak version of this function. To help developers, the weak definition was temporarily disabled, so if this function was not yet renamed in the application, the linker will complain.
internal::named_object -> internal::object_namedclocked_attributes -> internal::attribute_clockedAllocator -> allocator_typethread::priority_inherited(), thread::priority_inherited(int)thread::priority() publicinternal_OS_TRACE_RTOS_LISTS_CLOCKSlock(), unlock(), locked(state_t)os_irq_status_t -> os_irq_state_tinterrupts::status_t -> interrupts::state_tclear() no longer accept 0 mask; use flags::alltype(), protocol(), robustness()class double_list_iterator; use it in waiting_threads_listtimer::periodic_attributes -> timer::attributes_periodicinternal::event_flags; not public.recursive_attributes -> attributes_recursiverecursive_initializer -> initializer_recursivenormal_initializer -> initializer_normalos_mutex_attr_init_recursive() -> os_mutex_attr_recursive_init()scheduler::preemptive() & scheduler::preemptive(bool)OS_BOOL_RTOS_SCHEDULER_PREEMPTIVEos_sched_is_preemptive() & os_sched_set_preemptive().os_clock_get_hrclock()inactive, os_thread_state_inactivesched_prio() -> priority()os_thread_get_priority(), os_thread_set_priority()thread::sched_state() -> state()os_thread_get_state().thread::flags_try_wait() spellingsemaphore_binary and semaphore_counting)binary_attributesinitial_value to os_semaphore_attr_binary_init() and os_semaphore_binary_create()attributes_binary, attributes_counting, initializer_binarywaiting renamed suspendedos_thread_stack_get_bottom(), os_thread_stack_get_top(), os_thread_stack_check_bottom_magic(), os_thread_stack_check_top_magic() addedos_thread_stack_element_t and os_thread_stack_allocation_element_t added to C APIflags_clear(), flags_get() moved from thread to this_threadFirst fully functional reference implementation. The C and C++ APIs were completely refurbished and use all lower case letters.
Changes, in reverse chronological order:
OS_USE_SEMIHOSTING_SYSCALLSOS_EXCLUDE_RTOS_IDLE_SLEEP<cmsis-plus/os-app-config.h>new_delete_allocatoros_