@@ -484,6 +484,11 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
484484 /* parameter check */
485485 RT_ASSERT (sem != RT_NULL );
486486 RT_ASSERT (rt_object_get_type (& sem -> parent .parent ) == RT_Object_Class_Semaphore );
487+ /* current context checking */
488+ if (time != 0 )
489+ {
490+ RT_DEBUG_SCHEDULER_AVAILABLE ;
491+ }
487492
488493 RT_OBJECT_HOOK_CALL (rt_object_trytake_hook , (& (sem -> parent .parent )));
489494
@@ -514,9 +519,6 @@ rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time)
514519 }
515520 else
516521 {
517- /* current context checking */
518- RT_DEBUG_IN_THREAD_CONTEXT ;
519-
520522 /* semaphore is unavailable, push to suspend list */
521523 /* get current thread */
522524 thread = rt_thread_self ();
@@ -914,6 +916,12 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time)
914916 /* this function must not be used in interrupt even if time = 0 */
915917 RT_DEBUG_IN_THREAD_CONTEXT ;
916918
919+ /* current context checking */
920+ if (time != 0 )
921+ {
922+ RT_DEBUG_SCHEDULER_AVAILABLE ;
923+ }
924+
917925 /* parameter check */
918926 RT_ASSERT (mutex != RT_NULL );
919927 RT_ASSERT (rt_object_get_type (& mutex -> parent .parent ) == RT_Object_Class_Mutex );
@@ -1566,12 +1574,18 @@ rt_err_t rt_event_recv(rt_event_t event,
15661574 register rt_ubase_t level ;
15671575 register rt_base_t status ;
15681576
1569- RT_DEBUG_IN_THREAD_CONTEXT ;
1570-
15711577 /* parameter check */
15721578 RT_ASSERT (event != RT_NULL );
15731579 RT_ASSERT (rt_object_get_type (& event -> parent .parent ) == RT_Object_Class_Event );
15741580
1581+ /* current context checking */
1582+ RT_DEBUG_IN_THREAD_CONTEXT ;
1583+
1584+ if (timeout != 0 )
1585+ {
1586+ RT_DEBUG_SCHEDULER_AVAILABLE ;
1587+ }
1588+
15751589 if (set == 0 )
15761590 return - RT_ERROR ;
15771591
@@ -1993,6 +2007,12 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
19932007 RT_ASSERT (mb != RT_NULL );
19942008 RT_ASSERT (rt_object_get_type (& mb -> parent .parent ) == RT_Object_Class_MailBox );
19952009
2010+ /* current context checking */
2011+ if (timeout != 0 )
2012+ {
2013+ RT_DEBUG_SCHEDULER_AVAILABLE ;
2014+ }
2015+
19962016 /* initialize delta tick */
19972017 tick_delta = 0 ;
19982018 /* get current thread */
@@ -2025,7 +2045,6 @@ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
20252045 return - RT_EFULL ;
20262046 }
20272047
2028- RT_DEBUG_IN_THREAD_CONTEXT ;
20292048 /* suspend current thread */
20302049 _ipc_list_suspend (& (mb -> suspend_sender_thread ),
20312050 thread ,
@@ -2236,6 +2255,12 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
22362255 RT_ASSERT (mb != RT_NULL );
22372256 RT_ASSERT (rt_object_get_type (& mb -> parent .parent ) == RT_Object_Class_MailBox );
22382257
2258+ /* current context checking */
2259+ if (timeout != 0 )
2260+ {
2261+ RT_DEBUG_SCHEDULER_AVAILABLE ;
2262+ }
2263+
22392264 /* initialize delta tick */
22402265 tick_delta = 0 ;
22412266 /* get current thread */
@@ -2271,7 +2296,6 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)
22712296 return - RT_ETIMEOUT ;
22722297 }
22732298
2274- RT_DEBUG_IN_THREAD_CONTEXT ;
22752299 /* suspend current thread */
22762300 _ipc_list_suspend (& (mb -> parent .suspend_thread ),
22772301 thread ,
@@ -2744,6 +2768,12 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
27442768 RT_ASSERT (buffer != RT_NULL );
27452769 RT_ASSERT (size != 0 );
27462770
2771+ /* current context checking */
2772+ if (timeout != 0 )
2773+ {
2774+ RT_DEBUG_SCHEDULER_AVAILABLE ;
2775+ }
2776+
27472777 /* greater than one message size */
27482778 if (size > mq -> msg_size )
27492779 return - RT_ERROR ;
@@ -2784,7 +2814,6 @@ rt_err_t rt_mq_send_wait(rt_mq_t mq,
27842814 return - RT_EFULL ;
27852815 }
27862816
2787- RT_DEBUG_IN_THREAD_CONTEXT ;
27882817 /* suspend current thread */
27892818 _ipc_list_suspend (& (mq -> suspend_sender_thread ),
27902819 thread ,
@@ -3054,6 +3083,12 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
30543083 RT_ASSERT (buffer != RT_NULL );
30553084 RT_ASSERT (size != 0 );
30563085
3086+ /* current context checking */
3087+ if (timeout != 0 )
3088+ {
3089+ RT_DEBUG_SCHEDULER_AVAILABLE ;
3090+ }
3091+
30573092 /* initialize delta tick */
30583093 tick_delta = 0 ;
30593094 /* get current thread */
@@ -3074,8 +3109,6 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
30743109 /* message queue is empty */
30753110 while (mq -> entry == 0 )
30763111 {
3077- RT_DEBUG_IN_THREAD_CONTEXT ;
3078-
30793112 /* reset error number in thread */
30803113 thread -> error = RT_EOK ;
30813114
0 commit comments