X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fafs%2FOBSD%2Fosi_sleep.c;h=f22922f802eb5d983ab7ca08612ded8029db50f8;hp=4a796d480cf64bf8900d6dca1fc31a5c4f372e3d;hb=38136f03cf9043ec98d83653f4fddf5a02e48a2a;hpb=58c34e103c2772ff3791dcca93e0b75e66d4b189 diff --git a/src/afs/OBSD/osi_sleep.c b/src/afs/OBSD/osi_sleep.c index 4a796d4..f22922f 100644 --- a/src/afs/OBSD/osi_sleep.c +++ b/src/afs/OBSD/osi_sleep.c @@ -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 #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,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; }