aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/src
Commit message (Collapse)AuthorAgeFilesLines
* Work around xtensa deadlock, take 2Dániel Buga2023-05-131-12/+20
|
* Executor: Replace unnecessary atomics in runqueueGrant Miller2023-04-131-9/+16
|
* re-export main_riscv macro as main for riscv arch.Roy Buitenhuis2023-04-111-0/+3
|
* executor: Replace unsound critical sections with atomicsGrant Miller2023-04-052-21/+25
|
* executor: add Pender, rework Cargo features.Dario Nieuwenhuis2023-04-037-356/+602
| | | | | | | | | This introduces a `Pender` struct with enum cases for thread-mode, interrupt-mode and custom callback executors. This avoids calls through function pointers when using only the thread or interrupt executors. Faster, and friendlier to `cargo-call-stack`. `embassy-executor` now has `arch-xxx` Cargo features to select the arch and to enable the builtin executors (thread and interrupt).
* executor: unify export mod.Dario Nieuwenhuis2023-04-031-8/+4
|
* executor,sync: add support for turbo-wakers.Dario Nieuwenhuis2023-03-302-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | This is a `core` patch to make wakers 1 word (the task pointer) instead of 2 (task pointer + vtable). It allows having the "waker optimization" we had a while back on `WakerRegistration/AtomicWaker`, but EVERYWHERE, without patching all crates. Advantages: - Less memory usage. - Faster. - `AtomicWaker` can actually use atomics to load/store the waker, No critical section needed. - No `dyn` call, which means `cargo-call-stack` can now see through wakes. Disadvantages: - You have to patch `core`... - Breaks all executors and other things that create wakers, unless they opt in to using the new `from_ptr` API. How to use: - Run this shell script to patch `core`. https://gist.github.com/Dirbaio/c67da7cf318515181539122c9d32b395 - Enable `build-std` - Enable `build-std-features = core/turbowakers` - Enable feature `turbowakers` in `embassy-executor`, `embassy-sync`. - Make sure you have no other crate creating wakers other than `embassy-executor`. These will panic at runtime. Note that the patched `core` is equivalent to the unpached one when the `turbowakers` feature is not enabled, so it should be fine to leave it there.
* executor: Use AtomicPtr for signal_ctx, removes 1 unsafe.Dario Nieuwenhuis2023-03-271-6/+4
|
* executor: deduplicate doc comments.Dario Nieuwenhuis2023-03-271-24/+1
|
* executor: Allow TaskStorage to auto-implement `Sync`Grant Miller2023-03-204-57/+154
|
* Make `poll_fn` lazily initialized againGrant Miller2023-01-311-3/+5
|
* Add internal `AvailableTask` typeGrant Miller2023-01-311-28/+40
|
* Replace the pointer in `TaskHeader` with an `Option<&Executor>`Grant Miller2023-01-312-11/+11
|
* Set `poll_fn` in `TaskStorage::new`Grant Miller2023-01-312-27/+14
|
* Make `wake_task` safeGrant Miller2023-01-291-9/+7
|
* executor: Replace `NonNull<TaskHeader>` with `TaskRef`Grant Miller2023-01-295-57/+76
|
* Remove unnecessary use of atomic-polyfill.Dario Nieuwenhuis2022-12-232-4/+2
| | | | Only use it when CAS is actually needed.
* Merge #1071bors[bot]2022-11-231-1/+9
|\ | | | | | | | | | | | | | | 1071: refactor: autodetect macro variant r=Dirbaio a=lulf Apply heuristics using target_arch, target_os and target_family to determine which variant of the entry point to use. Co-authored-by: Ulf Lilleengen <[email protected]>
| * refactor: autodetect macro variantUlf Lilleengen2022-11-231-1/+9
| | | | | | | | | | Export all main macro per target architecture from embassy-macros, and select the appropriate macro in embassy-executor.
* | fix: revert race condition introduced for riscvUlf Lilleengen2022-11-231-5/+13
|/
* restore SIGNAL_WORK_THREAD_MODESijmen Woutersen2022-11-121-1/+6
|
* riscv supportSijmen Woutersen2022-11-101-14/+1
|
* Remove the _embassy_time_schedule_wake magicivmarkov2022-10-261-6/+13
|
* Change time Driver contract to never fire the alarm synchronouslyivmarkov2022-10-241-32/+40
|
* Replace futures::future::poll_fn -> core::future::poll_fn.Dario Nieuwenhuis2022-09-221-2/+1
|
* Remove warningsUlf Lilleengen2022-08-221-2/+2
|
* Remove Forever, switch to static_cell.Dario Nieuwenhuis2022-08-226-5/+11
|
* Merge branch 'master' of https://github.com/embassy-rs/embassy into rtos-traceQuentin Smith2022-08-1922-1275/+61
|\
| * Split embassy-time from embassy-executor.Dario Nieuwenhuis2022-08-1822-1276/+57
| |
* | Add separate feature flag to enable interrupt tracingQuentin Smith2022-08-161-6/+6
| |
* | cargo fmtQuentin Smith2022-08-102-2/+1
| |
* | Add support for rtos-trace behind a feature flagQuentin Smith2022-08-102-0/+56
|/
* executor: miri fixesDario Nieuwenhuis2022-08-013-32/+26
|
* Split embassy crate into embassy-executor, embassy-util.Dario Nieuwenhuis2022-07-2922-0/+2735