openbsd-20021119
[openafs.git] / src / afs / OBSD / osi_sleep.c
index f47ea90..f22922f 100644 (file)
@@ -1,4 +1,38 @@
 /*
+ * $Id$
+ */
+
+/*
+copyright 2002
+the regents of the university of michigan
+all rights reserved
+
+permission is granted to use, copy, create derivative works 
+and redistribute this software and such derivative works 
+for any purpose, so long as the name of the university of 
+michigan is not used in any advertising or publicity 
+pertaining to the use or distribution of this software 
+without specific, written prior authorization.  if the 
+above copyright notice or any other identification of the 
+university of michigan is included in any copy of any 
+portion of this software, then the disclaimer below must 
+also be included.
+
+this software is provided as is, without representation 
+from the university of michigan as to its fitness for any 
+purpose, and without warranty by the university of 
+michigan of any kind, either express or implied, including 
+without limitation the implied warranties of 
+merchantability and fitness for a particular purpose. the 
+regents of the university of michigan shall not be liable 
+for any damages, including special, indirect, incidental, or 
+consequential damages, with respect to any claim arising 
+out of or in connection with the use of the software, even 
+if it has been or is hereafter advised of the possibility of 
+such damages.
+*/
+
+/*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
  *
@@ -7,7 +41,6 @@
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-
 #include <afsconfig.h>
 #include "afs/param.h"
 
@@ -53,6 +86,8 @@ 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);
@@ -67,11 +102,29 @@ 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_osi_Sleep(event);
+    AFS_ASSERT_GLOCK();
+    AFS_GUNLOCK();
+    tsleep(event, PVFS, "afs", 0);
+    AFS_GLOCK();
     return 0;
 }
+
+int afs_osi_Wakeup(void *event)
+{
+    wakeup(event);
+    return 1;
+}