Reorganised cache segment data structure
authorDavid Welch <welch@cwcom.net>
Mon, 9 Apr 2001 02:45:04 +0000 (02:45 +0000)
committerDavid Welch <welch@cwcom.net>
Mon, 9 Apr 2001 02:45:04 +0000 (02:45 +0000)
svn path=/trunk/; revision=1779

15 files changed:
reactos/include/ddk/cctypes.h
reactos/include/ddk/ntifs.h
reactos/ntoskrnl/Makefile
reactos/ntoskrnl/cc/cacheman.c
reactos/ntoskrnl/cc/view.c
reactos/ntoskrnl/include/internal/cc.h
reactos/ntoskrnl/io/cancel.c
reactos/ntoskrnl/io/error.c
reactos/ntoskrnl/io/irp.c
reactos/ntoskrnl/kd/kdebug.c
reactos/ntoskrnl/ke/apc.c
reactos/ntoskrnl/ke/i386/exp.c
reactos/ntoskrnl/ke/mutex.c
reactos/ntoskrnl/mm/iospace.c
reactos/ntoskrnl/mm/mm.c

index 2307002..11717d1 100644 (file)
@@ -77,7 +77,7 @@ typedef struct _REACTOS_COMMON_FCB_HEADER
 {
   CSHORT NodeTypeCode;
   CSHORT NodeByteSize;
-  PBCB Bcb;
+  struct _BCB* Bcb;
   LARGE_INTEGER AllocationSize;
   LARGE_INTEGER FileSize;
   LARGE_INTEGER ValidDataLength;
index 18b567a..72f542a 100644 (file)
@@ -1,47 +1,35 @@
 #ifndef __INCLUDE_DDK_NTIFS_H
 #define __INCLUDE_DDK_NTIFS_H
 
-typedef struct _BCB
-{
-  LIST_ENTRY CacheSegmentListHead;
-  PFILE_OBJECT FileObject;
-  KSPIN_LOCK BcbLock;
-  ULONG CacheSegmentSize;
-} BCB, *PBCB;
+struct _BCB;
+
+typedef struct _BCB* PBCB;
 
 struct _MEMORY_AREA;
 
-typedef struct _CACHE_SEGMENT
-{
-  PVOID BaseAddress;
-  struct _MEMORY_AREA* MemoryArea;
-  BOOLEAN Valid;
-  LIST_ENTRY ListEntry;
-  ULONG FileOffset;
-  KEVENT Lock;
-  ULONG ReferenceCount;
-  PBCB Bcb;
-} CACHE_SEGMENT, *PCACHE_SEGMENT;
+struct _CACHE_SEGMENT;
+
+typedef struct _CACHE_SEGMENT* PCACHE_SEGMENT;
 
 NTSTATUS STDCALL
-CcFlushCacheSegment (PCACHE_SEGMENT    CacheSeg);
+CcFlushCacheSegment (struct _CACHE_SEGMENT*    CacheSeg);
 NTSTATUS STDCALL
-CcReleaseCacheSegment (PBCB            Bcb,
-                   PCACHE_SEGMENT      CacheSeg,
+CcReleaseCacheSegment (struct _BCB*            Bcb,
+                   struct _CACHE_SEGMENT*      CacheSeg,
                    BOOLEAN             Valid);
 NTSTATUS STDCALL
-CcRequestCacheSegment (PBCB            Bcb,
+CcRequestCacheSegment (struct _BCB*            Bcb,
                       ULONG            FileOffset,
                       PVOID* BaseAddress,
                       PBOOLEAN UptoDate,
-                      PCACHE_SEGMENT* CacheSeg);
+                      struct _CACHE_SEGMENT** CacheSeg);
 NTSTATUS STDCALL
 CcInitializeFileCache (PFILE_OBJECT    FileObject,
-                      PBCB* Bcb,
+                      struct _BCB** Bcb,
                       ULONG CacheSegmentSize);
 NTSTATUS STDCALL
 CcReleaseFileCache (PFILE_OBJECT       FileObject,
-                   PBCB                Bcb);
+                   struct _BCB*                Bcb);
 
 #include <ddk/cctypes.h>
 
index fe130cb..b43cc1a 100644 (file)
@@ -1,26 +1,49 @@
-# $Id: Makefile,v 1.29 2001/03/31 17:02:17 dwelch Exp $
+# $Id: Makefile,v 1.30 2001/04/09 02:45:03 dwelch Exp $
 #
 # ReactOS Operating System
 #
-PATH_TO_TOP = ..
-
 
+#
+# Path to the directory containing the root makefile
+#
+PATH_TO_TOP := ..
 
 #
 # Architecture to build for
 #
 ARCH := i386
 
-TARGETNAME = ntoskrnl
+#
+# Whether to compile in the kernel debugger
+#
+KDBG := 0
+
+#
+# Whether to compile for debugging
+#
+DBG := 1
+
+#
+#
+#
+ifeq ($(DBG), 1)
+CFLAGS_DBG := -g -DDBG
+else
+CFLAGS_DBG :=
+endif
+
+ifeq ($(KDBG), 1)
+CFLAGS_KDBG := -DKDBG
+else
+CFLAGS_KDBG :=
+endif
+
+TARGETNAME := ntoskrnl
 
 OBJECTS_PATH = objects
 
 ASFLAGS = -Iinclude
-CFLAGS = -Iinclude -D__NTOSKRNL__ -DDBG -g -Wall -Werror 
-# -DDBGPRINT_FILE_LOG
-#         -W -Wpointer-arith -Wconversion -Wstrict-prototypes -Wundef \
-#       -Wmissing-prototypes -Wshadow\
-#CFLAGS = -DDBGPRINT_FILE_LOG
+CFLAGS = -Iinclude -D__NTOSKRNL__ $(CFLAGS_DBG) $(CFLAGS_KDBG) -Wall -Werror 
 
 include $(PATH_TO_TOP)/rules.mak
 
index 637aa2c..820b139 100644 (file)
@@ -29,6 +29,7 @@
 /* INCLUDES *****************************************************************/
 
 #include <ddk/ntddk.h>
+#include <internal/cc.h>
 
 #include <internal/debug.h>
 
@@ -37,7 +38,7 @@
 NTSTATUS 
 CcInit(VOID)
 {
-   /* Nothing in here at the moment */
+  CcInitView();
    
-   return(STATUS_SUCCESS);
+  return(STATUS_SUCCESS);
 }
index d7ff32a..de4633a 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: view.c,v 1.23 2001/04/03 17:25:48 dwelch Exp $
+/* $Id: view.c,v 1.24 2001/04/09 02:45:03 dwelch Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -69,6 +69,9 @@
 #define TAG_CSEG  TAG('C', 'S', 'E', 'G')
 #define TAG_BCB   TAG('B', 'C', 'B', ' ')
 
+static LIST_ENTRY BcbListHead;
+static KSPIN_LOCK BcbListLock;
+
 /* FUNCTIONS *****************************************************************/
 
 NTSTATUS STDCALL 
@@ -122,7 +125,7 @@ CcGetCacheSegment(PBCB Bcb,
    current_entry = Bcb->CacheSegmentListHead.Flink;
    while (current_entry != &Bcb->CacheSegmentListHead)
      {
-       current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, ListEntry);
+       current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbListEntry);
        if (current->FileOffset <= FileOffset &&
            (current->FileOffset + Bcb->CacheSegmentSize) > FileOffset)
          {
@@ -162,7 +165,7 @@ CcGetCacheSegment(PBCB Bcb,
    current->Bcb = Bcb;
    KeInitializeEvent(&current->Lock, SynchronizationEvent, FALSE);
    current->ReferenceCount = 1;
-   InsertTailList(&Bcb->CacheSegmentListHead, &current->ListEntry);
+   InsertTailList(&Bcb->CacheSegmentListHead, &current->BcbListEntry);
    *UptoDate = current->Valid;
    *BaseAddress = current->BaseAddress;
    *CacheSeg = current;
@@ -246,7 +249,8 @@ CcReleaseFileCache(PFILE_OBJECT FileObject, PBCB Bcb)
    current_entry = Bcb->CacheSegmentListHead.Flink;
    while (current_entry != &Bcb->CacheSegmentListHead)
      {
-       current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, ListEntry);
+       current = 
+         CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbListEntry);
        current_entry = current_entry->Flink;
        CcFreeCacheSegment(Bcb, current);
      }
@@ -339,5 +343,11 @@ CcMdlReadComplete (IN      PFILE_OBJECT    FileObject,
                         DeviceObject);
 }
 
+VOID
+CcInitView(VOID)
+{
+  InitializeListHead(&BcbListHead);
+  KeInitializeSpinLock(&BcbListLock);
+}
 
 /* EOF */
index 9acb70a..86aeb84 100644 (file)
@@ -1,7 +1,29 @@
 #ifndef __INCLUDE_INTERNAL_CC_H
 #define __INCLUDE_INTERNAL_CC_H
-/* $Id: cc.h,v 1.3 2001/04/03 17:25:48 dwelch Exp $ */
+/* $Id: cc.h,v 1.4 2001/04/09 02:45:03 dwelch Exp $ */
 #include <ddk/ntifs.h>
+
+typedef struct _BCB
+{
+  LIST_ENTRY CacheSegmentListHead;
+  PFILE_OBJECT FileObject;
+  KSPIN_LOCK BcbLock;
+  ULONG CacheSegmentSize;
+} BCB;
+
+typedef struct _CACHE_SEGMENT
+{
+  PVOID BaseAddress;
+  struct _MEMORY_AREA* MemoryArea;
+  BOOLEAN Valid;
+  LIST_ENTRY BcbListEntry;
+  LIST_ENTRY DirtySegmentListEntry;
+  ULONG FileOffset;
+  KEVENT Lock;
+  ULONG ReferenceCount;
+  PBCB Bcb;
+} CACHE_SEGMENT;
+
 VOID STDCALL
 CcMdlReadCompleteDev (IN       PMDL            MdlChain,
                      IN        PDEVICE_OBJECT  DeviceObject);
@@ -12,4 +34,7 @@ CcGetCacheSegment(PBCB Bcb,
                  PVOID* BaseAddress,
                  PBOOLEAN UptoDate,
                  PCACHE_SEGMENT* CacheSeg);
+VOID
+CcInitView(VOID);
+
 #endif
index 47350e8..56d85ad 100644 (file)
@@ -1,6 +1,23 @@
-/* $Id: cancel.c,v 1.5 2000/06/12 14:57:10 ekohl Exp $
+/*
+ *  ReactOS kernel
+ *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: cancel.c,v 1.6 2001/04/09 02:45:03 dwelch Exp $
  *
- * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/io/cancel.c
  * PURPOSE:         Cancel routine
 
 /* GLOBALS *******************************************************************/
 
-static KSPIN_LOCK CancelSpinLock = {0,};
+static KSPIN_LOCK CancelSpinLock;
 
 /* FUNCTIONS *****************************************************************/
 
-NTSTATUS
-STDCALL
-NtCancelIoFile (
-       IN      HANDLE                  FileHandle,
-       OUT     PIO_STATUS_BLOCK        IoStatusBlock
-       )
+NTSTATUS STDCALL
+NtCancelIoFile (IN     HANDLE                  FileHandle,
+               OUT     PIO_STATUS_BLOCK        IoStatusBlock)
 {
-       UNIMPLEMENTED;
+  UNIMPLEMENTED;
 }
 
-BOOLEAN STDCALL IoCancelIrp(PIRP Irp)
+BOOLEAN STDCALL 
+IoCancelIrp(PIRP Irp)
 {
    KIRQL oldlvl;
    
@@ -49,17 +64,20 @@ BOOLEAN STDCALL IoCancelIrp(PIRP Irp)
    return(TRUE);
 }
 
-VOID IoInitCancelHandling(VOID)
+VOID 
+IoInitCancelHandling(VOID)
 {
    KeInitializeSpinLock(&CancelSpinLock);
 }
 
-VOID STDCALL IoAcquireCancelSpinLock(PKIRQL Irql)
+VOID STDCALL 
+IoAcquireCancelSpinLock(PKIRQL Irql)
 {
    KeAcquireSpinLock(&CancelSpinLock,Irql);
 }
 
-VOID STDCALL IoReleaseCancelSpinLock(KIRQL Irql)
+VOID STDCALL 
+IoReleaseCancelSpinLock(KIRQL Irql)
 {
    KeReleaseSpinLock(&CancelSpinLock,Irql);
 }
index 6e3303e..a8b9c46 100644 (file)
@@ -1,9 +1,26 @@
-/* $Id: error.c,v 1.5 2000/12/10 19:15:45 ekohl Exp $
+/*
+ *  ReactOS kernel
+ *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: error.c,v 1.6 2001/04/09 02:45:03 dwelch Exp $
  *
- * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
- * FILE:            kernel/base/bug.c
- * PURPOSE:         Graceful system shutdown if a bug is detected
+ * FILE:            ntoskrnl/io/error.c
+ * PURPOSE:         Handle media errors
  * PROGRAMMER:      David Welch (welch@mcmail.com)
  * UPDATE HISTORY:
  *                  Created 22/05/98
 /* FUNCTIONS *****************************************************************/
 
 
-VOID STDCALL IoRaiseHardError(PIRP Irp,
-                             PVPB Vpb,
-                             PDEVICE_OBJECT RealDeviceObject)
+VOID STDCALL 
+IoRaiseHardError(PIRP Irp,
+                PVPB Vpb,
+                PDEVICE_OBJECT RealDeviceObject)
 {
    UNIMPLEMENTED;
 }
 
-BOOLEAN IoIsTotalDeviceFailure(NTSTATUS Status)
+BOOLEAN 
+IoIsTotalDeviceFailure(NTSTATUS Status)
 {
    UNIMPLEMENTED;
 }
 
-BOOLEAN STDCALL IoRaiseInformationalHardError(NTSTATUS ErrorStatus,
-                                             PUNICODE_STRING String,
-                                             PKTHREAD Thread)
+BOOLEAN STDCALL 
+IoRaiseInformationalHardError(NTSTATUS ErrorStatus,
+                             PUNICODE_STRING String,
+                             PKTHREAD Thread)
 {
    UNIMPLEMENTED;
 }
index 4b6d530..5ae6a72 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: irp.c,v 1.35 2001/04/06 04:29:16 phreak Exp $
+/* $Id: irp.c,v 1.36 2001/04/09 02:45:04 dwelch Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -205,7 +205,6 @@ IofCompleteRequest (PIRP Irp, CCHAR PriorityBoost)
 {
    unsigned int i;
    NTSTATUS Status;
-   PKTHREAD Thread;
    
    DPRINT("IoCompleteRequest(Irp %x, PriorityBoost %d) Event %x THread %x\n",
           Irp,PriorityBoost, Irp->UserEvent, PsGetCurrentThread());
@@ -228,12 +227,11 @@ IofCompleteRequest (PIRP Irp, CCHAR PriorityBoost)
             Irp->PendingReturned = TRUE;
          }
      }
-   Thread = &Irp->Tail.Overlay.Thread->Tcb;
-   if ( Irp->PendingReturned && Thread != KeGetCurrentThread() )
+   if (Irp->PendingReturned)
      {
        DPRINT("Dispatching APC\n");
        KeInitializeApc(&Irp->Tail.Apc,
-                       Thread,
+                       &Irp->Tail.Overlay.Thread->Tcb,
                        0,
                        IopCompleteRequest,
                        NULL,
index 52404eb..73ca38c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: kdebug.c,v 1.21 2001/03/07 16:48:42 dwelch Exp $
+/* $Id: kdebug.c,v 1.22 2001/04/09 02:45:04 dwelch Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -340,26 +340,64 @@ KeEnterKernelDebugger (VOID)
 VOID STDCALL
 KdSystemDebugControl(ULONG Code)
 {
+  /* A - Dump the entire contents of the non-paged pool. */
   if (Code == 0)
     {
       MiDebugDumpNonPagedPool(FALSE);
     }
+  /* B - Bug check the system. */
   else if (Code == 1)
     {
       KeBugCheck(0);
     }
+  /* 
+   * C -  Dump statistics about the distribution of tagged blocks in 
+   *      the non-paged pool.
+   */
   else if (Code == 2)
     {
       MiDebugDumpNonPagedPoolStats(FALSE);
     }
+  /* 
+   * D - Dump the blocks created in the non-paged pool since the last
+   * SysRq + D and SysRq + E command.
+   */
   else if (Code == 3)
     {
       MiDebugDumpNonPagedPool(TRUE);
     }
+  /* E - Dump statistics about the tags of newly created blocks. */
   else if (Code == 4)
     {
       MiDebugDumpNonPagedPoolStats(TRUE);
     }
+  /* F */
+  else if (Code == 5)
+    {
+    }
+  /* G */
+  else if (Code == 6)
+    {
+    }
+  /* H */
+  else if (Code == 7)
+    {
+    }
+  /* I */
+  else if (Code == 8)
+    {
+    }
+  /* J */
+  else if (Code == 9)
+    {
+    }
+  /* K - Enter the system debugger. */
+  else if (Code == 10)
+    {
+#if KDBG
+#else /* KDBG */
+#endif /* not KDBG */
+    }
 }
 
 /* EOF */
index a12e5d3..e12738d 100644 (file)
@@ -230,9 +230,10 @@ KiDeliverUserApc(PKTRAP_FRAME TrapFrame)
    return(TRUE);
 }
 
-VOID STDCALL KiDeliverApc(ULONG Unknown1,
-                         ULONG Unknown2,
-                         ULONG Unknown3)
+VOID STDCALL 
+KiDeliverApc(ULONG Unknown1,
+            ULONG Unknown2,
+            ULONG Unknown3)
 /*
  * FUNCTION: Deliver an APC to the current thread.
  * NOTES: This is called from the IRQL switching code if the current thread
@@ -325,11 +326,23 @@ KeInsertQueueApc (PKAPC   Apc,
      }
    Apc->Inserted = TRUE;
 
+   /*
+    * If this is a kernel-mode APC for the current thread and we are not
+    * inside a critical section or at APC level then call it, in fact we
+    * rely on the side effects of dropping the IRQL level when we release
+    * the spinlock
+    */
+   if (Apc->ApcMode == KernelMode && TargetThread == KeGetCurrentThread() && 
+       Apc->NormalRoutine == NULL)
+     {
+       KeReleaseSpinLock(&PiApcLock, oldlvl);
+       return;
+     }
+
    /*
     * If this is a kernel-mode APC and it is waiting at PASSIVE_LEVEL and
     * not inside a critical section then wake it up. Otherwise it will
     * execute the APC as soon as it returns to PASSIVE_LEVEL.
-    * FIXME: Check for sending an APC to the current thread.
     * FIXME: If the thread is running on another processor then send an
     * IPI.
     * FIXME: Check if the thread is terminating.
index c8d6475..fff18e4 100644 (file)
@@ -427,10 +427,10 @@ KiTrapHandler(PKTRAP_FRAME Tf, ULONG ExceptionNr)
    unsigned int cr2, cr3;
    unsigned int i;
 //   unsigned int j, sym;
-   PULONG stack;
    NTSTATUS Status;
    ULONG Esp0;
    ULONG StackLimit;
+   PULONG Frame;
 
    /* Use the address of the trap frame as approximation to the ring0 esp */
    Esp0 = (ULONG)&Tf->Eip;
@@ -529,10 +529,6 @@ KiTrapHandler(PKTRAP_FRAME Tf, ULONG ExceptionNr)
      }
 
    DbgPrint("ESP %x\n", Esp0);
-   stack = (PULONG) (Esp0 + 24);
-   stack = (PULONG)(((ULONG)stack) & (~0x3));
-   
-   DbgPrint("stack<%p>: ", stack);
 
    if (PsGetCurrentThread() != NULL)
      {
@@ -543,24 +539,23 @@ KiTrapHandler(PKTRAP_FRAME Tf, ULONG ExceptionNr)
        StackLimit = (ULONG)&init_stack_top;
      }
    
-   for (i = 0; i < 18; i = i + 6)
+   /*
+    * Dump the stack frames
+    */
+   DbgPrint("Frames: ");
+   i = 1;
+   Frame = (PULONG)Tf->Ebp;
+   while (Frame != NULL)
      {
-       DbgPrint("%.8x %.8x %.8x %.8x\n", 
-               stack[i], stack[i+1], 
-               stack[i+2], stack[i+3], 
-               stack[i+4], stack[i+5]);
+       print_address((PVOID)Frame[1]);
+       Frame = (PULONG)Frame[0];
+       i++;
      }
-   DbgPrint("Frames:\n");
-   for (i = 0; i < 32 && ((ULONG)&stack[i] < StackLimit); i++)
+   if ((i % 8) != 0)
      {
-       if (stack[i] > ((unsigned int) &_text_start__) &&
-          !(stack[i] >= ((ULONG)&init_stack) &&
-            stack[i] <= ((ULONG)&init_stack_top)))
-        {
-          print_address((PVOID)stack[i]);
-          DbgPrint(" ");
-        }
-    }
+       DbgPrint("\n");
+     }
+
    for(;;);
 }
 
index ff7aea7..d6280ab 100644 (file)
@@ -1,6 +1,23 @@
-/* $Id: mutex.c,v 1.7 2000/07/06 14:34:50 dwelch Exp $
+/*
+ *  ReactOS kernel
+ *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: mutex.c,v 1.8 2001/04/09 02:45:04 dwelch Exp $
  *
- * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ke/mutex.c
  * PURPOSE:         Implements mutex
@@ -19,8 +36,9 @@
 
 /* FUNCTIONS *****************************************************************/
 
-VOID STDCALL KeInitializeMutex (PKMUTEX        Mutex,
-                               ULONG   Level)
+VOID STDCALL 
+KeInitializeMutex (PKMUTEX     Mutex,
+                  ULONG        Level)
 {
    KeInitializeDispatcherHeader(&Mutex->Header,
                                InternalMutexType,
@@ -28,13 +46,15 @@ VOID STDCALL KeInitializeMutex (PKMUTEX     Mutex,
                                1);
 }
 
-LONG STDCALL KeReadStateMutex (PKMUTEX Mutex)
+LONG STDCALL 
+KeReadStateMutex (PKMUTEX      Mutex)
 {
    return(Mutex->Header.SignalState);
 }
 
-LONG STDCALL KeReleaseMutex (PKMUTEX   Mutex,
-                            BOOLEAN    Wait)
+LONG STDCALL 
+KeReleaseMutex (PKMUTEX        Mutex,
+               BOOLEAN Wait)
 {
    KeAcquireDispatcherDatabaseLock(Wait);
    Mutex->Header.SignalState++;
@@ -47,10 +67,11 @@ LONG STDCALL KeReleaseMutex (PKMUTEX        Mutex,
    return(0);
 }
 
-NTSTATUS STDCALL KeWaitForMutexObject (PKMUTEX         Mutex,
-                                      KWAIT_REASON     WaitReason,
-                                      KPROCESSOR_MODE  WaitMode,
-                                      BOOLEAN          Alertable,
+NTSTATUS STDCALL 
+KeWaitForMutexObject (PKMUTEX          Mutex,
+                     KWAIT_REASON      WaitReason,
+                     KPROCESSOR_MODE   WaitMode,
+                     BOOLEAN           Alertable,
                                       PLARGE_INTEGER   Timeout)
 {
    return(KeWaitForSingleObject(Mutex,WaitReason,WaitMode,Alertable,Timeout));
index 211708a..eee7d1d 100644 (file)
@@ -1,6 +1,23 @@
-/* $Id: iospace.c,v 1.9 2001/03/25 02:34:28 dwelch Exp $
+/*
+ *  ReactOS kernel
+ *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: iospace.c,v 1.10 2001/04/09 02:45:04 dwelch Exp $
  *
- * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/mm/iospace.c
  * PURPOSE:         Mapping I/O space
@@ -116,8 +133,9 @@ MmMapIoSpace (IN PHYSICAL_ADDRESS PhysicalAddress,
  * REVISIONS
  *
  */
-VOID STDCALL MmUnmapIoSpace (IN PVOID BaseAddress,
-                            IN ULONG NumberOfBytes)
+VOID STDCALL 
+MmUnmapIoSpace (IN PVOID BaseAddress,
+               IN ULONG NumberOfBytes)
 {
    (VOID)MmFreeMemoryArea(&PsGetCurrentProcess()->AddressSpace,
                          BaseAddress,
index 25f1c4d..ca942bc 100644 (file)
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: mm.c,v 1.47 2001/04/04 22:21:31 dwelch Exp $
+/* $Id: mm.c,v 1.48 2001/04/09 02:45:04 dwelch Exp $
  *
  * COPYRIGHT:   See COPYING in the top directory
  * PROJECT:     ReactOS kernel 
@@ -299,42 +299,40 @@ NTSTATUS MmNotPresentFault(KPROCESSOR_MODE Mode,
             {
               MmUnlockAddressSpace(AddressSpace);
             }
-          Status = STATUS_UNSUCCESSFUL;
+          return (STATUS_UNSUCCESSFUL);
         }
-       else
+
+       switch (MemoryArea->Type)
         {
-          switch (MemoryArea->Type)
-            {
-            case MEMORY_AREA_SYSTEM:
-              Status = STATUS_UNSUCCESSFUL;
-              break;
-              
-            case MEMORY_AREA_SECTION_VIEW_COMMIT:
-              Status = MmNotPresentFaultSectionView(AddressSpace,
-                                                    MemoryArea, 
-                                                    (PVOID)Address,
-                                                    Locked);
-              break;
-              
-            case MEMORY_AREA_VIRTUAL_MEMORY:
-              Status = MmNotPresentFaultVirtualMemory(AddressSpace,
-                                                      MemoryArea,
-                                                      (PVOID)Address,
-                                                      Locked);
+        case MEMORY_AREA_SYSTEM:
+          Status = STATUS_UNSUCCESSFUL;
+          break;
+          
+        case MEMORY_AREA_SECTION_VIEW_COMMIT:
+          Status = MmNotPresentFaultSectionView(AddressSpace,
+                                                MemoryArea, 
+                                                (PVOID)Address,
+                                                Locked);
+          break;
+          
+        case MEMORY_AREA_VIRTUAL_MEMORY:
+          Status = MmNotPresentFaultVirtualMemory(AddressSpace,
+                                                  MemoryArea,
+                                                  (PVOID)Address,
+                                                  Locked);
               break;
               
-            case MEMORY_AREA_SHARED_DATA:
-              Status = 
+        case MEMORY_AREA_SHARED_DATA:
+          Status = 
                MmCreateVirtualMapping(PsGetCurrentProcess(),
                                       (PVOID)PAGE_ROUND_DOWN(Address),
                                       PAGE_READONLY,
                                       (ULONG)MmSharedDataPagePhysicalAddress);
-              break;
+          break;
           
-            default:
-              Status = STATUS_UNSUCCESSFUL;
-              break;
-            }
+        default:
+          Status = STATUS_UNSUCCESSFUL;
+          break;
         }
      }
    while (Status == STATUS_MM_RESTART_OPERATION);