linux-note-we-use-interruptible-sleeps-in-non-compliant-manner-20020731

based on discussion with David Howells of RedHat
This commit is contained in:
Derrick Brashear 2002-07-31 22:54:41 +00:00
parent 6c9fd25ae7
commit f063c0db21
2 changed files with 14 additions and 6 deletions

View File

@ -203,7 +203,13 @@ int afs_osi_SleepSig(char *event)
return retval; return retval;
} }
/* afs_osi_Sleep -- waits for an event to be notified, ignoring signals. */ /* afs_osi_Sleep -- waits for an event to be notified, ignoring signals.
* - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE
* can wake up, even if all signals are blocked
* - TODO: handle signals correctly by passing an indication back to the
* caller that the wait has been interrupted and the stack should be cleaned
* up preparatory to signal delivery
*/
void afs_osi_Sleep(char *event) void afs_osi_Sleep(char *event)
{ {
sigset_t saved_set; sigset_t saved_set;

View File

@ -59,11 +59,13 @@ void afs_mutex_exit(afs_kmutex_t *l)
up(&l->sem); up(&l->sem);
} }
/* /* CV_WAIT and CV_TIMEDWAIT sleep until the specified event occurs, or, in the
* CV_WAIT and CV_TIMEDWAIT rely on the fact that the Linux kernel has * case of CV_TIMEDWAIT, until the specified timeout occurs.
* a global lock. Thus we can safely drop our locks before calling the * - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE
* kernel sleep services. * can wake up, even if all signals are blocked
* Or not. * - TODO: handle signals correctly by passing an indication back to the
* caller that the wait has been interrupted and the stack should be cleaned
* up preparatory to signal delivery
*/ */
int afs_cv_wait(afs_kcondvar_t *cv, afs_kmutex_t *l, int sigok) int afs_cv_wait(afs_kcondvar_t *cv, afs_kmutex_t *l, int sigok)
{ {