[kernel] 将rt_thread_timeout设置为私有函数
This commit is contained in:
parent
8aee6e73c9
commit
e6cd32a1ad
|
@ -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_control(rt_thread_t thread, int cmd, void *arg);
|
||||||
rt_err_t rt_thread_suspend(rt_thread_t thread);
|
rt_err_t rt_thread_suspend(rt_thread_t thread);
|
||||||
rt_err_t rt_thread_resume(rt_thread_t thread);
|
rt_err_t rt_thread_resume(rt_thread_t thread);
|
||||||
void rt_thread_timeout(void *parameter);
|
|
||||||
|
|
||||||
#ifdef RT_USING_SIGNALS
|
#ifdef RT_USING_SIGNALS
|
||||||
void rt_thread_alloc_sig(rt_thread_t tid);
|
void rt_thread_alloc_sig(rt_thread_t tid);
|
||||||
|
|
77
src/thread.c
77
src/thread.c
|
@ -105,6 +105,43 @@ static void _thread_exit(void)
|
||||||
rt_schedule();
|
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,
|
static rt_err_t _thread_init(struct rt_thread *thread,
|
||||||
const char *name,
|
const char *name,
|
||||||
void (*entry)(void *parameter),
|
void (*entry)(void *parameter),
|
||||||
|
@ -173,7 +210,7 @@ static rt_err_t _thread_init(struct rt_thread *thread,
|
||||||
/* initialize thread timer */
|
/* initialize thread timer */
|
||||||
rt_timer_init(&(thread->thread_timer),
|
rt_timer_init(&(thread->thread_timer),
|
||||||
thread->name,
|
thread->name,
|
||||||
rt_thread_timeout,
|
_thread_timeout,
|
||||||
thread,
|
thread,
|
||||||
0,
|
0,
|
||||||
RT_TIMER_FLAG_ONE_SHOT);
|
RT_TIMER_FLAG_ONE_SHOT);
|
||||||
|
@ -854,44 +891,6 @@ rt_err_t rt_thread_resume(rt_thread_t thread)
|
||||||
}
|
}
|
||||||
RTM_EXPORT(rt_thread_resume);
|
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.
|
* @brief This function will find the specified thread.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue