zephyr/kernel
Tomasz Bursztyka 8d7bb8ffd8 device: Refactor device structures
When the device driver model got introduced, there were no concept of
SYS_INIT() which can be seen as software service. These were introduced
afterwards and reusing the device infrastructure for simplicity.
However, it meant to allocate a bit too much for something that only
required an initialization function to be called at right time.

Thus refactoring the devices structures relevantly:
- introducing struct init_entry which is a generic init end-point
- struct deviceconfig is removed and struct device owns everything now.
- SYS_INIT() generates only a struct init_entry via calling
  INIT_ENTRY_DEFINE()
- DEVICE_AND_API_INIT() generates a struct device and calls
  INIT_ENTRY_DEFINE()
- init objects sections are in ROM
- device objects sections are in RAM (but will end up in ROM once they
  will be 'constified')

It also generate a tiny memory gain on both ROM and RAM, which is nice.

Perhaps kernel/device.c could be renamed to something more relevant.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2020-05-08 23:07:44 +02:00
..
include
atomic_c.c
CMakeLists.txt
compiler_stack_protect.c
device.c
errno.c
fatal.c
futex.c
idle.c
init.c
Kconfig
Kconfig.power_mgmt
kheap.c
mailbox.c
mem_domain.c
mem_slab.c
mempool_sys.c
mempool.c
msg_q.c
mutex.c
pipes.c
poll.c
queue.c
sched.c
sem.c
smp.c
stack.c
system_work_q.c
thread_abort.c
thread.c
timeout.c
timer.c
userspace_handler.c
userspace.c
version.c
work_q.c