File tree Expand file tree Collapse file tree 1 file changed +5
-11
lines changed
components/libc/posix/pthreads Expand file tree Collapse file tree 1 file changed +5
-11
lines changed Original file line number Diff line number Diff line change @@ -367,30 +367,27 @@ rt_err_t _pthread_cond_timedwait(pthread_cond_t *cond,
367
367
}
368
368
369
369
{
370
- register rt_base_t temp ;
371
370
struct rt_thread * thread ;
372
371
373
372
/* parameter check */
374
373
RT_ASSERT (sem != RT_NULL );
375
374
RT_ASSERT (rt_object_get_type (& sem -> parent .parent ) == RT_Object_Class_Semaphore );
376
375
377
- /* disable interrupt */
378
- temp = rt_hw_interrupt_disable ();
376
+ rt_enter_critical ();
379
377
380
378
if (sem -> value > 0 )
381
379
{
382
380
/* semaphore is available */
383
381
sem -> value -- ;
384
382
385
- /* enable interrupt */
386
- rt_hw_interrupt_enable (temp );
383
+ rt_exit_critical ();
387
384
}
388
385
else
389
386
{
390
387
/* no waiting, return with timeout */
391
388
if (time == 0 )
392
389
{
393
- rt_hw_interrupt_enable ( temp );
390
+ rt_exit_critical ( );
394
391
395
392
return - RT_ETIMEOUT ;
396
393
}
@@ -434,11 +431,8 @@ rt_err_t _pthread_cond_timedwait(pthread_cond_t *cond,
434
431
return - RT_ERROR ;
435
432
}
436
433
437
- /* enable interrupt */
438
- rt_hw_interrupt_enable (temp );
439
-
440
- /* do schedule */
441
- rt_schedule ();
434
+ /* exit critical and do schedule */
435
+ rt_exit_critical ();
442
436
443
437
result = thread -> error ;
444
438
You can’t perform that action at this time.
0 commit comments