[ros-diffs] [cwittich] 27391: fixed IopLockFileObject

cwittich at svn.reactos.org cwittich at svn.reactos.org
Wed Jul 4 19:05:31 CEST 2007


Author: cwittich
Date: Wed Jul  4 21:05:31 2007
New Revision: 27391

URL: http://svn.reactos.org/svn/reactos?rev=27391&view=rev
Log:
fixed IopLockFileObject

Modified:
    trunk/reactos/ntoskrnl/include/internal/io_x.h

Modified: trunk/reactos/ntoskrnl/include/internal/io_x.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/io_x.h?rev=27391&r1=27390&r2=27391&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/io_x.h (original)
+++ trunk/reactos/ntoskrnl/include/internal/io_x.h Wed Jul  4 21:05:31 2007
@@ -10,12 +10,13 @@
 static __inline
 IopLockFileObject(IN PFILE_OBJECT FileObject)
 {
-    /* Lock the FO and check for contention */
-    if (InterlockedExchange((PLONG)&FileObject->Busy, TRUE))
+	/* Lock the FO and check for contention */
+    InterlockedIncrement((PLONG)&FileObject->Waiters);
+    while (InterlockedCompareExchange((PLONG)&FileObject->Busy, TRUE, FALSE) != FALSE)
     {
-        /* FIXME: Implement contention case */
-        KEBUGCHECK(0);
+        /* FIXME - pause for a little while? */
     }
+    InterlockedDecrement((PLONG)&FileObject->Waiters);
 }
 
 VOID




More information about the Ros-diffs mailing list