f86027ffb7
This new implementation of pipes has a number of advantages over the previous. 1. The schedule locking is eliminated both making it safer for SMP and allowing for pipes to be used from ISR context. 2. The code used to be structured to have separate code for copying to/from a wating thread's buffer and the pipe buffer. This had unnecessary duplication that has been replaced with a simpler scatter-gather copy model. 3. The manner in which the "working list" is generated has also been simplified. It no longer tries to use the thread's queuing node. Instead, the k_pipe_desc structure (whose instances are on the part of the k_thread structure) has been extended to contain additional fields including a node for use with a linked list. As this impacts the k_thread structure, pipes are now configurable in the kernel via CONFIG_PIPES. Fixes #47061 Signed-off-by: Peter Mitsis <peter.mitsis@intel.com> |
||
---|---|---|
.. | ||
include | ||
paging | ||
CMakeLists.txt | ||
Kconfig | ||
Kconfig.vm | ||
atomic_c.c | ||
banner.c | ||
cache_handlers.c | ||
compiler_stack_protect.c | ||
condvar.c | ||
device.c | ||
errno.c | ||
events.c | ||
fatal.c | ||
futex.c | ||
idle.c | ||
init.c | ||
kheap.c | ||
mailbox.c | ||
main_weak.c | ||
mem_domain.c | ||
mem_slab.c | ||
mempool.c | ||
mmu.c | ||
msg_q.c | ||
mutex.c | ||
pipes.c | ||
poll.c | ||
queue.c | ||
sched.c | ||
sem.c | ||
smp.c | ||
stack.c | ||
system_work_q.c | ||
thread.c | ||
timeout.c | ||
timer.c | ||
usage.c | ||
userspace.c | ||
userspace_handler.c | ||
version.c | ||
work.c | ||
xip.c |