142 Commits

Author SHA1 Message Date
James Munns
b7e1b1ca94 Fix some intra-doc links 2025-04-03 10:35:00 +02:00
James Munns
ef3c1b87d1 Minor docs improvements 2025-04-01 14:35:21 +02:00
James Munns
2e474b7df2 Remove notes about stability 2025-04-01 14:30:36 +02:00
James Munns
3e25a7be86 Small grammar fixes 2025-04-01 14:27:32 +02:00
James Munns
c3efb85b85 Fix task_end callback 2025-04-01 14:23:39 +02:00
James Munns
8a8e450053 Reorder doc comments for format reasons 2025-04-01 14:12:58 +02:00
James Munns
84cd416bed Finish trailing sentence 2025-04-01 14:11:42 +02:00
James Munns
882e2180a4 Add docs, add task_end trace point 2025-04-01 14:06:04 +02:00
Matthew Tran
034e9fc218 Move macro helper functions to embassy-executor 2025-03-29 03:52:00 -05:00
Dario Nieuwenhuis
695a6da322 Statically allocate task pools on stable Rust.
Thanks @0e4ef622 for the awesome idea of how to do it and the first implementation.

Co-Authored-By: Matthew Tran <0e4ef622@gmail.com>
2025-03-28 19:11:53 +01:00
Murmele
e3b0581a87
Fix comment 2025-03-17 11:04:04 +01:00
Martin Marmsoler
edadc28f02 Add possibility to get the id of a task to be able to use it with rtos-trace
Files: spawner.rs
2025-03-14 19:08:50 +01:00
James Sizeland
c1671572b4
improve SpawnError::Busy message 2025-02-03 23:08:55 +00:00
Dániel Buga
44217aa092
Desugar some async fns 2024-12-30 12:13:13 +01:00
wackazong
4c7e1b05a0
Impl core::err::Error for SpawnError 2024-12-23 08:18:18 +01:00
Dániel Buga
76d8a896bb
Make poll_to_despawn a no_op 2024-12-17 18:51:22 +01:00
Dániel Buga
2ca374fc9c
Don't force a wake to despawn 2024-12-17 18:47:56 +01:00
Dániel Buga
a011f48769
Make poll_to_despawn non-generic 2024-12-17 18:37:17 +01:00
Dániel Buga
7d5fbe26c9
Update state diagram 2024-12-17 18:17:36 +01:00
Dániel Buga
8fd08b1e97
Swap poll_fn to allow polling exited tasks 2024-12-17 18:07:06 +01:00
Dániel Buga
edb8f21a74
Take critical section instead of unsafe 2024-12-17 17:53:12 +01:00
Dániel Buga
889b419fc4
Simplify ARM run_enqueue 2024-12-17 17:15:40 +01:00
Dániel Buga
c6ca46c825
Set RUN_QUEUED unconditionally 2024-12-17 16:52:13 +01:00
Dániel Buga
7eac184af0
Document task states and state transitions 2024-12-17 16:47:33 +01:00
Dario Nieuwenhuis
c504ae8d3a
Merge pull request #3656 from bugadani/timer-queue-special
Remove special handling of integrated timer queues and items
2024-12-17 14:52:12 +01:00
Dario Nieuwenhuis
fc25fca00b Remove WakerHack for good.
Now that 1.83 xtensa is out, we can remove it unconditionally.
2024-12-17 13:06:31 +01:00
Dániel Buga
c90d048ecb
Remove TIMER_QUEUED 2024-12-16 20:37:02 +01:00
Dániel Buga
fbd0fe06bd
Remove special handling of integrated timer items 2024-12-16 20:37:01 +01:00
Dániel Buga
c9f32b7e36
Attach payload to TimerQueueItem 2024-12-16 20:36:59 +01:00
Dániel Buga
3c121e5425
Remove special handling of integrated timer queue 2024-12-16 19:22:22 +01:00
Dániel Buga
b47a631abf
Rely on atomic load-store on all targets 2024-12-16 17:29:07 +01:00
Dániel Buga
b44ef5ccb4
Fix racy access of TaskHeader::executor 2024-12-16 16:01:08 +01:00
Dániel Buga
f389ba3721
Only lock once to wake a task 2024-12-16 15:28:19 +01:00
Dániel Buga
a10290b28e
Zero-inizialize expires_at 2024-12-16 09:15:15 +01:00
Dániel Buga
e861344b17
Fix comments and tweak task exit 2024-12-15 18:50:00 +01:00
Dániel Buga
5c4983236c
Make sure an exited task does not get stuck in a timer queue 2024-12-15 18:50:00 +01:00
Dario Nieuwenhuis
2f2e2c6031
Make integrated-timers the default, remove Cargo feature. 2024-12-15 18:49:57 +01:00
Dániel Buga
ec96395d08
Prevent task from respawning while in the timer queue 2024-12-13 21:20:57 +01:00
Dániel Buga
d45ea43892
Move integrated timer queue into time-queue-driver 2024-12-12 15:38:52 +01:00
Dániel Buga
dc18ee29a0
Do not access task header 2024-12-10 21:31:42 +01:00
Dániel Buga
12f58fbcfd
Remove TIMER_QUEUED state 2024-12-10 21:31:42 +01:00
Dániel Buga
5a5495aac4
Refactor integrated-timers 2024-12-10 21:31:42 +01:00
Ulf Lilleengen
f0be2fdce4 Extend tracing api to support executor id and end task
Allow applications to provide a trace implementation that only needs to
implement APIs used by the embassy executor, and provide more context in
the event of multiple executors being used.
2024-12-09 15:16:03 +01:00
Dániel Buga
8ebe059ecb
Add initialize 2024-11-19 16:25:17 +01:00
Dániel Buga
ff02ee1a22
Only set callback once 2024-11-19 14:42:41 +01:00
Dario Nieuwenhuis
853c5c567a executor: compare vtable addr instead of contents.
Saves a whopping 44 bytes of text, yay.
2024-11-12 16:30:46 +01:00
Dario Nieuwenhuis
baeb59b5b8
executor: use WakerHack unconditionally even if nightly feature is enabled. (#3528)
This ensures the executor compiles with all recent nightly versions,
including the stable-but-with-nightly-features-enabled xtensa rustc.
2024-11-12 16:28:26 +01:00
Dániel Buga
1e850ae791
Detect and allow older nightlies 2024-11-06 10:48:59 +01:00
Dummyc0m
9e6e09a8d7 executor/spin: introduce an architecture agnostic executor
Spin polls the raw executor and never sleeps. It is useful for disabling
any power features associated with wfi/wfe-like instructions.

When implementing support for the CH32V30x MCU, the wfi instruction
had issues interacting with the USB OTG peripheral and appeared to be
non-spec-compliant.

1. When sending a USB Data-in packet, the USB peripheral appears to be
unable to read the system main memory while in WFI. This manifests in
the USB peripheral sending all or partially zeroed DATA packets.
Disabling WFI works around this issue.

2. The WFI instruction does not wake up the processor when MIE is
disabled. The MCU provides a WFITOWFE bit to emulate the WFE instruction
on arm, which, when enabled, ignores the MIE and allows the processor to
wake up. This works around the non-compliant WFI implementation.

Co-authored-by: Codetector <codetector@codetector.org>
Co-authored-by: Dummyc0m <y@types.moe>
2024-10-06 23:33:34 -07:00
Oleksandr Babak
1443f3386b
fix: remove stable nightly feature 2024-09-06 11:34:30 +02:00