zephyr/kernel/microkernel
Daniel Leung 8253b90cfc microkernel: add task pointer list
Due to similar padding issue as pipe, the list of task object
may not be used directly. As mentioned before, some compiler/linker
may pad the large struct. For example, compiling under gcc and
march=i686 pads the struct to 32-byte alignment (march=atom to
64-byte alignment). This causes issue with sizeof() and pointer
arithmetic because they have no idea about the padding.
When the stars align in a certain way, these task structs may be
corrupted. So add a task pointer list and use it for task
manipulation. The task list remains as it is beneficial to group
them together to take advantage of cache locality.

Change-Id: I0e86bfe05742040f4540d7854c1ac14e76162776
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2016-02-05 20:15:58 -05:00
..
include Rename microkernel struct field 'MovedReq' to 'moved_req'. 2016-02-05 20:15:31 -05:00
Kconfig microkernel: re-institute CONFIG_OBJECT/THREAD_MONITOR 2016-02-05 20:15:27 -05:00
Makefile Rename microkernel's global.c to k_init.c 2016-02-05 20:14:25 -05:00
k_command_packet.c doxygen: move command_packet documentation to header 2016-02-05 20:15:34 -05:00
k_event.c Rename microkernel struct field 'Count' to 'count'. 2016-02-05 20:15:29 -05:00
k_fifo.c Rename microkernel struct field 'Hmark' to 'high_watermark'. 2016-02-05 20:15:29 -05:00
k_idle.c doxygen: microkernel timer header doxygenation 2016-02-05 20:15:34 -05:00
k_init.c microkernel: rename _k_init_node() to _k_init_dynamic() 2016-02-05 20:15:36 -05:00
k_irq.c doxygen: microkernel irq header doxygenation 2016-02-05 20:15:34 -05:00
k_mailbox.c Rename microkernel struct field 'MovedReq' to 'moved_req'. 2016-02-05 20:15:31 -05:00
k_memory_map.c Rename microkernel struct field 'Free' to 'free'. 2016-02-05 20:15:30 -05:00
k_memory_pool.c doc: document memorypool API in header file 2016-02-05 20:15:33 -05:00
k_move_data.c Rename microkernel struct field 'MovedReq' to 'moved_req'. 2016-02-05 20:15:31 -05:00
k_mutex.c mutex: fix comments still containing the 'node' concept 2016-02-05 20:15:36 -05:00
k_nop.c microkernel: rename K_swapper to _k_server 2016-02-05 20:15:21 -05:00
k_offload.c doxygen: move task public api docs to header 2016-02-05 20:15:34 -05:00
k_pipe.c doc: document pipe API in header file 2016-02-05 20:15:34 -05:00
k_pipe_buffer.c Rename microkernel struct field 'iSize' to 'size'. 2016-02-05 20:15:31 -05:00
k_pipe_get.c pipes: remove lingering mentions of 'remote nodes' 2016-02-05 20:15:36 -05:00
k_pipe_put.c pipes: remove lingering mentions of 'remote nodes' 2016-02-05 20:15:36 -05:00
k_pipe_util.c Rename microkernel struct field 'iSize' to 'size'. 2016-02-05 20:15:31 -05:00
k_pipe_xfer.c Rename microkernel struct field 'MovedReq' to 'moved_req'. 2016-02-05 20:15:31 -05:00
k_semaphore.c Rename microkernel struct field 'Count' to 'count'. 2016-02-05 20:15:29 -05:00
k_server.c Rename microkernel struct field 'Head' to 'head'. 2016-02-05 20:15:30 -05:00
k_task.c microkernel: add task pointer list 2016-02-05 20:15:58 -05:00
k_task_monitor.c Rename microkernel struct field 'Args' to 'args'. 2016-02-05 20:15:29 -05:00
k_ticker.c doxygen: microkernel timer header doxygenation 2016-02-05 20:15:34 -05:00
k_timer.c doxygen: microkernel timer header doxygenation 2016-02-05 20:15:34 -05:00