Changelog

Version History

Software Version History

Software Version

Revision

Date

Notes

1.2.1

4

Oct 10, 2026

Changed:

Fixed:

  • a priority change after an earlier lowering takes effect and is reported by pthread_getschedparam()

  • a mutex owner boosted by priority inheritance returns to its own priority on unlock, also after nested boosts, and the unlock yields to a higher-priority ready thread

  • pthread_setschedprio() and pthread_setschedparam() at a thread’s own priority keep an active priority-inheritance boost

  • a thread releasing its last mutex a second time keeps its priority instead of dropping to 0

  • a priority change of a waiting thread, of a timed-out thread that has not run yet or from a timer callback takes effect without corrupting the wait

  • a round-robin time slice is armed at dispatch and refilled after a timed wait

  • a wake-up or timeout in the pass that parks a thread returns the correct result, and a retried call keeps the thread’s saved FPU registers intact

  • ARMv8-M MPU: an interrupt arriving during a context switch no longer raises a spurious memory management fault

  • ARMv8-M MPU regions honour the requested shareability, and invalid permissions return EINVAL

  • pthread_cancel() works from a deferred function or timer callback on MPU builds

  • ARMv8-M stack limits are cleared when checking is off, loaded from the right address on Baseline Secure and kept inside the thread’s stack

  • qrt_systimer_configure() writes the timer interrupt’s priority to the right address on ARMv6-M and ARMv8-M Baseline

1.2.0

3

Sep 16, 2026

New:

  • cycle-accurate worst-case execution time (WCET) profiling (QRT_CFG_PERF_ENABLE) and the Profiling chapter

  • the Memory Footprint chapter

  • constant-time O(1) scheduler and kernel services

  • bounded-time kernel heap allocation

  • priority-ordered message queues

  • per-system-call configuration switches

  • boot console and banner showing the version and release date

  • pthread_setfpcontext_np()

  • SEM_VALUE_MAX

Changed:

  • kernel objects are allocated from the kernel heap, so QRT_CFG_MUTEX_LIST_SIZE, QRT_CFG_MESSAGE_QUEUE_LIMIT, QRT_CFG_MESSAGE_QUEUE_NAME_LIMIT and QRT_CFG_TIMER_LIMIT are removed

  • qrt_fpu_ctxenable() and qrt_fpu_ctxdisable() are replaced by pthread_setfpcontext_np()

  • qrt_systimer_getmonotonic() takes a signed 64-bit count

  • kernel linker sections .text2/.data2/.bss2 are renamed .qrt_text/.qrt_data/.qrt_bss (update custom linker scripts)

  • a system call whose configuration switch is absent from qrt_cfg.h is compiled out and reports ENOSYS, so start from the shipped qrt_cfg.h when upgrading

  • evaluation build limits count live objects

Fixed:

  • timed pthread waits return ETIMEDOUT instead of -1

  • nanosleep() intervals no longer truncated to 32 bits

  • scheduling policy from thread attributes honoured at creation

  • opaque POSIX types sized correctly

  • pthread_attr_t sized correctly on MPU-enabled builds

  • MPU region alignment, ARMv7-M memory attribute encoding and thread stack alignment

  • errno access from unprivileged threads

  • monotonic clock reads during a pending timer expiry

  • 8-byte stack alignment in exception handlers

  • demo linker script loads kernel data from flash (warm-reset HardFault)

1.1.1

2

May 9, 2026

Added pthread thread-local storage (pthread_key) and pthread_once()

1.1.0

1

Mar 5, 2026

Added POSIX user-space APIs

1.0.0

0

May 24, 2025

Initial release