summaryrefslogtreecommitdiff
path: root/tools/u_boot_pylib/test_util.py
diff options
context:
space:
mode:
authorJerome Forissier <jerome.forissier@linaro.org>2025-04-18 16:09:34 +0200
committerTom Rini <trini@konsulko.com>2025-04-23 13:19:44 -0600
commitf9384796179abcc7e5796815c79b2137f5f83b12 (patch)
tree2254c00b727719c904ffdbd9cc9ca0fbcaa066fa /tools/u_boot_pylib/test_util.py
parentb989f9ed9fe13be2cb168d2d45c235f011104f38 (diff)
uthread: add cooperative multi-tasking interface
Add a new internal API called uthread (Kconfig symbol: UTHREAD) which provides cooperative multi-tasking. The goal is to be able to improve the performance of some parts of U-Boot by overlapping lengthy operations, and also implement background jobs in the U-Boot shell. Each uthread has its own stack allocated on the heap. The default stack size is defined by the UTHREAD_STACK_SIZE symbol and is used when uthread_create() receives zero for the stack_sz argument. The implementation is based on context-switching via initjmp()/setjmp()/ longjmp() and is inspired from barebox threads [1]. A notion of thread group helps with dependencies, such as when a thread needs to block until a number of other threads have returned. The name "uthread" comes from "user-space threads" because the scheduling happens with no help from a higher privileged mode, contrary to more complex models where kernel threads are defined. But the 'u' may as well stand for 'U-Boot' since the bootloader may actually be running at any privilege level and the notion of user vs. kernel may not make much sense in this context. [1] https://github.com/barebox/barebox/blob/master/common/bthread.c Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Diffstat (limited to 'tools/u_boot_pylib/test_util.py')
0 files changed, 0 insertions, 0 deletions