Lines 374-381
check_suspend(struct pthread *curthread)
Link Here
|
374 |
*/ |
374 |
*/ |
375 |
curthread->critical_count++; |
375 |
curthread->critical_count++; |
376 |
THR_UMUTEX_LOCK(curthread, &(curthread)->lock); |
376 |
THR_UMUTEX_LOCK(curthread, &(curthread)->lock); |
377 |
while ((curthread->flags & (THR_FLAGS_NEED_SUSPEND | |
377 |
while ((curthread->flags & THR_FLAGS_NEED_SUSPEND) != 0) { |
378 |
THR_FLAGS_SUSPENDED)) == THR_FLAGS_NEED_SUSPEND) { |
|
|
379 |
curthread->cycle++; |
378 |
curthread->cycle++; |
380 |
cycle = curthread->cycle; |
379 |
cycle = curthread->cycle; |
381 |
|
380 |
|
Lines 392-398
check_suspend(struct pthread *curthread)
Link Here
|
392 |
THR_UMUTEX_UNLOCK(curthread, &(curthread)->lock); |
391 |
THR_UMUTEX_UNLOCK(curthread, &(curthread)->lock); |
393 |
_thr_umtx_wait_uint(&curthread->cycle, cycle, NULL, 0); |
392 |
_thr_umtx_wait_uint(&curthread->cycle, cycle, NULL, 0); |
394 |
THR_UMUTEX_LOCK(curthread, &(curthread)->lock); |
393 |
THR_UMUTEX_LOCK(curthread, &(curthread)->lock); |
395 |
curthread->flags &= ~THR_FLAGS_SUSPENDED; |
|
|
396 |
} |
394 |
} |
397 |
THR_UMUTEX_UNLOCK(curthread, &(curthread)->lock); |
395 |
THR_UMUTEX_UNLOCK(curthread, &(curthread)->lock); |
398 |
curthread->critical_count--; |
396 |
curthread->critical_count--; |