openbsd-20030301
[openafs.git] / src / afs / OBSD / osi_sleep.c
index c411443..268ad7a 100644 (file)
@@ -86,13 +86,15 @@ int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok)
     endTime = osi_Time() + (ams / 1000);
     if (ahandle)
        ahandle->proc = (caddr_t) curproc;
+    AFS_ASSERT_GLOCK();
+    AFS_GUNLOCK();
     do {
        if (aintok) {
-           code = tsleep(&waitV, PCATCH | (PZERO+8), "afs_osi_Wait", timo);
+           code = tsleep(&waitV, PCATCH | PVFS, "afs_osi_Wait", timo);
            if (code)   /* if interrupted, return EINTR */
                code = EINTR;
        } else
-           tsleep(&waitV, (PZERO-3), "afs_osi_Wait", timo);
+           tsleep(&waitV, PVFS, "afs_osi_Wait", timo);
 
        /* if we were cancelled, quit now */
        if (ahandle && (ahandle->proc == NULL)) {
@@ -100,17 +102,24 @@ int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok)
            break;
        }
     } while (osi_Time() < endTime);
+    AFS_GLOCK();
     return code;
 }
 
 void afs_osi_Sleep(void *event)
 {
+    AFS_ASSERT_GLOCK();
+    AFS_GUNLOCK();
     tsleep(event, PVFS, "afs", 0);
+    AFS_GLOCK();
 }
 
 int afs_osi_SleepSig(void *event)
 {
+    AFS_ASSERT_GLOCK();
+    AFS_GUNLOCK();
     tsleep(event, PVFS, "afs", 0);
+    AFS_GLOCK();
     return 0;
 }