int cond_timedwait(cond_t *cond, mutex_t *mutex, timestruc_t *abstime);
cond_timedwait automatically releases the mutex, and waits on the condition variable cond. When the condition is signaled or the time expires, cond_timedwait reacquires the mutex and returns to the caller.
What if after time expires, the mutex is locked by some other process? in that case cond_timedwait will not be able to re-acquire the mutex?