+ExGetExclusiveWaiterCount()
[reactos.git] / ntoskrnl / ex / resource.c
index d0cbb1f..9274c44 100644 (file)
@@ -53,6 +53,7 @@
 
 /* FUNCTIONS *****************************************************************/
 
+#ifndef LIBCAPTIVE
 
 BOOLEAN
 STDCALL
@@ -80,6 +81,8 @@ ExAcquireResourceExclusive (
    return(ExAcquireResourceExclusiveLite(Resource,Wait));
 }
 
+#endif /* LIBCAPTIVE */
+
 BOOLEAN
 STDCALL
 ExAcquireResourceExclusiveLite (
@@ -197,6 +200,7 @@ static BOOLEAN EiRemoveSharedOwner(PERESOURCE Resource,
    return(FALSE);
 }
 
+
 static BOOLEAN EiAddSharedOwner(PERESOURCE Resource)
 /*
  * FUNCTION: Adds the current thread to the shared owners of the resource
@@ -435,12 +439,19 @@ ExConvertExclusiveToSharedLite (
        KeReleaseSpinLock(&Resource->SpinLock, oldIrql);
        return;
      }
+#ifndef LIBCAPTIVE
    /* else, awake the waiters */
    KeReleaseSemaphore(Resource->SharedWaiters,0,oldWaiters,0);
    KeReleaseSpinLock(&Resource->SpinLock, oldIrql);
    DPRINT("ExConvertExclusiveToSharedLite() finished\n");
+#else /* !LIBCAPTIVE */
+   /* no waiters allower for libcaptive */
+   KeBugCheck(0);
+#endif /* LIBCAPTIVE */
 }
 
+#ifndef LIBCAPTIVE
+
 VOID
 STDCALL
 ExDisableResourceBoostLite (
@@ -450,6 +461,8 @@ ExDisableResourceBoostLite (
    Resource->Flag |= ResourceDisableBoost;
 }
 
+#endif /* LIBCAPTIVE */
+
 ULONG
 STDCALL
 ExGetExclusiveWaiterCount (
@@ -459,6 +472,7 @@ ExGetExclusiveWaiterCount (
   return(Resource->NumberOfExclusiveWaiters);
 }
 
+
 BOOLEAN
 STDCALL
 ExAcquireSharedStarveExclusive (
@@ -531,6 +545,8 @@ ExAcquireSharedStarveExclusive (
    return(TRUE);
 }
 
+#ifndef LIBCAPTIVE
+
 BOOLEAN
 STDCALL
 ExAcquireSharedWaitForExclusive (
@@ -550,6 +566,8 @@ ExDeleteResource (
    return(ExDeleteResourceLite(Resource));
 }
 
+#endif /* LIBCAPTIVE */
+
 NTSTATUS
 STDCALL
 ExDeleteResourceLite (
@@ -563,6 +581,7 @@ ExDeleteResourceLite (
    return(STATUS_SUCCESS);;
 }
 
+
 ULONG
 STDCALL
 ExGetSharedWaiterCount (
@@ -572,6 +591,8 @@ ExGetSharedWaiterCount (
    return(Resource->NumberOfSharedWaiters);
 }
 
+#ifndef LIBCAPTIVE
+
 NTSTATUS
 STDCALL
 ExInitializeResource (
@@ -581,6 +602,8 @@ ExInitializeResource (
    return(ExInitializeResourceLite(Resource));
 }
 
+#endif /* LIBCAPTIVE */
+
 NTSTATUS STDCALL
 ExInitializeResourceLite (PERESOURCE   Resource)
 {
@@ -657,6 +680,7 @@ ExIsResourceAcquiredSharedLite (
    return(0);
 }
 
+
 VOID
 STDCALL
 ExReinitializeResourceLite (
@@ -681,6 +705,7 @@ ExReinitializeResourceLite (
    Resource->OwnerThreads[1].a.OwnerCount=0;
 }
 
+
 VOID
 FASTCALL
 ExReleaseResourceLite (
@@ -691,6 +716,8 @@ ExReleaseResourceLite (
                                        ExGetCurrentResourceThread()));
 }
 
+#ifndef LIBCAPTIVE
+
 VOID
 STDCALL
 ExReleaseResourceForThread (
@@ -701,6 +728,8 @@ ExReleaseResourceForThread (
   return(ExReleaseResourceForThreadLite(Resource,ResourceThreadId));
 }
 
+#endif /* LIBCAPTIVE */
+
 VOID
 STDCALL
 ExReleaseResourceForThreadLite (
@@ -756,11 +785,15 @@ ExReleaseResourceForThreadLite (
               Resource->NumberOfSharedWaiters);
        if (Resource->NumberOfSharedWaiters)
          {
+#ifndef LIBCAPTIVE
             DPRINT("Releasing semaphore\n");
             KeReleaseSemaphore(Resource->SharedWaiters,
                                IO_NO_INCREMENT,
                                Resource->NumberOfSharedWaiters,
                                FALSE);
+#else /* !LIBCAPTIVE */
+            KeBugCheck(0);
+#endif /* !LIBCAPTIVE */
          }
        KeReleaseSpinLock(&Resource->SpinLock, oldIrql);
        DPRINT("ExReleaseResourceForThreadLite() finished\n");
@@ -784,6 +817,7 @@ ExReleaseResourceForThreadLite (
    DPRINT("ExReleaseResourceForThreadLite() finished\n");
 }
 
+#ifndef LIBCAPTIVE
 
 VOID
 STDCALL
@@ -795,4 +829,6 @@ ExSetResourceOwnerPointer (
 
 }
 
+#endif /* LIBCAPTIVE */
+
 /* EOF */