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 |