#async #os

no-std lilos-list

Allocation-free intrusive doubly-linked wait queues for lilos

1 unstable release

0.1.0 May 4, 2024

#1978 in Embedded development


Used in 5 crates (3 directly)

MPL-2.0 license

35KB
504 lines

Allocation-free doubly-linked intrusive lists

This is the list type used to implement timer lists and wait queues in lilos. It takes an unusual approach to implementing a sound doubly-linked intrusive list in Rust without allocation, which is otherwise quite difficult: it presents a different API that's easier to make sound.

This data structure can be built for any platform, and has tests that can run both hosted and under Miri (to check for pointer abuses).

See the rustdoc for more details.

Versioning

It's not important for applications or custom synchronization primitives to use exactly the same version of lilos-list as lilos does internally. Having multiple versions linked into a single binary will work fine. (However, it will take somewhat less space in flash if you can arrange to use the same version.)

lilos-list is versioned separately from the OS API and will likely go through major versions faster than the rest of the OS.

Dependencies

~325–800KB
~18K SLoC