3e13ed2400
This caused a problem when the thread calling sem_wait() was very low priority. When it received the count, there may be higher priority threads "hogging" the CPU that prevent the lower priority task from running and, as a result, the sem_addholder() may be delayed indefinitely. The fix was to have sem_post() call sem_addholder() just before restarting the thread waiting for the semaphore count. This problem was noted by Benix Vincent who also suggested the solution. |
||
---|---|---|
.. | ||
Make.defs | ||
sem_destroy.c | ||
sem_holder.c | ||
sem_initialize.c | ||
sem_post.c | ||
sem_recover.c | ||
sem_reset.c | ||
sem_tickwait.c | ||
sem_timedwait.c | ||
sem_timeout.c | ||
sem_trywait.c | ||
sem_wait.c | ||
sem_waitirq.c | ||
semaphore.h | ||
spinlock.c |