eeebb4d911
Currently, all devices are initialized at boot time (following their level and priority order). This patch introduces deferred initialization: by setting the property `zephyr,deferred-init` on a device on the devicetree, Zephyr will not initialized the device. To initialize such devices, one has to call `device_init()`. Deferred initialization is done by grouping all deferred devices on a different ELF section. In this way, there's no need to consume more memory to keep track of deferred devices. When `device_init()` is called, Zephyr will scan the deferred devices section and call the initialization function for the matching device. As this scanning is done only during deferred device initialization, its cost should be bearable. Signed-off-by: Ederson de Souza <ederson.desouza@intel.com> |
||
---|---|---|
.. | ||
include | ||
paging | ||
CMakeLists.txt | ||
Kconfig | ||
Kconfig.device | ||
Kconfig.obj_core | ||
Kconfig.smp | ||
Kconfig.vm | ||
atomic_c.c | ||
banner.c | ||
busy_wait.c | ||
compiler_stack_protect.c | ||
condvar.c | ||
cpu_mask.c | ||
device.c | ||
dynamic.c | ||
dynamic_disabled.c | ||
errno.c | ||
events.c | ||
fatal.c | ||
float.c | ||
futex.c | ||
idle.c | ||
init.c | ||
ipi.c | ||
irq_offload.c | ||
kheap.c | ||
mailbox.c | ||
main_weak.c | ||
mem_domain.c | ||
mem_slab.c | ||
mempool.c | ||
mmu.c | ||
msg_q.c | ||
mutex.c | ||
nothread.c | ||
obj_core.c | ||
pipes.c | ||
poll.c | ||
priority_queues.c | ||
queue.c | ||
sched.c | ||
sem.c | ||
smp.c | ||
spinlock_validate.c | ||
stack.c | ||
system_work_q.c | ||
thread.c | ||
thread_monitor.c | ||
timeout.c | ||
timer.c | ||
timeslicing.c | ||
usage.c | ||
userspace.c | ||
userspace_handler.c | ||
version.c | ||
work.c | ||
xip.c |