kernel: thread: Move out the function _thread_entry() to lib
The _thread_entry() is not really a part of the kernel but a part of the zephyr's C runtime support library. Hence moving just the function to lib/thread_entry.c Signed-off-by: Adithya Baglody <adithya.nagaraj.baglody@intel.com>
This commit is contained in:
parent
d70196ba87
commit
5133cf56aa
3 changed files with 46 additions and 31 deletions
|
@ -208,37 +208,6 @@ void _check_stack_sentinel(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Common thread entry point function (used by all threads)
|
||||
*
|
||||
* This routine invokes the actual thread entry point function and passes
|
||||
* it three arguments. It also handles graceful termination of the thread
|
||||
* if the entry point function ever returns.
|
||||
*
|
||||
* This routine does not return, and is marked as such so the compiler won't
|
||||
* generate preamble code that is only used by functions that actually return.
|
||||
*/
|
||||
FUNC_NORETURN void _thread_entry(k_thread_entry_t entry,
|
||||
void *p1, void *p2, void *p3)
|
||||
{
|
||||
entry(p1, p2, p3);
|
||||
|
||||
#ifdef CONFIG_MULTITHREADING
|
||||
k_thread_abort(k_current_get());
|
||||
#else
|
||||
for (;;) {
|
||||
k_cpu_idle();
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compiler can't tell that k_thread_abort() won't return and issues a
|
||||
* warning unless we tell it that control never gets this far.
|
||||
*/
|
||||
|
||||
CODE_UNREACHABLE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MULTITHREADING
|
||||
void _impl_k_thread_start(struct k_thread *thread)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
zephyr_sources(thread_entry.c)
|
||||
add_subdirectory(crc)
|
||||
add_subdirectory_ifdef(CONFIG_JSON_LIBRARY json)
|
||||
if(NOT CONFIG_NATIVE_APPLICATION)
|
||||
|
|
45
lib/thread_entry.c
Normal file
45
lib/thread_entry.c
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (c) 2018 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Thread entry
|
||||
*
|
||||
* This file provides the common thread entry function
|
||||
*/
|
||||
|
||||
#include <kernel.h>
|
||||
|
||||
/*
|
||||
* Common thread entry point function (used by all threads)
|
||||
*
|
||||
* This routine invokes the actual thread entry point function and passes
|
||||
* it three arguments. It also handles graceful termination of the thread
|
||||
* if the entry point function ever returns.
|
||||
*
|
||||
* This routine does not return, and is marked as such so the compiler won't
|
||||
* generate preamble code that is only used by functions that actually return.
|
||||
*/
|
||||
FUNC_NORETURN void _thread_entry(k_thread_entry_t entry,
|
||||
void *p1, void *p2, void *p3)
|
||||
{
|
||||
entry(p1, p2, p3);
|
||||
|
||||
#ifdef CONFIG_MULTITHREADING
|
||||
k_thread_abort(k_current_get());
|
||||
#else
|
||||
for (;;) {
|
||||
k_cpu_idle();
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compiler can't tell that k_thread_abort() won't return and issues a
|
||||
* warning unless we tell it that control never gets this far.
|
||||
*/
|
||||
|
||||
CODE_UNREACHABLE;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue