Browse Source
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>pull/6845/head
3 changed files with 46 additions and 31 deletions
@ -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…
Reference in new issue