diff options
| author | Meco Man <[email protected]> | 2021-12-24 16:24:45 -0500 |
|---|---|---|
| committer | Bernard Xiong <[email protected]> | 2021-12-30 01:30:21 +0800 |
| commit | e6cd32a1adf5417b54c11c6ee015a5f2a9764989 (patch) | |
| tree | e184f736e8a5922b0fe5f0e85dc8183fcadfeb46 /src/thread.c | |
| parent | 8aee6e73c9b9b6df6e1b6cb0ac3f2984eb89d49f (diff) | |
[kernel] 将rt_thread_timeout设置为私有函数
Diffstat (limited to 'src/thread.c')
| -rw-r--r-- | src/thread.c | 77 |
1 files changed, 38 insertions, 39 deletions
diff --git a/src/thread.c b/src/thread.c index d1eb2d01e5..090f5f1ef7 100644 --- a/src/thread.c +++ b/src/thread.c @@ -105,6 +105,43 @@ static void _thread_exit(void) rt_schedule(); } +/** + * @brief This function is the timeout function for thread, normally which is invoked + * when thread is timeout to wait some resource. + * + * @param parameter is the parameter of thread timeout function + */ +static void _thread_timeout(void *parameter) +{ + struct rt_thread *thread; + register rt_base_t temp; + + thread = (struct rt_thread *)parameter; + + /* thread check */ + RT_ASSERT(thread != RT_NULL); + RT_ASSERT((thread->stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND); + RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread); + + /* disable interrupt */ + temp = rt_hw_interrupt_disable(); + + /* set error number */ + thread->error = -RT_ETIMEOUT; + + /* remove from suspend list */ + rt_list_remove(&(thread->tlist)); + + /* insert to schedule ready list */ + rt_schedule_insert_thread(thread); + + /* enable interrupt */ + rt_hw_interrupt_enable(temp); + + /* do schedule */ + rt_schedule(); +} + static rt_err_t _thread_init(struct rt_thread *thread, const char *name, void (*entry)(void *parameter), @@ -173,7 +210,7 @@ static rt_err_t _thread_init(struct rt_thread *thread, /* initialize thread timer */ rt_timer_init(&(thread->thread_timer), thread->name, - rt_thread_timeout, + _thread_timeout, thread, 0, RT_TIMER_FLAG_ONE_SHOT); @@ -855,44 +892,6 @@ rt_err_t rt_thread_resume(rt_thread_t thread) RTM_EXPORT(rt_thread_resume); /** - * @brief This function is the timeout function for thread, normally which is invoked - * when thread is timeout to wait some resource. - * - * @param parameter is the parameter of thread timeout function - */ -void rt_thread_timeout(void *parameter) -{ - struct rt_thread *thread; - register rt_base_t temp; - - thread = (struct rt_thread *)parameter; - - /* thread check */ - RT_ASSERT(thread != RT_NULL); - RT_ASSERT((thread->stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND); - RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread); - - /* disable interrupt */ - temp = rt_hw_interrupt_disable(); - - /* set error number */ - thread->error = -RT_ETIMEOUT; - - /* remove from suspend list */ - rt_list_remove(&(thread->tlist)); - - /* insert to schedule ready list */ - rt_schedule_insert_thread(thread); - - /* enable interrupt */ - rt_hw_interrupt_enable(temp); - - /* do schedule */ - rt_schedule(); -} -RTM_EXPORT(rt_thread_timeout); - -/** * @brief This function will find the specified thread. * * @note Please don't invoke this function in interrupt status. |
