]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
osi-wakeup-return-zero-on-doing-a-wakeup-20021008
authorDerrick Brashear <shadow@dementia.org>
Wed, 9 Oct 2002 01:54:48 +0000 (01:54 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 9 Oct 2002 01:54:48 +0000 (01:54 +0000)
based on patch submitted by reuter@rzg.mpg.de, but i actually ported it
to all platforms.

13 files changed:
src/afs/AIX/osi_sleep.c
src/afs/DARWIN/osi_sleep.c
src/afs/DUX/osi_sleep.c
src/afs/FBSD/osi_sleep.c
src/afs/HPUX/osi_machdep.h
src/afs/HPUX/osi_sleep.c
src/afs/IRIX/osi_sleep.c
src/afs/LINUX/osi_sleep.c
src/afs/NBSD/osi_sleep.c
src/afs/SOLARIS/osi_sleep.c
src/afs/afs_dcache.c
src/afs/afs_prototypes.h
src/rx/rx_kernel.h

index 32f5ca85fc9b8e1629e88bb145d22b1fe47b3abd..1f225cf91904e750cfcb7484eb09e43d4d71a5ca 100644 (file)
@@ -200,14 +200,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        e_wakeup(&evp->cond);
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index de0444546d5e43c4912c70e08931a60953dc74dc..c0f881cc649334db5da8c305b2fb4e9a720df1a3 100644 (file)
@@ -199,10 +199,11 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
     struct afs_event *evp;
-    
+    int ret=1;
+
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
@@ -212,6 +213,8 @@ void afs_osi_Wakeup(void *event)
 #else
        thread_wakeup((event_t)event);
 #endif
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index 41718a169cc48275d35b227ca0e1b847e8c1c8a4..f90b598bacbd84df8e8b5bec5ac243a21719fdee 100644 (file)
@@ -178,14 +178,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
-
+    
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        thread_wakeup((vm_offset_t)(&evp->cond));
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index 8e8d86117e43a5e0b30844f6716ca4efbc972721..60a3f9b53090efc03b1c0169a6d7cab2edea6bc9 100644 (file)
@@ -180,14 +180,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        wakeup(event);
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index 24f1fef3533f069bbf97a8ce73e20c1ce92a788a..60853aeb1cd7d399a3b0d918a8c551b2d833d369 100644 (file)
@@ -83,7 +83,6 @@ extern void       afsHashRelease(tid_t key);
  */
 
 #define        afs_osi_Sleep(x)        sleep((caddr_t) x,PZERO-2)
-#define        afs_osi_Wakeup(x)       wakeup((caddr_t) x)
 #define        osi_NullHandle(x)       ((x)->proc == (caddr_t) 0)
 
 extern caddr_t kmem_alloc();
index 16828d0073e5566b9ba7a593927d274a1be1a54f..22394bff2750df58158b84938aee3fd181bb2f5d 100644 (file)
@@ -112,3 +112,9 @@ int afs_osi_SleepSig(void *event)
     afs_osi_Sleep(event);
     return 0;
 }
+
+int afs_osi_Wakeup(void *event)
+{
+    wakeup((caddr_t) event);
+    return 0;
+}
index 5e791fb193df0ceb804a1cae6e9adfc49e36f9d4..12bfbfae956a5462d47a83c2cfa8af1ffc27503f 100644 (file)
@@ -183,14 +183,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        cv_broadcast(&evp->cond);
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index f3de7c51eb778a15746a09725e6259d25a64bfff..3ac172e7f9d53a4930e33c5473142f6503c970d5 100644 (file)
@@ -271,17 +271,20 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=2;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (!evp)                          /* No sleepers */
-       return;
+       return 1;
 
     if (evp->refcount > 1) {
        evp->seq++;    
        wake_up(&evp->cond);
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index 503373a0b7c2ee00de59b9eff534cb72b661560d..a22ff85e6e40231b0b59b3e3e084504a58d77e12 100644 (file)
@@ -178,14 +178,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        thread_wakeup((vm_offset_t)(&evp->cond));
+       ret=0;
     }
     relevent(evp);
+    return ret;
 }
index 7f83ccc86529574456950319799d378389e8a016..5ea0c595c478951925b8d1bde82d04b0f851d23c 100644 (file)
@@ -185,14 +185,17 @@ static int osi_TimedSleep(char *event, afs_int32 ams, int aintok)
 }
 
 
-void afs_osi_Wakeup(void *event)
+int afs_osi_Wakeup(void *event)
 {
+    int ret=1;
     struct afs_event *evp;
 
     evp = afs_getevent(event);
     if (evp->refcount > 1) {
        evp->seq++;    
        cv_broadcast(&evp->cond);
+       ret=0;
     }
     relevent(evp);
+    return 0;
 }
index 4958865e5069302519977683e07e9fc4f6020d71..0499a9df7f4322d567599b8825ead433718ad070 100644 (file)
@@ -1405,16 +1405,12 @@ static int afs_UFSCacheFetchProc(register struct rx_call *acall,
            abase += tlen;
            length -= tlen;
            adc->validPos = abase;
-#ifdef AFS_AIX_ENV         
            if (afs_osi_Wakeup(&adc->validPos) == 0)
                afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAKE,
                           ICL_TYPE_STRING, __FILE__,
                           ICL_TYPE_INT32, __LINE__,
                           ICL_TYPE_POINTER, adc,
                           ICL_TYPE_INT32, adc->dflags);
-#else
-           afs_osi_Wakeup(&adc->validPos);
-#endif
        }
     } while (moredata);
     osi_FreeLargeSpace(tbuffer);
@@ -2024,16 +2020,12 @@ RetryLookup:
        tdc->validPos = Position;       /*  which is AFS_CHUNKBASE(abyte) */
        if (tdc->mflags & DFFetchReq) {
            tdc->mflags &= ~DFFetchReq;
-#ifdef AFS_AIX_ENV
            if (afs_osi_Wakeup(&tdc->validPos) == 0)
                afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAKE,
                       ICL_TYPE_STRING, __FILE__,
                       ICL_TYPE_INT32, __LINE__,
                       ICL_TYPE_POINTER, tdc,
                       ICL_TYPE_INT32, tdc->dflags);
-#else
-           afs_osi_Wakeup(&tdc->validPos);
-#endif
        }
        tsmall = (struct tlocal1 *) osi_AllocLargeSpace(sizeof(struct tlocal1));
        setVcacheStatus = 0;
@@ -2339,16 +2331,12 @@ RetryLookup:
 #endif /* AFS_NOSTATS */
 
        tdc->dflags &= ~DFFetching;
-#ifdef AFS_AIX_ENV
        if (afs_osi_Wakeup(&tdc->validPos) == 0)
            afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAKE,
                       ICL_TYPE_STRING, __FILE__,
                       ICL_TYPE_INT32, __LINE__,
                       ICL_TYPE_POINTER, tdc,
                       ICL_TYPE_INT32, tdc->dflags);
-#else
-           afs_osi_Wakeup(&tdc->validPos);
-#endif
        if (avc->execsOrWriters == 0) tdc->f.states &= ~DWriting;
 
        /* now, if code != 0, we have an error and should punt.
index 79ff4a1b4964b99fc25c22cc22df190ffb7825db..fc763f4b142fc1d79556fadd20becf5617ce56ab 100644 (file)
@@ -456,7 +456,7 @@ extern void afs_osi_InitWaitHandle(struct afs_osi_WaitHandle *achandle);
 extern void afs_osi_CancelWait(struct afs_osi_WaitHandle *achandle);
 extern int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok);
 #ifndef afs_osi_Wakeup
-extern void afs_osi_Wakeup(void *event);
+extern int afs_osi_Wakeup(void *event);
 #endif
 #ifndef afs_osi_Sleep
 extern void afs_osi_Sleep(void *event);
index d0843d318c92675c29e36fe3154dd6e5d92606ce..e8e4e5228eb33ea22430ae03b7da6540191e7318 100644 (file)
@@ -25,27 +25,13 @@ typedef struct socket *osi_socket;
 #define        OSI_NULLSOCKET  ((osi_socket) 0)
 
 #if (!defined(AFS_GLOBAL_SUNLOCK) && !defined(RX_ENABLE_LOCKS))
-#define RX_KERNEL_TRACE 1
-#ifdef RX_KERNEL_TRACE
 #include "../afs/icl.h"
 #include "../afs/afs_trace.h"
-#ifdef AFS_AIX_ENV
+#endif
 #define osi_rxSleep(a)  afs_Trace2(afs_iclSetp, CM_TRACE_RXSLEEP, \
         ICL_TYPE_STRING, __FILE__, ICL_TYPE_INT32, __LINE__); afs_osi_Sleep(a)
 #define osi_rxWakeup(a) if (afs_osi_Wakeup(a) == 0) afs_Trace2(afs_iclSetp, \
         CM_TRACE_RXWAKE, ICL_TYPE_STRING, __FILE__, ICL_TYPE_INT32, __LINE__)
-#else
-#define osi_rxSleep(a)  afs_osi_Sleep(a)
-#define osi_rxWakeup(a) afs_osi_Wakeup(a)
-#endif
-#else /* RX_KERNEL_TRACE */
-#define        osi_rxSleep(a)  afs_osi_Sleep(a)
-#define        osi_rxWakeup(a) afs_osi_Wakeup(a)
-#endif /* RX_KERNEL_TRACE */
-#else /* AFS_GLOBAL_SUNLOCK || RX_ENABLE_LOCKS */
-#define        osi_rxSleep(a)  afs_osi_Sleep(a)
-#define        osi_rxWakeup(a) afs_osi_Wakeup(a)
-#endif
 
 extern int osi_utoa(char *buf, size_t len, unsigned long val);
 #define osi_Assert(e) (void)((e) || (osi_AssertFailK(#e, __FILE__, __LINE__), 0))