zephyr/doc/reference
Andy Ross 820c94e5dd arch/xtensa: Inline atomics
The xtensa atomics layer was written with hand-coded assembly that had
to be called as functions.  That's needlessly slow, given that the low
level primitives are a two-instruction sequence.  Ideally the compiler
should see this as an inline to permit it to better optimize around
the needed barriers.

There was also a bug with the atomic_cas function, which had a loop
internally instead of returning the old value synchronously on a
failed swap.  That's benign right now because our existing spin lock
does nothing but retry it in a tight loop anyway, but it's incorrect
per spec and would have caused a contention hang with more elaborate
algorithms (for example a spinlock with backoff semantics).

Remove the old implementation and replace with a much smaller inline C
one based on just two assembly primitives.

This patch also contains a little bit of refactoring to address the
scheme has been split out into a separate header for each, and the
ATOMIC_OPERATIONS_CUSTOM kconfig has been renamed to
ATOMIC_OPERATIONS_ARCH to better capture what it means.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-03-08 11:14:27 -05:00
..
audio doc: api: sort the API overview alphabetically 2020-10-30 15:57:30 +01:00
bluetooth Bluetooth: Mesh: Encapsulate feature config 2020-11-09 11:23:34 +02:00
crypto doc: reference: Clean up and restructure a bit 2020-03-18 11:47:24 +01:00
devicetree devicetree: add DT_SAME_NODE() 2021-01-19 16:06:55 -05:00
display doc: reference: Clean up and restructure a bit 2020-03-18 11:47:24 +01:00
drivers device: deprecate DEVICE_AND_API_INIT 2021-01-12 08:31:12 -06:00
edac edac: doc: Include EDAC API to Zephyr API Reference 2021-01-21 08:34:07 -05:00
file_system fs: allow external file system implementations 2020-09-03 21:49:34 +02:00
kernel arch/xtensa: Inline atomics 2021-03-08 11:14:27 -05:00
logging logging: Revamp menuconfig 2021-01-26 06:15:42 -05:00
misc doc: data structures: fix description of sflist 2021-02-04 11:57:55 -05:00
networking doc: CAN: Fix code in CAN API documentation 2021-01-18 23:26:30 -05:00
peripherals doc: drivers: i2c: provide more information on I2C APIs 2021-02-09 13:59:17 -05:00
power_management docs: pm: Update central method diagram 2021-02-08 18:01:42 -05:00
random doc: reference: Clean up and restructure a bit 2020-03-18 11:47:24 +01:00
resource_management sys: onoff: support clients using synchronous transitions 2020-08-14 17:53:39 +02:00
settings doc: provide guidance on recommended settings back end 2020-08-25 09:35:40 +02:00
shell doc: shell update with getopt 2021-03-01 09:50:32 -05:00
storage doc/reference: Added clarification on flash offset relation 2020-10-27 12:52:07 +01:00
timing_functions doc: timing docs fix misprint 2020-11-19 16:59:47 -05:00
usb doc: usb: add initial USB HID documentation 2021-02-28 16:50:24 -05:00
usermode lib: Remove sys_mem_pool implementation 2020-12-07 21:50:14 -05:00
util api: promote sys/util.h to experimental 2020-06-18 19:38:10 +02:00
virtualization doc: Adding ivshmem general and API documentation 2020-12-16 18:47:35 -05:00
index.rst edac: doc: Include EDAC API to Zephyr API Reference 2021-01-21 08:34:07 -05:00
overview.rst doc: drivers: i2c: provide more information on I2C APIs 2021-02-09 13:59:17 -05:00
terminology.rst doc: kernel: add sleep as a defined term 2021-02-02 12:05:29 -05:00