|
@@ -220,13 +220,13 @@ rt_inline rt_err_t _ipc_list_resume(rt_list_t *list)
|
|
rt_inline rt_err_t _ipc_list_resume_all(rt_list_t *list)
|
|
rt_inline rt_err_t _ipc_list_resume_all(rt_list_t *list)
|
|
{
|
|
{
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
|
|
|
|
/* wakeup all suspended threads */
|
|
/* wakeup all suspended threads */
|
|
while (!rt_list_isempty(list))
|
|
while (!rt_list_isempty(list))
|
|
{
|
|
{
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* get next suspended thread */
|
|
/* get next suspended thread */
|
|
thread = rt_list_entry(list->next, struct rt_thread, tlist);
|
|
thread = rt_list_entry(list->next, struct rt_thread, tlist);
|
|
@@ -241,7 +241,7 @@ rt_inline rt_err_t _ipc_list_resume_all(rt_list_t *list)
|
|
rt_thread_resume(thread);
|
|
rt_thread_resume(thread);
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
}
|
|
}
|
|
|
|
|
|
return RT_EOK;
|
|
return RT_EOK;
|
|
@@ -483,7 +483,7 @@ RTM_EXPORT(rt_sem_delete);
|
|
*/
|
|
*/
|
|
rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t timeout)
|
|
rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t timeout)
|
|
{
|
|
{
|
|
- register rt_base_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -493,7 +493,7 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t timeout)
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(sem->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(sem->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC, ("thread %s take sem:%s, which value is: %d\n",
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC, ("thread %s take sem:%s, which value is: %d\n",
|
|
rt_thread_self()->name,
|
|
rt_thread_self()->name,
|
|
@@ -506,14 +506,14 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t timeout)
|
|
sem->value --;
|
|
sem->value --;
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
/* no waiting, return with timeout */
|
|
/* no waiting, return with timeout */
|
|
if (timeout == 0)
|
|
if (timeout == 0)
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_ETIMEOUT;
|
|
return -RT_ETIMEOUT;
|
|
}
|
|
}
|
|
@@ -551,7 +551,7 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t timeout)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* do schedule */
|
|
/* do schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -605,7 +605,7 @@ RTM_EXPORT(rt_sem_trytake);
|
|
*/
|
|
*/
|
|
rt_err_t rt_sem_release(rt_sem_t sem)
|
|
rt_err_t rt_sem_release(rt_sem_t sem)
|
|
{
|
|
{
|
|
- register rt_base_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
register rt_bool_t need_schedule;
|
|
register rt_bool_t need_schedule;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -617,7 +617,7 @@ rt_err_t rt_sem_release(rt_sem_t sem)
|
|
need_schedule = RT_FALSE;
|
|
need_schedule = RT_FALSE;
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC, ("thread %s releases sem:%s, which value is: %d\n",
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC, ("thread %s releases sem:%s, which value is: %d\n",
|
|
rt_thread_self()->name,
|
|
rt_thread_self()->name,
|
|
@@ -638,13 +638,13 @@ rt_err_t rt_sem_release(rt_sem_t sem)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* resume a thread, re-schedule */
|
|
/* resume a thread, re-schedule */
|
|
if (need_schedule == RT_TRUE)
|
|
if (need_schedule == RT_TRUE)
|
|
@@ -671,7 +671,7 @@ RTM_EXPORT(rt_sem_release);
|
|
*/
|
|
*/
|
|
rt_err_t rt_sem_control(rt_sem_t sem, int cmd, void *arg)
|
|
rt_err_t rt_sem_control(rt_sem_t sem, int cmd, void *arg)
|
|
{
|
|
{
|
|
- rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
RT_ASSERT(sem != RT_NULL);
|
|
RT_ASSERT(sem != RT_NULL);
|
|
@@ -913,7 +913,7 @@ RTM_EXPORT(rt_mutex_delete);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
{
|
|
{
|
|
- register rt_base_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
|
|
|
|
/* this function must not be used in interrupt even if time = 0 */
|
|
/* this function must not be used in interrupt even if time = 0 */
|
|
@@ -928,7 +928,7 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
thread = rt_thread_self();
|
|
thread = rt_thread_self();
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mutex->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mutex->parent.parent)));
|
|
|
|
|
|
@@ -948,7 +948,7 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -971,7 +971,7 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -984,7 +984,7 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
thread->error = -RT_ETIMEOUT;
|
|
thread->error = -RT_ETIMEOUT;
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_ETIMEOUT;
|
|
return -RT_ETIMEOUT;
|
|
}
|
|
}
|
|
@@ -1023,7 +1023,7 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* do schedule */
|
|
/* do schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -1037,14 +1037,14 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t timeout)
|
|
{
|
|
{
|
|
/* the mutex is taken successfully. */
|
|
/* the mutex is taken successfully. */
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mutex->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mutex->parent.parent)));
|
|
|
|
|
|
@@ -1089,7 +1089,7 @@ RTM_EXPORT(rt_mutex_trytake);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
{
|
|
{
|
|
- register rt_base_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
rt_bool_t need_schedule;
|
|
rt_bool_t need_schedule;
|
|
|
|
|
|
@@ -1106,7 +1106,7 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
thread = rt_thread_self();
|
|
thread = rt_thread_self();
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC,
|
|
RT_DEBUG_LOG(RT_DEBUG_IPC,
|
|
("mutex_release:current thread %s, mutex value: %d, hold: %d\n",
|
|
("mutex_release:current thread %s, mutex value: %d, hold: %d\n",
|
|
@@ -1120,7 +1120,7 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
thread->error = -RT_ERROR;
|
|
thread->error = -RT_ERROR;
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_ERROR;
|
|
return -RT_ERROR;
|
|
}
|
|
}
|
|
@@ -1159,7 +1159,7 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1177,7 +1177,7 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1188,7 +1188,7 @@ rt_err_t rt_mutex_release(rt_mutex_t mutex)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* perform a schedule */
|
|
/* perform a schedule */
|
|
if (need_schedule == RT_TRUE)
|
|
if (need_schedule == RT_TRUE)
|
|
@@ -1441,7 +1441,7 @@ rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set)
|
|
{
|
|
{
|
|
struct rt_list_node *n;
|
|
struct rt_list_node *n;
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
register rt_base_t status;
|
|
register rt_base_t status;
|
|
rt_bool_t need_schedule;
|
|
rt_bool_t need_schedule;
|
|
|
|
|
|
@@ -1569,7 +1569,7 @@ rt_err_t rt_event_recv(rt_event_t event,
|
|
rt_uint32_t *recved)
|
|
rt_uint32_t *recved)
|
|
{
|
|
{
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
register rt_base_t status;
|
|
register rt_base_t status;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -1702,7 +1702,7 @@ RTM_EXPORT(rt_event_recv);
|
|
*/
|
|
*/
|
|
rt_err_t rt_event_control(rt_event_t event, int cmd, void *arg)
|
|
rt_err_t rt_event_control(rt_event_t event, int cmd, void *arg)
|
|
{
|
|
{
|
|
- rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
RT_ASSERT(event != RT_NULL);
|
|
RT_ASSERT(event != RT_NULL);
|
|
@@ -1993,7 +1993,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
rt_int32_t timeout)
|
|
rt_int32_t timeout)
|
|
{
|
|
{
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
rt_uint32_t tick_delta;
|
|
rt_uint32_t tick_delta;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -2011,12 +2011,12 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mb->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mb->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* for non-blocking call */
|
|
/* for non-blocking call */
|
|
if (mb->entry == mb->size && timeout == 0)
|
|
if (mb->entry == mb->size && timeout == 0)
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2030,7 +2030,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
if (timeout == 0)
|
|
if (timeout == 0)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
@@ -2057,7 +2057,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* re-schedule */
|
|
/* re-schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -2070,7 +2070,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
}
|
|
}
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
if (timeout > 0)
|
|
if (timeout > 0)
|
|
@@ -2096,7 +2096,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2106,7 +2106,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
_ipc_list_resume(&(mb->parent.suspend_thread));
|
|
_ipc_list_resume(&(mb->parent.suspend_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
rt_schedule();
|
|
rt_schedule();
|
|
|
|
|
|
@@ -2114,7 +2114,7 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return RT_EOK;
|
|
return RT_EOK;
|
|
}
|
|
}
|
|
@@ -2163,7 +2163,7 @@ RTM_EXPORT(rt_mb_send);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value)
|
|
rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value)
|
|
{
|
|
{
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
RT_ASSERT(mb != RT_NULL);
|
|
RT_ASSERT(mb != RT_NULL);
|
|
@@ -2172,11 +2172,11 @@ rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value)
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mb->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mb->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
if (mb->entry == mb->size)
|
|
if (mb->entry == mb->size)
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2202,7 +2202,7 @@ rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value)
|
|
_ipc_list_resume(&(mb->parent.suspend_thread));
|
|
_ipc_list_resume(&(mb->parent.suspend_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
rt_schedule();
|
|
rt_schedule();
|
|
|
|
|
|
@@ -2210,7 +2210,7 @@ rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return RT_EOK;
|
|
return RT_EOK;
|
|
}
|
|
}
|
|
@@ -2238,7 +2238,7 @@ RTM_EXPORT(rt_mb_urgent);
|
|
rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
{
|
|
{
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
rt_uint32_t tick_delta;
|
|
rt_uint32_t tick_delta;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -2256,12 +2256,12 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mb->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mb->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* for non-blocking call */
|
|
/* for non-blocking call */
|
|
if (mb->entry == 0 && timeout == 0)
|
|
if (mb->entry == 0 && timeout == 0)
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_ETIMEOUT;
|
|
return -RT_ETIMEOUT;
|
|
}
|
|
}
|
|
@@ -2276,7 +2276,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
if (timeout == 0)
|
|
if (timeout == 0)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
thread->error = -RT_ETIMEOUT;
|
|
thread->error = -RT_ETIMEOUT;
|
|
|
|
|
|
@@ -2305,7 +2305,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* re-schedule */
|
|
/* re-schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -2318,7 +2318,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
}
|
|
}
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
if (timeout > 0)
|
|
if (timeout > 0)
|
|
@@ -2350,7 +2350,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
_ipc_list_resume(&(mb->suspend_sender_thread));
|
|
_ipc_list_resume(&(mb->suspend_sender_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mb->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mb->parent.parent)));
|
|
|
|
|
|
@@ -2360,7 +2360,7 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mb->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mb->parent.parent)));
|
|
|
|
|
|
@@ -2385,7 +2385,7 @@ RTM_EXPORT(rt_mb_recv);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mb_control(rt_mailbox_t mb, int cmd, void *arg)
|
|
rt_err_t rt_mb_control(rt_mailbox_t mb, int cmd, void *arg)
|
|
{
|
|
{
|
|
- rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
RT_ASSERT(mb != RT_NULL);
|
|
RT_ASSERT(mb != RT_NULL);
|
|
@@ -2744,7 +2744,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
rt_size_t size,
|
|
rt_size_t size,
|
|
rt_int32_t timeout)
|
|
rt_int32_t timeout)
|
|
{
|
|
{
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_mq_message *msg;
|
|
struct rt_mq_message *msg;
|
|
rt_uint32_t tick_delta;
|
|
rt_uint32_t tick_delta;
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
@@ -2770,7 +2770,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mq->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mq->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* get a free list, there must be an empty item */
|
|
/* get a free list, there must be an empty item */
|
|
msg = (struct rt_mq_message *)mq->msg_queue_free;
|
|
msg = (struct rt_mq_message *)mq->msg_queue_free;
|
|
@@ -2778,7 +2778,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
if (msg == RT_NULL && timeout == 0)
|
|
if (msg == RT_NULL && timeout == 0)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
@@ -2793,7 +2793,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
if (timeout == 0)
|
|
if (timeout == 0)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
@@ -2820,7 +2820,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* re-schedule */
|
|
/* re-schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -2833,7 +2833,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
if (timeout > 0)
|
|
if (timeout > 0)
|
|
@@ -2849,7 +2849,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
mq->msg_queue_free = msg->next;
|
|
mq->msg_queue_free = msg->next;
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* the msg is the new tailer of list, the next shall be NULL */
|
|
/* the msg is the new tailer of list, the next shall be NULL */
|
|
msg->next = RT_NULL;
|
|
msg->next = RT_NULL;
|
|
@@ -2857,7 +2857,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
rt_memcpy(msg + 1, buffer, size);
|
|
rt_memcpy(msg + 1, buffer, size);
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
/* link msg to message queue */
|
|
/* link msg to message queue */
|
|
if (mq->msg_queue_tail != RT_NULL)
|
|
if (mq->msg_queue_tail != RT_NULL)
|
|
{
|
|
{
|
|
@@ -2878,7 +2878,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2888,7 +2888,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
_ipc_list_resume(&(mq->parent.suspend_thread));
|
|
_ipc_list_resume(&(mq->parent.suspend_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
rt_schedule();
|
|
rt_schedule();
|
|
|
|
|
|
@@ -2896,7 +2896,7 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return RT_EOK;
|
|
return RT_EOK;
|
|
}
|
|
}
|
|
@@ -2952,7 +2952,7 @@ RTM_EXPORT(rt_mq_send);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
{
|
|
{
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_mq_message *msg;
|
|
struct rt_mq_message *msg;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|
|
@@ -2968,7 +2968,7 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mq->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_put_hook, (&(mq->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* get a free list, there must be an empty item */
|
|
/* get a free list, there must be an empty item */
|
|
msg = (struct rt_mq_message *)mq->msg_queue_free;
|
|
msg = (struct rt_mq_message *)mq->msg_queue_free;
|
|
@@ -2976,7 +2976,7 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
if (msg == RT_NULL)
|
|
if (msg == RT_NULL)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_EFULL;
|
|
return -RT_EFULL;
|
|
}
|
|
}
|
|
@@ -2984,13 +2984,13 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
mq->msg_queue_free = msg->next;
|
|
mq->msg_queue_free = msg->next;
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* copy buffer */
|
|
/* copy buffer */
|
|
rt_memcpy(msg + 1, buffer, size);
|
|
rt_memcpy(msg + 1, buffer, size);
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* link msg to the beginning of message queue */
|
|
/* link msg to the beginning of message queue */
|
|
msg->next = (struct rt_mq_message *)mq->msg_queue_head;
|
|
msg->next = (struct rt_mq_message *)mq->msg_queue_head;
|
|
@@ -3007,7 +3007,7 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp); /* enable interrupt */
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level); /* enable interrupt */
|
|
return -RT_EFULL; /* value overflowed */
|
|
return -RT_EFULL; /* value overflowed */
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3017,7 +3017,7 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
_ipc_list_resume(&(mq->parent.suspend_thread));
|
|
_ipc_list_resume(&(mq->parent.suspend_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
rt_schedule();
|
|
rt_schedule();
|
|
|
|
|
|
@@ -3025,7 +3025,7 @@ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return RT_EOK;
|
|
return RT_EOK;
|
|
}
|
|
}
|
|
@@ -3064,7 +3064,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
rt_int32_t timeout)
|
|
rt_int32_t timeout)
|
|
{
|
|
{
|
|
struct rt_thread *thread;
|
|
struct rt_thread *thread;
|
|
- register rt_ubase_t temp;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_mq_message *msg;
|
|
struct rt_mq_message *msg;
|
|
rt_uint32_t tick_delta;
|
|
rt_uint32_t tick_delta;
|
|
|
|
|
|
@@ -3084,12 +3084,12 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mq->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_trytake_hook, (&(mq->parent.parent)));
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* for non-blocking call */
|
|
/* for non-blocking call */
|
|
if (mq->entry == 0 && timeout == 0)
|
|
if (mq->entry == 0 && timeout == 0)
|
|
{
|
|
{
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
return -RT_ETIMEOUT;
|
|
return -RT_ETIMEOUT;
|
|
}
|
|
}
|
|
@@ -3104,7 +3104,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
if (timeout == 0)
|
|
if (timeout == 0)
|
|
{
|
|
{
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
thread->error = -RT_ETIMEOUT;
|
|
thread->error = -RT_ETIMEOUT;
|
|
|
|
|
|
@@ -3133,7 +3133,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* re-schedule */
|
|
/* re-schedule */
|
|
rt_schedule();
|
|
rt_schedule();
|
|
@@ -3146,7 +3146,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
|
|
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
/* if it's not waiting forever and then re-calculate timeout tick */
|
|
if (timeout > 0)
|
|
if (timeout > 0)
|
|
@@ -3174,13 +3174,13 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* copy message */
|
|
/* copy message */
|
|
rt_memcpy(buffer, msg + 1, size > mq->msg_size ? mq->msg_size : size);
|
|
rt_memcpy(buffer, msg + 1, size > mq->msg_size ? mq->msg_size : size);
|
|
|
|
|
|
/* disable interrupt */
|
|
/* disable interrupt */
|
|
- temp = rt_hw_interrupt_disable();
|
|
|
|
|
|
+ level = rt_hw_interrupt_disable();
|
|
/* put message to free list */
|
|
/* put message to free list */
|
|
msg->next = (struct rt_mq_message *)mq->msg_queue_free;
|
|
msg->next = (struct rt_mq_message *)mq->msg_queue_free;
|
|
mq->msg_queue_free = msg;
|
|
mq->msg_queue_free = msg;
|
|
@@ -3191,7 +3191,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
_ipc_list_resume(&(mq->suspend_sender_thread));
|
|
_ipc_list_resume(&(mq->suspend_sender_thread));
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mq->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mq->parent.parent)));
|
|
|
|
|
|
@@ -3201,7 +3201,7 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
|
|
}
|
|
}
|
|
|
|
|
|
/* enable interrupt */
|
|
/* enable interrupt */
|
|
- rt_hw_interrupt_enable(temp);
|
|
|
|
|
|
+ rt_hw_interrupt_enable(level);
|
|
|
|
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mq->parent.parent)));
|
|
RT_OBJECT_HOOK_CALL(rt_object_take_hook, (&(mq->parent.parent)));
|
|
|
|
|
|
@@ -3226,7 +3226,7 @@ RTM_EXPORT(rt_mq_recv);
|
|
*/
|
|
*/
|
|
rt_err_t rt_mq_control(rt_mq_t mq, int cmd, void *arg)
|
|
rt_err_t rt_mq_control(rt_mq_t mq, int cmd, void *arg)
|
|
{
|
|
{
|
|
- rt_ubase_t level;
|
|
|
|
|
|
+ rt_base_t level;
|
|
struct rt_mq_message *msg;
|
|
struct rt_mq_message *msg;
|
|
|
|
|
|
/* parameter check */
|
|
/* parameter check */
|