zephyr/include
Andy Ross 528bef2d22 lib/os: Add sys_winstream lockless shared memory byte stream IPC
It's not uncommon to have Zephyr running in environments where it
shares a memory bus with a foreign/non-Zephyr system (both the older
Intel Quark and cAVS audio DSP systems share this property).  In those
circumstances, it would be nice to have a utility that allows an
arbitrary-sized chunk of that memory to be used as a unidirectional
buffered byte stream without requiring complicated driver support.
sys_winstream is one such abstraction.

This code is lockless, it makes no synchronization demands of the OS
or hardware beyond memory ordering[1].  It implements a simple
file/socket-style read/write API.  It produces small code and is high
performance (e.g. a read or write on Xtensa is about 60 cycles plus
one per byte copied).  It's bidirectional, with no internal Zephyr
dependencies (allowing it to be easily ported to the foreign system).
And it's quite a bit simpler (especially for the reader) than the
older cAVS trace protocol it's designed to replace.

[1] Which means that right now it won't work reliably on arm64 until
we add a memory barrier framework to Zephyr!  See notes in the code;
the locations for the barriers are present, but there's no utility to
call.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-01-13 14:01:23 -05:00
..
app_memory kernel: mem_domain: remove extra slash in Z_PROGBITS_SYM 2021-12-05 10:22:26 -05:00
arch arc: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
audio audio: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
bluetooth Bluetooth: HCI: Max periodic adv data length is 252 bytes 2022-01-13 13:23:29 +01:00
canbus canbus: isotp: fix net_buf usage in recv function 2021-11-09 18:12:08 +02:00
console drivers: console: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
crypto
data json: Add top-level array decoding support 2021-12-01 12:21:19 -05:00
debug debug: coredump: allow for coredump backends to be defined outside of tree 2022-01-11 18:17:24 -05:00
devicetree drivers: can: remove DT_CHOSEN_ZEPHYR_CANBUS_LABEL macro 2021-11-09 11:19:50 +01:00
dfu dfu: boot: Add implementation for multi-image swap type check 2021-08-26 09:13:13 -04:00
disk
display
drivers dma: Add suspend and resume API 2022-01-12 17:33:48 -05:00
dt-bindings drivers: clock_control: lpc: syscon: add MCAN clock support 2022-01-10 12:00:20 +01:00
fs fs: Add FS_MOUNT_FLAG_USE_DISK_ACCESS flag 2021-12-06 08:08:26 -05:00
ipc ipc_service: Extend RPMsg structs and misc fixes 2021-11-22 23:03:23 -05:00
kernel kernel: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
linker ztest: Update ztest with more powerful testing APIs 2022-01-11 11:47:30 +01:00
logging logging: Add option to have tag which is prepended to all messages 2022-01-04 14:57:31 -06:00
lorawan
math math: introduce macro for integer log2 2022-01-11 16:10:53 -05:00
mgmt mcumgr: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
modbus modbus: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
multi_heap multi_heap: Introduce shared multi-heap memory pool manager 2021-10-12 07:44:46 -04:00
net net: lwm2m: Instance specific callbacks 2022-01-13 10:34:25 +01:00
pm pm: policy: return a reference to the next state 2022-01-11 10:46:20 +01:00
portability lib/os: bitarray: introduce SYS_BITARRAY_DEFINE_STATIC() 2021-11-24 14:22:23 -05:00
posix posix: semaphore: use ZRESTRICT 2021-11-05 13:29:31 +01:00
random
settings
shell shell: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
stats stats: i2c: I2C stats 2021-12-04 07:22:56 -05:00
storage storage/flash_map: Use larger type for alignment 2021-12-30 16:32:02 -05:00
sys lib/os: Add sys_winstream lockless shared memory byte stream IPC 2022-01-13 14:01:23 -05:00
task_wdt task_wdt: fix silent init failures 2021-10-01 15:21:32 +02:00
timing
toolchain include: Add a macro to check pointer alignment 2021-12-10 14:08:59 +01:00
tracing kernel: pipes: add pipe flush routines 2022-01-10 12:17:14 -05:00
usb usb: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
xen xenvm: drivers: serial: add interrupt-driven API for Xen PV console 2021-12-07 12:15:38 -05:00
zephyr
cache.h
device.h device: improve (z_)device_is_ready docs 2022-01-07 10:41:23 -05:00
devicetree.h devicetree: add DT_INST_PARENT helper 2021-12-16 11:10:01 -06:00
ec_host_cmd.h
emul.h
exc_handle.h
fatal.h fatal: fix missing extern "C" 2021-12-14 11:47:13 -06:00
init.h
irq_nextlevel.h drivers: interrupt_controller: remove @return doc for void funcs 2022-01-12 16:02:16 -05:00
irq_offload.h
irq.h drivers: interrupt_controller: remove @return doc for void funcs 2022-01-12 16:02:16 -05:00
kernel_includes.h
kernel_structs.h kernel: extend CPU runtime stats 2022-01-10 10:38:06 -05:00
kernel_version.h
kernel.h kernel: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
ptp_clock.h
shared_irq.h
smf.h lib: smf: Add State Machine Framework 2021-10-04 20:33:11 -04:00
spinlock.h
sw_isr_table.h
sys_clock.h
syscall_handler.h
syscall.h kernel: syscall: pin generated inline functions 2021-08-26 21:16:22 -04:00
timeout_q.h
toolchain.h armclang: adding toolchain/armclang.h header 2021-08-30 08:54:23 -04:00
wait_q.h
zephyr.h