zephyr/kernel/nanokernel
Benjamin Walsh d8994f69be nanokernel: add nano_fifo_put_list() APIs
Introduce the family of nano_fifo_put_list and nano_fifo_put_slist APIs,
which allow queuing a list of elements on a nanokernel fifo in one
shot. When called from an ISR or a fiber, the behaviour is not really
different than calling nano_fifo_put for each element to enqueue.
However, when called from a task, it allows the task to enqueue the full
list without yielding to fibers that were waiting on the fifo.

All fibers currently waiting on the fifo will be awakened and given an
element from the list in their order of priority. When some elements are
not matched with a receiver, they are queued normally.

There are two ways of passing a list: with either an ad-hoc queue, by
passing the head and the tail elements, or with a sys_slist_t object.
For the latter, the object must be reinitialized afterwards.

Change-Id: I6ac077f556dc39995191e9149c4a047a3433826f
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-06-13 20:24:41 +00:00
..
include nanokernel: Add callback to _nano_timeout once again 2016-06-01 00:35:05 +00:00
Kconfig Cleanup whitespace in Kconfig files 2016-05-25 13:28:07 -05:00
Makefile nanokernel: Introduce workqueue API 2016-05-12 15:26:39 +00:00
atomic_c.c nanokernel: move C atomic operations to centralized code 2016-04-27 21:40:19 +00:00
compiler_stack_protect.c remove redundant checking for CONFIG_STACK_CANARIES 2016-02-11 18:48:45 +00:00
device.c device: add documentation for device_get_binding 2016-05-12 10:57:27 +00:00
errno.c errno: implement _get_errno() in common code 2016-05-04 17:04:14 +00:00
event_logger.c nano_sema: Simplify nano_xxx_sem_take() API family 2016-02-05 20:25:14 -05:00
idle.c kernel: Combine nano_timers and nano_timeouts 2016-03-26 09:20:10 +00:00
int_latency_bench.c x86: streamline irq_lock()/irq_unlock() 2016-02-05 20:25:13 -05:00
kernel_event_logger.c kernel event logger: add possibility to use custom timestamp 2016-05-23 21:27:49 +00:00
nano_context.c nanokernel: tighten _is_thread_essential() 2016-05-03 17:42:54 +00:00
nano_fiber.c kernel: Init back pointer to microkernel task 2016-05-04 22:51:33 +00:00
nano_fifo.c nanokernel: add nano_fifo_put_list() APIs 2016-06-13 20:24:41 +00:00
nano_init.c kernel: _MOVE_INSTR needs to be defined for CONFIG_ARC 2016-05-05 00:06:03 -07:00
nano_lifo.c nanokernel: Fix nanokernel object timeout recalculation 2016-05-04 22:51:35 +00:00
nano_sema.c nanokernel: Fix nanokernel object timeout recalculation 2016-05-04 22:51:35 +00:00
nano_sleep.c nanokernel: Fix nanokernel object timeout recalculation 2016-05-04 22:51:35 +00:00
nano_stack.c debug: adds object tracing capability to nano stack 2016-03-11 22:12:26 +00:00
nano_sys_clock.c kernel: Combine nano_timers and nano_timeouts 2016-03-26 09:20:10 +00:00
nano_timer.c nanokernel: Add callback to _nano_timeout once again 2016-06-01 00:35:05 +00:00
nano_work.c nano_work: Add delayed version 2016-05-31 22:52:51 +00:00
ring_buffer.c checkpatch: error - spacing 2016-02-05 20:24:31 -05:00
version.c