zephyr/kernel
Nicolas Pitre a2011d8af9 z_heap_aligned_alloc(): avoid memory wastage
The strategy used in z_heap_aligned_alloc() was to allocate an extra
align-sized memory block for storing a pointer to the memory heap.
This is wasteful in terms of memory usage when alignment is larger
than a pointer width. A loop is needed to find the initial memory
start when freeing it which isn't optimal either.

Instead, let's have sys_heap_aligned_alloc() rewind a pointer after
it is aligned to make just enough room for storing our heap reference.
This way the heap reference is always located immediately before the
aligned memory and any unused memory is returned to the heap.

The rewind and alignment values may coincide in which case only
the alignment is necessary anyway.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-01-22 10:04:43 -05:00
..
include Revert "kernel: add CONFIG_ARCH_HAS_RESERVED_PAGE_FRAMES" 2021-01-22 08:39:45 -05:00
atomic_c.c kernel: Add k_heap synchronized memory allocator 2020-04-14 10:05:55 -07:00
banner.c kernel: init: move banner handling 2020-11-27 20:08:14 -05:00
cache_handlers.c cache: Expand the APIs for cache flushing 2021-01-19 14:31:02 -05:00
CMakeLists.txt kernel: add condition variables 2021-01-19 08:55:47 -05:00
compiler_stack_protect.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
condvar.c kernel: add vrfy hooks to support userspace with condvar 2021-01-19 08:55:47 -05:00
device.c power: standarize PM Kconfigs and cleanup 2020-12-09 15:18:29 -05:00
errno.c kernel: support using thread local storage for errno 2020-10-24 10:52:00 -07:00
fatal.c debug: coredump: remove z_ prefix for stuff used outside subsys 2021-01-21 22:08:59 -05:00
futex.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
idle.c power: Remove power management conditionals from code 2021-01-22 09:31:20 -05:00
init.c Revert "kernel: add page frame management" 2021-01-22 08:39:45 -05:00
Kconfig kernel: build: Make TICKLESS_KERNEL depends on TICKLESS_CAPABLE 2021-01-21 17:20:32 -05:00
kheap.c kernel: add k_heap_aligned_alloc 2020-12-08 13:21:26 -05:00
mailbox.c kernel: Remove legacy mem_pool usage 2020-12-07 21:50:14 -05:00
mem_domain.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
mem_slab.c kernel: mem_slab: Optimize mem_slab_free 2020-12-07 11:36:48 +01:00
mempool.c z_heap_aligned_alloc(): avoid memory wastage 2021-01-22 10:04:43 -05:00
mmu.c Revert "kernel: add page frame management" 2021-01-22 08:39:45 -05:00
msg_q.c doc: Clarify semantics of k_msgq_put 2020-09-23 13:21:07 -05:00
mutex.c kernel: Cleanup logger setup in kernel files 2020-11-27 09:56:34 -05:00
pipes.c kernel: Remove legacy mem_pool usage 2020-12-07 21:50:14 -05:00
poll.c kernel: poll: remove unreachable code 2021-01-18 11:02:59 -05:00
queue.c kernel/queue: fix queue append/get race 2020-10-28 17:01:41 +01:00
sched.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
sem.c device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
smp.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
stack.c kernel: stack: fix stack_push spinlock and return 2020-10-07 17:10:36 -04:00
system_work_q.c device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
thread_abort.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
thread.c kernel: const-qualify objects used to calculate delay values 2021-01-22 08:05:26 -06:00
timeout.c kernel: Remove CONFIG_LEGACY_TIMEOUT_API 2021-01-14 21:33:16 -05:00
timer.c kernel: const-qualify objects used to calculate delay values 2021-01-22 08:05:26 -06:00
userspace_handler.c userspace: update k_object API to support immutable objects 2020-09-02 13:48:13 +02:00
userspace.c kernel: userspace: aligned memory allocation for dynamic objects 2021-01-13 09:43:55 -08:00
version.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
work_q.c kernel: Remove CONFIG_LEGACY_TIMEOUT_API 2021-01-14 21:33:16 -05:00
xip.c linker: arm: Add cortex_m itcm section 2021-01-15 14:51:20 +01:00