Since nuttx commit 5a209a853e ("sched/wqueue: restore -ENOENT from
work_cancel() for unqueued work") work_cancel() and work_cancel_wq()
return -ENOENT when the work is not queued. The tester thread queues
work with zero delay, so the worker may already have consumed it by the
time it is cancelled and the ASSERT(ret == OK) fires;
Accept -ENOENT there and expect it when cancelling idle work in
the API validation test.
Signed-off-by: raiden00pl <raiden00@railab.me>
Add a focused wqueue entry that exercises predefined and dynamically
created work queues without changing the no-argument ostest flow.
Share the semaphore wait and basic worker helpers across configurations.
Flat builds exercise scheduler queues, Protected builds exercise USRWORK,
and pthread-enabled builds additionally cover configurable custom worker
pools. When pthread support is disabled, only predefined USRWORK cases are
compiled.
Cover invalid arguments, priority lookup, immediate and delayed work,
pending replacement and cancellation, periodic requeue, synchronous and
parallel cancellation, concurrent queues, callback self-destruction, and
queue teardown.
Assisted-by: Codex:GPT-5
Signed-off-by: DuoYuWang <thirteenking.wang@gmail.com>
Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
The test consists of two parts:
- A tester that tries to trigger wrong states of work queue
- A verifier that checks whether the wqueue is still working properly
The tester is trying to queue and cancel work several times with
priority lower/same/higher than the work queue.
Most wrong cases are likely to happen with high priority like:
- If `cancel` never decreases semcount, the count may keep growing
and finally overflow
- If `cancel` is decreasing semcount too much, the `work_thread` may
be waken up less times than expected
The lower/same priority testers are just added for covering other
unexpected situations.
The verifier is trying to queue some works and check they are called as
expected:
- Frist queue a 'sleep' worker, to let a work queue thread be in busy
status and not waiting on sem, while other work queue thread(s) (if
any) still waiting for sem. If sem is in wrong state, it may cause
wrong behavior in either thread waiting/not waiting on the sem.
- Then queue a few count works, if the work queue(s) are still working
properly, these works should finally be all called once.
Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>