提交 e6cd32a1 编写于 作者: mysterywolf's avatar mysterywolf 提交者: Bernard Xiong

[kernel] 将rt_thread_timeout设置为私有函数

上级 8aee6e73
......@@ -155,7 +155,6 @@ rt_err_t rt_thread_mdelay(rt_int32_t ms);
rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg);
rt_err_t rt_thread_suspend(rt_thread_t thread);
rt_err_t rt_thread_resume(rt_thread_t thread);
void rt_thread_timeout(void *parameter);
#ifdef RT_USING_SIGNALS
void rt_thread_alloc_sig(rt_thread_t tid);
......
......@@ -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);
......@@ -854,44 +891,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.
*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册