zephyr/kernel
Andy Ross eda4c027da misc/dlist: Swap insertion API for a faster one
The sys_dlist_insert_*() functions had a behavior where a NULL
argument for the insertion position to sys_dlist_insert_after/before()
was interpreted as "the end of the list".  We never used that
convention (except in one spot internal to dlist.h which was not
itself used anywhere), and of course already have an API for appending
and prepending to a list.

In practice this was a performance disaster.  The NULL check is
virtually never provable statically by the compiler, so that test and
branch is present always.  And worse, the check and call to another
function was pushing this beyond the complexity limit for gcc to
inline a function (at -Os optimization anyway), forcing us to use
function calls for what should be a ~8 instruction sequence.  The
upshot is that dlist insertions were 2-3x slower than they needed to
be.

Deprecate these older APIs and introduce a new sys_dlist_insert() call
which can be much better optimized.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2019-02-01 15:57:21 -05:00
..
include kernel: timeout: detect inactive timeouts using dnode linked state 2019-01-23 20:46:49 +01:00
atomic_c.c
CMakeLists.txt cmake: Use variables for target names 2019-01-19 07:21:55 -05:00
compiler_stack_protect.c
device.c kernel: check retval of driver init 2018-12-07 19:33:23 -05:00
errno.c
idle.c power: rename api sys_soc -> sys_ 2018-12-28 16:16:28 -05:00
init.c kernel: fix typo in kconfig name 2019-01-30 13:30:17 -05:00
int_latency_bench.c kernel: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
Kconfig Kconfig: STACK_CANARIES: Correct the help text 2019-01-23 09:44:09 +01:00
Kconfig.power_mgmt kernel: ensure System Power Managment enables Tickless Idle. 2018-11-21 23:16:35 -05:00
mailbox.c kernel: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
mem_domain.c kernel: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
mem_slab.c kernel: Add 'U' to unsigned variable assignments 2018-12-04 22:51:56 -05:00
mempool.c sys_clock: Fix unsafe tick count usage 2018-10-16 15:03:10 -04:00
msg_q.c kernel: Add missing include 2019-01-11 15:18:52 -05:00
mutex.c kernel: mutex: delay setting lock_count = 0. 2018-12-05 11:00:10 +01:00
pipes.c kernel: Add missing include 2019-01-11 15:18:52 -05:00
poll.c misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
queue.c kernel: Add missing include 2019-01-11 15:18:52 -05:00
sched.c misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
sem.c kernel: sem: Fix few MISRA C violations. 2018-10-17 12:17:58 -04:00
smp.c kernel; Checking functions return 2018-09-14 16:55:37 -04:00
stack.c kernel: Add missing include 2019-01-11 15:18:52 -05:00
system_work_q.c kernel: system_work_q: Set dedicated "sysworkq" name. 2018-10-19 07:58:45 -04:00
thread_abort.c kernel: Using boolean expression on ASSERT macros 2018-09-28 06:28:41 +05:30
thread.c kernel: Change k_is_in_isr to return bool 2019-01-07 08:52:07 -05:00
timeout.c misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
timer.c kernel: timeout: detect inactive timeouts using dnode linked state 2019-01-23 20:46:49 +01:00
userspace_handler.c kernel: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
userspace.c kernel: Make statements evaluate boolean expressions 2019-01-07 08:52:07 -05:00
version.c doc: add kernel version API to doxygen 2018-12-08 17:24:53 -05:00
work_q.c kernel: Use NULL instead of 0 2018-12-11 14:37:10 -08:00