nuttx/sched/mqueue
Marco Casaroli 7e5cf3d5d0
Some checks are pending
MemBrowse Memory Report / changes-filter (push) Waiting to run
MemBrowse Memory Report / load-targets (push) Waiting to run
MemBrowse Memory Report / identical (push) Blocked by required conditions
MemBrowse Memory Report / analyze (push) Blocked by required conditions
sched: Skip wd_cancel() on wakeup when the waiter set no timeout.
A task woken from a semaphore, a signal wait, a message queue or an event
wait gets its timeout watchdog cancelled, but most waiters set none, and
wd_cancel() then only takes the critical section to find that out.

Check WDOG_ISACTIVE() first at these call sites.  Each already holds the
critical section, so wd_expiration() cannot be running the watchdog on
another CPU and the check is exact on SMP too.  wd_cancel() itself keeps
its locked check.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-10-05 20:17:02 +08:00
..
CMakeLists.txt
Make.defs
mq_getattr.c
mq_initialize.c
mq_msgfree.c
mq_msgqalloc.c
mq_msgqfree.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
mq_notify.c libc, sched: Resolve FDPIC descriptors at module callback entry points. 2026-09-25 10:46:48 -03:00
mq_rcvinternal.c sched: Skip wd_cancel() on wakeup when the waiter set no timeout. 2026-10-05 20:17:02 +08:00
mq_receive.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
mq_recover.c
mq_send.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
mq_setattr.c
mq_sndinternal.c sched: Skip wd_cancel() on wakeup when the waiter set no timeout. 2026-10-05 20:17:02 +08:00
mq_waitirq.c
mqueue.h !sys/types.h: change time_t and clock_t to int64_t to align with other OSes 2026-05-19 16:21:28 +08:00
msg.h
msgctl.c
msgget.c
msginternal.c
msgrcv.c
msgsnd.c