diff --git a/arch/arm/core/thread_abort.c b/arch/arm/core/thread_abort.c index 3d398a53076..f1673afcd75 100644 --- a/arch/arm/core/thread_abort.c +++ b/arch/arm/core/thread_abort.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/arch/posix/core/posix_core.c b/arch/posix/core/posix_core.c index e3a802111ff..a72100ff394 100644 --- a/arch/posix/core/posix_core.c +++ b/arch/posix/core/posix_core.c @@ -48,6 +48,7 @@ #include "kernel_internal.h" #include "kernel_structs.h" #include "ksched.h" +#include "kswap.h" #define PREFIX "POSIX arch core: " #define ERPREFIX PREFIX"error on " diff --git a/arch/x86/core/irq_manage.c b/arch/x86/core/irq_manage.c index 4fee223ddad..388340c194d 100644 --- a/arch/x86/core/irq_manage.c +++ b/arch/x86/core/irq_manage.c @@ -21,6 +21,7 @@ #include #include #include +#include extern void _SpuriousIntHandler(void *); extern void _SpuriousIntNoErrCodeHandler(void *); diff --git a/arch/xtensa/core/xtensa-asm2.c b/arch/xtensa/core/xtensa-asm2.c index f5bbdd841db..05a3617e30b 100644 --- a/arch/xtensa/core/xtensa-asm2.c +++ b/arch/xtensa/core/xtensa-asm2.c @@ -10,6 +10,7 @@ #include #include #include +#include #include <_soc_inthandlers.h> void *xtensa_init_stack(int *stack_top, diff --git a/boards/posix/native_posix/irq_handler.c b/boards/posix/native_posix/irq_handler.c index f443fb1e3b6..8723c140f82 100644 --- a/boards/posix/native_posix/irq_handler.c +++ b/boards/posix/native_posix/irq_handler.c @@ -12,6 +12,7 @@ #include "irq_offload.h" #include "kernel_structs.h" #include "kernel_internal.h" +#include "kswap.h" #include "irq_ctrl.h" #include "posix_core.h" #include "board_soc.h" diff --git a/kernel/include/kernel_internal.h b/kernel/include/kernel_internal.h index 47febcac8f6..2a3e986a435 100644 --- a/kernel/include/kernel_internal.h +++ b/kernel/include/kernel_internal.h @@ -15,8 +15,6 @@ #define _NANO_INTERNAL__H_ #include -#include -#include #ifndef _ASMLANGUAGE @@ -52,65 +50,6 @@ extern void _setup_new_thread(struct k_thread *new_thread, void *p1, void *p2, void *p3, int prio, u32_t options); -#ifdef CONFIG_TIMESLICING -extern void _update_time_slice_before_swap(void); -#else -#define _update_time_slice_before_swap() /**/ -#endif - -#ifdef CONFIG_STACK_SENTINEL -extern void _check_stack_sentinel(void); -#else -#define _check_stack_sentinel() /**/ -#endif - -/* context switching and scheduling-related routines */ -#ifdef CONFIG_USE_SWITCH - -/* New style context switching. _arch_switch() is a lower level - * primitive that doesn't know about the scheduler or return value. - * Needed for SMP, where the scheduler requires spinlocking that we - * don't want to have to do in per-architecture assembly. - */ -static inline unsigned int _Swap(unsigned int key) -{ - struct k_thread *new_thread, *old_thread; - int ret; - - old_thread = _kernel.current; - - _check_stack_sentinel(); - _update_time_slice_before_swap(); - - new_thread = _get_next_ready_thread(); - - old_thread->swap_retval = -EAGAIN; - - _kernel.current = new_thread; - _arch_switch(new_thread->switch_handle, - &old_thread->switch_handle); - - ret = _kernel.current->swap_retval; - - irq_unlock(key); - - return ret; -} - -#else /* !CONFIG_USE_SWITCH */ - -extern unsigned int __swap(unsigned int key); - -static inline unsigned int _Swap(unsigned int key) -{ - _check_stack_sentinel(); - _update_time_slice_before_swap(); - - return __swap(key); -} -#endif - - #ifdef CONFIG_USERSPACE /** * @brief Get the maximum number of partitions for a memory domain diff --git a/kernel/include/kswap.h b/kernel/include/kswap.h new file mode 100644 index 00000000000..a8be6169d83 --- /dev/null +++ b/kernel/include/kswap.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2018 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef _KSWAP_H +#define _KSWAP_H + +#include +#include + +#ifdef CONFIG_TIMESLICING +extern void _update_time_slice_before_swap(void); +#else +#define _update_time_slice_before_swap() /**/ +#endif + +#ifdef CONFIG_STACK_SENTINEL +extern void _check_stack_sentinel(void); +#else +#define _check_stack_sentinel() /**/ +#endif + +/* context switching and scheduling-related routines */ +#ifdef CONFIG_USE_SWITCH + +/* New style context switching. _arch_switch() is a lower level + * primitive that doesn't know about the scheduler or return value. + * Needed for SMP, where the scheduler requires spinlocking that we + * don't want to have to do in per-architecture assembly. + */ +static inline unsigned int _Swap(unsigned int key) +{ + struct k_thread *new_thread, *old_thread; + int ret; + + old_thread = _kernel.current; + + _check_stack_sentinel(); + _update_time_slice_before_swap(); + + new_thread = _get_next_ready_thread(); + + old_thread->swap_retval = -EAGAIN; + + _kernel.current = new_thread; + _arch_switch(new_thread->switch_handle, + &old_thread->switch_handle); + + ret =_kernel.current->swap_retval; + + irq_unlock(key); + + return ret; +} + +#else /* !CONFIG_USE_SWITCH */ + +extern unsigned int __swap(unsigned int key); + +static inline unsigned int _Swap(unsigned int key) +{ + _check_stack_sentinel(); + _update_time_slice_before_swap(); + + return __swap(key); +} +#endif + +#endif /* _KSWAP_H */ diff --git a/kernel/init.c b/kernel/init.c index 43b71e46e66..cbdf5b47c61 100644 --- a/kernel/init.c +++ b/kernel/init.c @@ -28,6 +28,7 @@ #include #include #include +#include /* kernel build timestamp items */ diff --git a/kernel/mailbox.c b/kernel/mailbox.c index 42dcd7c908f..03592eb2e53 100644 --- a/kernel/mailbox.c +++ b/kernel/mailbox.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #if (CONFIG_NUM_MBOX_ASYNC_MSGS > 0) diff --git a/kernel/mem_slab.c b/kernel/mem_slab.c index 6a4f4935a46..63d3507ee46 100644 --- a/kernel/mem_slab.c +++ b/kernel/mem_slab.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include extern struct k_mem_slab _k_mem_slab_list_start[]; extern struct k_mem_slab _k_mem_slab_list_end[]; diff --git a/kernel/mempool.c b/kernel/mempool.c index 372cdefe3d7..7e979110dbe 100644 --- a/kernel/mempool.c +++ b/kernel/mempool.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include /* Linker-defined symbols bound the static pool structs */ extern struct k_mem_pool _k_mem_pool_list_start[]; diff --git a/kernel/msg_q.c b/kernel/msg_q.c index e9b7a6906bd..9e8f7e2c607 100644 --- a/kernel/msg_q.c +++ b/kernel/msg_q.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include extern struct k_msgq _k_msgq_list_start[]; extern struct k_msgq _k_msgq_list_end[]; diff --git a/kernel/mutex.c b/kernel/mutex.c index 22b9ff9c45c..3f156c6e047 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #define RECORD_STATE_CHANGE(mutex) do { } while ((0)) #define RECORD_CONFLICT(mutex) do { } while ((0)) diff --git a/kernel/pipes.c b/kernel/pipes.c index b1eb1f480d3..f8f29daedd4 100644 --- a/kernel/pipes.c +++ b/kernel/pipes.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include struct k_pipe_desc { unsigned char *buffer; /* Position in src/dest buffer */ diff --git a/kernel/poll.c b/kernel/poll.c index 806606336aa..d5c799659cb 100644 --- a/kernel/poll.c +++ b/kernel/poll.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/kernel/posix/pthread_barrier.c b/kernel/posix/pthread_barrier.c index f4966afb872..445eb32a0ba 100644 --- a/kernel/posix/pthread_barrier.c +++ b/kernel/posix/pthread_barrier.c @@ -8,7 +8,7 @@ #include #include "ksched.h" #include "wait_q.h" -#include +#include void ready_one_thread(_wait_q_t *wq); diff --git a/kernel/posix/pthread_cond.c b/kernel/posix/pthread_cond.c index 48f1a16996e..d4d6499777c 100644 --- a/kernel/posix/pthread_cond.c +++ b/kernel/posix/pthread_cond.c @@ -8,7 +8,7 @@ #include #include "ksched.h" #include "wait_q.h" -#include +#include void ready_one_thread(_wait_q_t *wq); diff --git a/kernel/queue.c b/kernel/queue.c index ab3b2c62011..ce566d99f90 100644 --- a/kernel/queue.c +++ b/kernel/queue.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include extern struct k_queue _k_queue_list_start[]; extern struct k_queue _k_queue_list_end[]; diff --git a/kernel/sched.c b/kernel/sched.c index 9e2dc56d915..c93e2d0ed84 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include /* the only struct _kernel instance */ struct _kernel _kernel = {0}; diff --git a/kernel/sem.c b/kernel/sem.c index 85d3b9423b9..39bc5c6b030 100644 --- a/kernel/sem.c +++ b/kernel/sem.c @@ -27,7 +27,7 @@ #include #include #include -#include +#include extern struct k_sem _k_sem_list_start[]; extern struct k_sem _k_sem_list_end[]; diff --git a/kernel/stack.c b/kernel/stack.c index d6fbdd163bc..1d0c6080296 100644 --- a/kernel/stack.c +++ b/kernel/stack.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include extern struct k_stack _k_stack_list_start[]; extern struct k_stack _k_stack_list_end[]; diff --git a/kernel/thread.c b/kernel/thread.c index 8f4c148c000..2ef739b4177 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -25,6 +25,7 @@ #include #include #include +#include extern struct _static_thread_data _static_thread_data_list_start[]; extern struct _static_thread_data _static_thread_data_list_end[]; diff --git a/kernel/thread_abort.c b/kernel/thread_abort.c index ea87bc1b327..5cd3ac7fdd5 100644 --- a/kernel/thread_abort.c +++ b/kernel/thread_abort.c @@ -13,6 +13,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/kernel/timer.c b/kernel/timer.c index 840b3cc7630..e4e5526f066 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include extern struct k_timer _k_timer_list_start[]; extern struct k_timer _k_timer_list_end[]; diff --git a/tests/kernel/fatal/src/main.c b/tests/kernel/fatal/src/main.c index 135c678ee48..49027ca51eb 100644 --- a/tests/kernel/fatal/src/main.c +++ b/tests/kernel/fatal/src/main.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include #if defined(CONFIG_X86) && defined(CONFIG_X86_MMU) #define STACKSIZE (8192)