- Fixed the freeing of memory from boot load drivers.
authorHartmut Birr <osexpert@googlemail.com>
Sun, 12 Oct 2003 17:05:50 +0000 (17:05 +0000)
committerHartmut Birr <osexpert@googlemail.com>
Sun, 12 Oct 2003 17:05:50 +0000 (17:05 +0000)
- Put all init functions in a special section and do free
  the memory from this section after system initialization.

svn path=/trunk/; revision=6296

78 files changed:
reactos/ntoskrnl/cc/view.c
reactos/ntoskrnl/cm/import.c
reactos/ntoskrnl/cm/registry.c
reactos/ntoskrnl/dbg/profile.c
reactos/ntoskrnl/dbg/rdebug.c
reactos/ntoskrnl/ex/init.c
reactos/ntoskrnl/ex/lookas.c
reactos/ntoskrnl/ex/time.c
reactos/ntoskrnl/ex/win32k.c
reactos/ntoskrnl/ex/work.c
reactos/ntoskrnl/fs/filelock.c
reactos/ntoskrnl/inbv/inbv.c
reactos/ntoskrnl/include/internal/mm.h
reactos/ntoskrnl/include/internal/ntoskrnl.h
reactos/ntoskrnl/io/arcname.c
reactos/ntoskrnl/io/buildirp.c
reactos/ntoskrnl/io/cancel.c
reactos/ntoskrnl/io/driver.c
reactos/ntoskrnl/io/fs.c
reactos/ntoskrnl/io/iomgr.c
reactos/ntoskrnl/io/pnpmgr.c
reactos/ntoskrnl/io/shutdown.c
reactos/ntoskrnl/io/vpb.c
reactos/ntoskrnl/kd/dlog.c
reactos/ntoskrnl/kd/gdbstub.c
reactos/ntoskrnl/kd/kdebug.c
reactos/ntoskrnl/ke/apc.c
reactos/ntoskrnl/ke/bug.c
reactos/ntoskrnl/ke/dpc.c
reactos/ntoskrnl/ke/i386/exp.c
reactos/ntoskrnl/ke/i386/fpu.c
reactos/ntoskrnl/ke/i386/irq.c
reactos/ntoskrnl/ke/i386/kernel.c
reactos/ntoskrnl/ke/i386/tss.c
reactos/ntoskrnl/ke/main.c
reactos/ntoskrnl/ke/timer.c
reactos/ntoskrnl/ldr/init.c
reactos/ntoskrnl/ldr/loader.c
reactos/ntoskrnl/lpc/port.c
reactos/ntoskrnl/mm/aspace.c
reactos/ntoskrnl/mm/balance.c
reactos/ntoskrnl/mm/freelist.c
reactos/ntoskrnl/mm/i386/page.c
reactos/ntoskrnl/mm/kmap.c
reactos/ntoskrnl/mm/marea.c
reactos/ntoskrnl/mm/mdl.c
reactos/ntoskrnl/mm/mminit.c
reactos/ntoskrnl/mm/pagefile.c
reactos/ntoskrnl/mm/pageop.c
reactos/ntoskrnl/mm/ppool.c
reactos/ntoskrnl/mm/rmap.c
reactos/ntoskrnl/mm/section.c
reactos/ntoskrnl/nt/evtpair.c
reactos/ntoskrnl/nt/mutant.c
reactos/ntoskrnl/nt/nt.c
reactos/ntoskrnl/nt/ntevent.c
reactos/ntoskrnl/nt/ntsem.c
reactos/ntoskrnl/nt/nttimer.c
reactos/ntoskrnl/nt/profile.c
reactos/ntoskrnl/nt/vdm.c
reactos/ntoskrnl/ob/namespc.c
reactos/ntoskrnl/ob/symlink.c
reactos/ntoskrnl/po/power.c
reactos/ntoskrnl/ps/idle.c
reactos/ntoskrnl/ps/locale.c
reactos/ntoskrnl/ps/process.c
reactos/ntoskrnl/ps/psmgr.c
reactos/ntoskrnl/ps/suspend.c
reactos/ntoskrnl/ps/thread.c
reactos/ntoskrnl/ps/w32call.c
reactos/ntoskrnl/rtl/nls.c
reactos/ntoskrnl/se/acl.c
reactos/ntoskrnl/se/luid.c
reactos/ntoskrnl/se/priv.c
reactos/ntoskrnl/se/sd.c
reactos/ntoskrnl/se/semgr.c
reactos/ntoskrnl/se/sid.c
reactos/ntoskrnl/se/token.c

index ca9ebd3..60c714a 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.68 2003/07/21 21:53:51 royce Exp $
+/* $Id: view.c,v 1.69 2003/10/12 17:05:44 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/cc/view.c
@@ -1245,7 +1245,7 @@ CmLazyCloseThreadMain(PVOID Ignored)
    }
 }
 
-VOID
+VOID INIT_FUNCTION
 CcInitView(VOID)
 {
 #ifdef CACHE_BITMAP
index 28fe7c0..16156e8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: import.c,v 1.22 2003/10/10 21:55:16 ekohl Exp $
+/* $Id: import.c,v 1.23 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -161,7 +161,7 @@ CmImportBinaryHive (PCHAR ChunkBase,
 }
 
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 CmImportSystemHive(PCHAR ChunkBase,
                   ULONG ChunkSize)
 {
@@ -216,7 +216,7 @@ CmImportSystemHive(PCHAR ChunkBase,
 }
 
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 CmImportHardwareHive(PCHAR ChunkBase,
                     ULONG ChunkSize)
 {
index ae5cc9e..2dac610 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: registry.c,v 1.110 2003/10/10 21:55:16 ekohl Exp $
+/* $Id: registry.c,v 1.111 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -247,7 +247,7 @@ CmiCheckRegistry(BOOLEAN Verbose)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 CmInitializeRegistry(VOID)
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
@@ -358,7 +358,7 @@ CmInitializeRegistry(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 CmInit2(PCHAR CommandLine)
 {
   PCHAR p1, p2;
index d431ada..b6e1835 100755 (executable)
@@ -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: profile.c,v 1.5 2003/07/24 18:14:59 royce Exp $
+/* $Id: profile.c,v 1.6 2003/10/12 17:05:44 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/dbg/profile.c
@@ -120,13 +120,13 @@ KdbAddEntryToProfileDatabase(PPROFILE_DATABASE ProfileDatabase, ULONG_PTR Addres
   block->Entries[block->UsedEntries++].Address = Address;
 }
 
-VOID
+VOID INIT_FUNCTION
 KdbInitProfiling()
 {
   KdbEnableProfiler = TRUE;
 }
 
-VOID
+VOID INIT_FUNCTION
 KdbInitProfiling2()
 {
   if (KdbEnableProfiler)
@@ -415,7 +415,7 @@ KdbProfilerCollectorDpcRoutine(PKDPC Dpc, PVOID DeferredContext,
   KdbAddEntryToProfileDatabase(KdbProfileDatabase, address);
 }
 
-VOID
+VOID INIT_FUNCTION
 KdbEnableProfiling()
 {
   if (KdbProfilingEnabled == FALSE)
index 8a13523..280ac0b 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: rdebug.c,v 1.3 2002/09/08 10:23:18 chorns Exp $
+/* $Id: rdebug.c,v 1.4 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -67,7 +67,7 @@ DbgpFind(PCH Filename)
   return(NULL);
 }
 
-VOID
+VOID INIT_FUNCTION
 DbgRDebugInit(VOID)
 {
   if (RDebugInitialized)
index 238cb95..e881045 100644 (file)
@@ -36,7 +36,7 @@
 
 /* FUNCTIONS ****************************************************************/
 
-VOID 
+VOID INIT_FUNCTION
 ExInit (VOID)
 {
   ExInitTimeZoneInfo();
index 5a60c26..e5b2a75 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: lookas.c,v 1.11 2003/08/14 18:30:28 silverblade Exp $
+/* $Id: lookas.c,v 1.12 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -130,7 +130,7 @@ ExpDefaultFree(PVOID Buffer)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 ExpInitLookasideLists()
 {
   InitializeListHead(&ExpNonPagedLookasideListHead);
index a7ee03c..e706c72 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.18 2003/07/11 01:23:14 royce Exp $
+/* $Id: time.c,v 1.19 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -30,7 +30,7 @@ TIME_ZONE_INFORMATION _SystemTimeZoneInfo;
 
 /* FUNCTIONS ****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 ExInitTimeZoneInfo (VOID)
 {
   /* Initialize system time zone information */
index 0235364..17600fd 100644 (file)
@@ -259,7 +259,7 @@ ExpDesktopObjectDelete(PVOID DeletedObject)
   RtlFreeUnicodeString(&Desktop->Name);
 }
 
-VOID
+VOID INIT_FUNCTION
 ExpWin32kInit(VOID)
 {
   /* Create window station object type */
index cb74770..5997d3a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: work.c,v 1.17 2003/07/17 16:57:38 silverblade Exp $
+/* $Id: work.c,v 1.18 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:          See COPYING in the top level directory
  * PROJECT:            ReactOS kernel
@@ -129,7 +129,8 @@ static VOID ExInitializeWorkQueue(PWORK_QUEUE WorkQueue,
      }
 }
 
-VOID ExInitializeWorkerThreads(VOID)
+VOID INIT_FUNCTION
+ExInitializeWorkerThreads(VOID)
 {
    ExInitializeWorkQueue(&EiNormalWorkQueue,
                         LOW_PRIORITY);
index cd19e7d..c170044 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filelock.c,v 1.11 2003/08/14 18:30:28 silverblade Exp $
+/* $Id: filelock.c,v 1.12 2003/10/12 17:05:44 hbirr Exp $
  *
  * reactos/ntoskrnl/fs/filelock.c
  *
@@ -34,7 +34,7 @@ PAGED_LOOKASIDE_LIST    LockLookaside;
  *
  */
 VOID
-STDCALL
+STDCALL INIT_FUNCTION
 FsRtlpInitFileLockingImplementation(VOID)
 {
    ExInitializeNPagedLookasideList( &LockTocLookaside,
index 64ef057..ef6addc 100755 (executable)
@@ -1,4 +1,4 @@
-/* $Id: inbv.c,v 1.2 2003/08/24 12:08:16 dwelch Exp $
+/* $Id: inbv.c,v 1.3 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -91,7 +91,7 @@ InbvResetDisplayParameters(ULONG SizeX, ULONG SizeY)
 }
 
 VOID
-STDCALL
+STDCALL INIT_FUNCTION
 InbvEnableBootDriver(IN BOOLEAN Enable)
 {
   NTSTATUS Status;
index 9ccd465..c645dfd 100644 (file)
@@ -333,6 +333,7 @@ VOID MmInit1(ULONG FirstKernelPhysAddress,
        ULONG MaxMemInMeg);
 VOID MmInit2(VOID);
 VOID MmInit3(VOID);
+VOID MiFreeInitMemory(VOID);
 NTSTATUS MmInitPagerThread(VOID);
 NTSTATUS MmInitZeroPageThread(VOID);
 
index d9d5841..9706762 100644 (file)
 /*
  * Use these to place a function in a specific section of the executable
  */
-#define PLACE_IN_SECTION(s) __attribute__((section (s)))
-#define INIT_FUNCTION (PLACE_IN_SECTION("init"))
-#define PAGE_LOCKED_FUNCTION (PLACE_IN_SECTION("pagelk"))
-#define PAGE_UNLOCKED_FUNCTION (PLACE_IN_SECTION("pagepo"))
+#define PLACE_IN_SECTION(s)    __attribute__((section (s)))
+#define INIT_FUNCTION          PLACE_IN_SECTION("init")
+#define PAGE_LOCKED_FUNCTION   PLACE_IN_SECTION("pagelk")
+#define PAGE_UNLOCKED_FUNCTION PLACE_IN_SECTION("pagepo")
 
 /*
  * Defines a descriptor as it appears in the processor tables
index 0aa01e6..f8729d2 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: arcname.c,v 1.13 2003/09/26 19:45:04 ekohl Exp $
+/* $Id: arcname.c,v 1.14 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -42,7 +42,7 @@
 
 /* FUNCTIONS ****************************************************************/
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 IoCreateArcNames(VOID)
 {
   PCONFIGURATION_INFORMATION ConfigInfo;
@@ -273,7 +273,7 @@ IopCheckCdromDevices(PULONG DeviceNumber)
 }
 
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 IoCreateSystemRootLink(PCHAR ParameterLine)
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
index 3704a27..dbdd5f9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: buildirp.c,v 1.34 2003/08/14 18:30:28 silverblade Exp $
+/* $Id: buildirp.c,v 1.35 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -140,8 +140,7 @@ IoBuildAsynchronousFsdRequest(ULONG MajorFunction,
          }
        else
          {
-            StackPtr->Parameters.Read.ByteOffset.u.LowPart = 0;
-            StackPtr->Parameters.Read.ByteOffset.u.LowPart = 0;
+            StackPtr->Parameters.Read.ByteOffset.QuadPart = 0;
          }     
      }
    else if (MajorFunction == IRP_MJ_WRITE)
index f7955d7..a38840c 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: cancel.c,v 1.11 2003/07/11 01:23:14 royce Exp $
+/* $Id: cancel.c,v 1.12 2003/10/12 17:05:44 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/io/cancel.c
@@ -69,7 +69,7 @@ IoCancelIrp(PIRP Irp)
    return(TRUE);
 }
 
-VOID 
+VOID INIT_FUNCTION
 IoInitCancelHandling(VOID)
 {
    KeInitializeSpinLock(&CancelSpinLock);
index da04ead..8afc3bf 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: driver.c,v 1.22 2003/10/07 13:58:53 ekohl Exp $
+/* $Id: driver.c,v 1.23 2003/10/12 17:05:44 hbirr Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -86,7 +86,7 @@ IopCreateDriver(PVOID ObjectBody,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 IopInitDriverImplementation(VOID)
 {
   /*  Register the process object type  */
@@ -464,7 +464,7 @@ IopCreateServiceListEntry(PUNICODE_STRING ServiceName)
 }
 
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 IoCreateDriverList(VOID)
 {
   RTL_QUERY_REGISTRY_TABLE QueryTable[2];
@@ -565,7 +565,7 @@ IoCreateDriverList(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 LdrLoadAutoConfigDrivers(VOID)
 {
   PLIST_ENTRY GroupEntry;
@@ -651,7 +651,7 @@ LdrLoadAutoConfigDrivers(VOID)
 }
 
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 IoDestroyDriverList(VOID)
 {
   PLIST_ENTRY GroupEntry;
index 179ef7c..96aa1c3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: fs.c,v 1.36 2003/08/07 11:47:33 silverblade Exp $
+/* $Id: fs.c,v 1.37 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -160,7 +160,7 @@ NtFsControlFile (
 }
 
 
-VOID
+VOID INIT_FUNCTION
 IoInitFileSystemImplementation(VOID)
 {
   InitializeListHead(&FileSystemListHead);
index db0f049..315d684 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: iomgr.c,v 1.39 2003/10/07 13:58:53 ekohl Exp $
+/* $Id: iomgr.c,v 1.40 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:            See COPYING in the top level directory
  * PROJECT:              ReactOS kernel
@@ -198,7 +198,8 @@ IopQueryNameFile(PVOID ObjectBody,
 }
 
 
-VOID IoInit (VOID)
+VOID INIT_FUNCTION
+IoInit (VOID)
 {
   OBJECT_ATTRIBUTES ObjectAttributes;
   UNICODE_STRING DirName;
@@ -358,7 +359,8 @@ VOID IoInit (VOID)
   PnpInit();
 }
 
-VOID IoInit2(VOID)
+VOID INIT_FUNCTION
+IoInit2(VOID)
 {
   PDEVICE_NODE DeviceNode;
   NTSTATUS Status;
index 9aad634..ad241ab 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: pnpmgr.c,v 1.19 2003/10/03 13:37:53 navaraf Exp $
+/* $Id: pnpmgr.c,v 1.20 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -1176,12 +1176,14 @@ IopInvalidateDeviceRelations(
   return STATUS_SUCCESS;
 }
 
-VOID IopLoadBootStartDrivers(VOID)
+VOID INIT_FUNCTION
+IopLoadBootStartDrivers(VOID)
 {
   IopInvalidateDeviceRelations(IopRootDeviceNode, BusRelations);
 }
 
-VOID PnpInit(VOID)
+VOID INIT_FUNCTION
+PnpInit(VOID)
 {
   PDEVICE_OBJECT Pdo;
   NTSTATUS Status;
index 30c18ff..b4dd140 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: shutdown.c,v 1.8 2003/07/10 15:47:00 royce Exp $
+/* $Id: shutdown.c,v 1.9 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -32,7 +32,8 @@ static KSPIN_LOCK ShutdownListLock;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID IoInitShutdownNotification (VOID)
+VOID INIT_FUNCTION
+IoInitShutdownNotification (VOID)
 {
    InitializeListHead(&ShutdownListHead);
    KeInitializeSpinLock(&ShutdownListLock);
index 2a15bda..5c97cdc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: vpb.c,v 1.22 2003/08/07 11:47:33 silverblade Exp $
+/* $Id: vpb.c,v 1.23 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -29,7 +29,7 @@ static KSPIN_LOCK IoVpbLock;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 IoInitVpbImplementation(VOID)
 {
    KeInitializeSpinLock(&IoVpbLock);
index 198ef68..b54c637 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dlog.c,v 1.7 2002/09/08 10:23:27 chorns Exp $
+/* $Id: dlog.c,v 1.8 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -40,7 +40,7 @@ static KSEMAPHORE DebugLogSem;
 
 #ifdef DBGPRINT_FILE_LOG
 
-VOID
+VOID INIT_FUNCTION
 DebugLogInit(VOID)
 {
   KeInitializeSpinLock(&DebugLogLock);
@@ -111,7 +111,7 @@ DebugLogThreadMain(PVOID Context)
     }
 }
 
-VOID
+VOID INIT_FUNCTION
 DebugLogInit2(VOID)
 {
   NTSTATUS Status;
@@ -203,12 +203,12 @@ DebugLogInit2(VOID)
 
  #else /* not DBGPRINT_FILE_LOG */
 
- VOID
+ VOID INIT_FUNCTION
  DebugLogInit(VOID)
  {
  }
 
-VOID
+VOID INIT_FUNCTION
 DebugLogInit2(VOID)
 {
 }
index 582dba0..d80a009 100644 (file)
@@ -1300,7 +1300,7 @@ GspBreakIn(PKINTERRUPT Interrupt,
 extern ULONG KdpPortIrq;
 
 /* Initialize the GDB stub */
-VOID
+VOID INIT_FUNCTION
 KdGdbStubInit(ULONG Phase)
 {
 #if 0
index 03b72a0..9e14b93 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: kdebug.c,v 1.46 2003/08/11 18:50:12 chorns Exp $
+/* $Id: kdebug.c,v 1.47 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -59,7 +59,7 @@ PrintString(char* fmt,...)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 KdInitSystem(ULONG Reserved,
             PLOADER_PARAMETER_BLOCK LoaderBlock)
 {
@@ -243,7 +243,7 @@ KdInitSystem(ULONG Reserved,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 KdInit1(VOID)
 {
   /* Initialize kernel debugger (phase 0) */
@@ -255,7 +255,8 @@ KdInit1(VOID)
 }
 
 
-VOID KdInit2(VOID)
+VOID INIT_FUNCTION
+KdInit2(VOID)
 {
   /* Initialize kernel debugger (phase 1) */
   if ((KdDebuggerEnabled == TRUE) &&
@@ -266,7 +267,7 @@ VOID KdInit2(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 KdInit3(VOID)
 {
   /* Print some information */
index b490d71..b2beec6 100644 (file)
@@ -586,7 +586,8 @@ NTSTATUS STDCALL NtTestAlert(VOID)
    return(STATUS_SUCCESS);
 }
 
-VOID PiInitApcManagement(VOID)
+VOID INIT_FUNCTION
+PiInitApcManagement(VOID)
 {
    KeInitializeSpinLock(&PiApcLock);
 }
index 8d247f3..73961df 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: bug.c,v 1.39 2003/10/06 16:24:20 gvg Exp $
+/* $Id: bug.c,v 1.40 2003/10/12 17:05:45 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ke/bug.c
@@ -49,7 +49,7 @@ VOID PsDumpThreads(VOID);
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 KeInitializeBugCheck(VOID)
 {
   InitializeListHead(&BugcheckCallbackListHead);
index 66fe619..c0b0f8e 100644 (file)
@@ -18,7 +18,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: dpc.c,v 1.27 2003/07/11 01:23:15 royce Exp $
+/* $Id: dpc.c,v 1.28 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -223,7 +223,7 @@ KeSetTargetProcessorDpc (IN PKDPC   Dpc,
        UNIMPLEMENTED;
 }
 
-VOID 
+VOID INIT_FUNCTION
 KeInitDpc(VOID)
 /*
  * FUNCTION: Initialize DPC handling
index 40cd51b..4e536c3 100644 (file)
@@ -123,8 +123,6 @@ static NTSTATUS ExceptionToNtStatus[] =
     STATUS_ACCESS_VIOLATION
   };
 
-extern unsigned int _text_start__, _text_end__;
-
 /* FUNCTIONS ****************************************************************/
 
 STATIC BOOLEAN 
@@ -609,7 +607,7 @@ set_task_gate(unsigned int sel, unsigned task_sel)
   KiIdt[sel].b = 0x8500;
 }
 
-VOID 
+VOID INIT_FUNCTION
 KeInitExceptions(VOID)
 /*
  * FUNCTION: Initalize CPU exception handling
index 8c33b16..2324faa 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: fpu.c,v 1.9 2003/09/09 14:50:19 gvg Exp $
+/* $Id: fpu.c,v 1.10 2003/10/12 17:05:45 hbirr Exp $
  *
  *  ReactOS kernel
  *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
@@ -42,7 +42,7 @@ ULONG HardwareMathSupport;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID 
+VOID INIT_FUNCTION
 KiCheckFPU(VOID)
 {
    unsigned short int status;
index 425fc59..b21ca4d 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: irq.c,v 1.35 2003/08/25 09:14:09 hbirr Exp $
+/* $Id: irq.c,v 1.36 2003/10/12 17:05:45 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ke/i386/irq.c
@@ -217,7 +217,8 @@ static KSPIN_LOCK isr_table_lock = {0,};
 #define PRESENT (0x8000)
 #define I486_INTERRUPT_GATE (0xe00)
 
-VOID KeInitInterrupts (VOID)
+VOID INIT_FUNCTION
+KeInitInterrupts (VOID)
 {
    int i;
 
index 26ce718..a99a5b2 100644 (file)
@@ -44,7 +44,7 @@ static PHYSICAL_ADDRESS PcrPages[MAXIMUM_PROCESSORS];
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 KePrepareForApplicationProcessorInit(ULONG Id)
 {
   MmRequestPageMemoryConsumer(MC_NPPOOL, FALSE, &PcrPages[Id]);
@@ -96,7 +96,7 @@ KeApplicationProcessorInit(VOID)
   __asm__ __volatile__ ("sti\n\t");
 }
 
-VOID 
+VOID INIT_FUNCTION
 KeInit1(VOID)
 {
    PKPCR KPCR;
@@ -132,7 +132,7 @@ KeInit1(VOID)
    Ki386InitializeLdt();
 }
 
-VOID 
+VOID INIT_FUNCTION
 KeInit2(VOID)
 {
    KeInitDpc();
index 0602e34..04bf701 100644 (file)
@@ -192,7 +192,7 @@ Ki386ApplicationProcessorInitializeTSS(VOID)
          : "a" (TSS_SELECTOR));
 }
 
-VOID
+VOID INIT_FUNCTION
 Ki386BootInitializeTSS(VOID)
 {
   ULONG cr3;
index 2e24e1f..cad9813 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: main.c,v 1.173 2003/10/12 16:39:52 vizzini Exp $
+/* $Id: main.c,v 1.174 2003/10/12 17:05:45 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ke/main.c
@@ -86,7 +86,7 @@ extern PVOID Ki386InitialStackArray[MAXIMUM_PROCESSORS];
 
 /* FUNCTIONS ****************************************************************/
 
-static BOOLEAN
+static BOOLEAN INIT_FUNCTION
 RtlpCheckFileNameExtension(PCHAR FileName,
                           PCHAR Extension)
 {
@@ -111,7 +111,7 @@ RtlpCheckFileNameExtension(PCHAR FileName,
 }
 
 
-static VOID
+static VOID INIT_FUNCTION
 InitSystemSharedUserPage (PCSZ ParameterLine)
 {
    UNICODE_STRING ArcDeviceName;
@@ -289,21 +289,19 @@ InitSystemSharedUserPage (PCSZ ParameterLine)
      }
 }
 
-VOID STATIC
+VOID STATIC INIT_FUNCTION
 MiFreeBootDriverMemory(PVOID StartAddress, ULONG Length)
 {
-  PHYSICAL_ADDRESS Page;
   ULONG i;
 
   for (i = 0; i < PAGE_ROUND_UP(Length)/PAGE_SIZE; i++)
   {
-     Page = MmGetPhysicalAddressForProcess(NULL, StartAddress + i * PAGE_SIZE);
-     MmDeleteVirtualMapping(NULL, StartAddress + i * PAGE_SIZE, FALSE, NULL, NULL);
-     MmDereferencePage(Page);
+     MmDeleteVirtualMapping(NULL, StartAddress + i * PAGE_SIZE, TRUE, NULL, NULL);
+
   }
 }
 
-VOID
+VOID INIT_FUNCTION
 ExpInitializeExecutive(VOID)
 {
   LARGE_INTEGER Timeout;
@@ -840,8 +838,6 @@ ExpInitializeExecutive(VOID)
 
   NtClose(ThreadHandle);
   NtClose(ProcessHandle);
-
-  PsTerminateSystemThread(STATUS_SUCCESS);
 }
 
 
@@ -852,8 +848,10 @@ KiSystemStartup(BOOLEAN BootProcessor)
 
   if (BootProcessor)
     {
-      /* Never returns */
       ExpInitializeExecutive();
+      MiFreeInitMemory();
+      /* Never returns */
+      PsTerminateSystemThread(STATUS_SUCCESS);
       KEBUGCHECK(0);
     }
   /* Do application processor initialization */
@@ -865,7 +863,8 @@ KiSystemStartup(BOOLEAN BootProcessor)
   for(;;);
 }
 
-VOID
+
+VOID INIT_FUNCTION
 _main (ULONG MultiBootMagic, PLOADER_PARAMETER_BLOCK _LoaderBlock)
 /*
  * FUNCTION: Called by the boot loader to start the kernel
index ceee87e..3300db9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: timer.c,v 1.61 2003/07/21 21:53:51 royce Exp $
+/* $Id: timer.c,v 1.62 2003/10/12 17:05:45 hbirr Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -507,7 +507,7 @@ KiUpdateSystemTime(KIRQL oldIrql,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 KeInitializeTimerImpl(VOID)
 /*
  * FUNCTION: Initializes timer irq handling
index c22d747..2dc9eaa 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: init.c,v 1.40 2003/04/27 18:58:00 hbirr Exp $
+/* $Id: init.c,v 1.41 2003/10/12 17:05:45 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ldr/init.c
@@ -377,7 +377,7 @@ l_Cleanup:
 }
 
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 LdrLoadInitialProcess(PHANDLE ProcessHandle,
                      PHANDLE ThreadHandle)
 {
index 4722e5e..c20a857 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: loader.c,v 1.135 2003/09/29 20:43:07 navaraf Exp $
+/* $Id: loader.c,v 1.136 2003/10/12 17:05:45 hbirr Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -124,7 +124,7 @@ LdrInitDebug(PLOADER_MODULE Module, PWCH Name)
     }
 }
 
-VOID
+VOID INIT_FUNCTION
 LdrInit1(VOID)
 {
   PIMAGE_DOS_HEADER DosHeader;
@@ -171,7 +171,7 @@ LdrInit1(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 LdrInitModuleManagement(VOID)
 {
   PIMAGE_DOS_HEADER DosHeader;
@@ -451,7 +451,7 @@ LdrUnloadModule(PMODULE_OBJECT ModuleObject)
 }
 
 
-NTSTATUS
+NTSTATUS INIT_FUNCTION
 LdrInitializeBootStartDriver(PVOID ModuleLoadBase,
                             PCHAR FileName,
                             ULONG ModuleLength)
index ae8a485..505d0c7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: port.c,v 1.13 2003/07/11 01:23:15 royce Exp $
+/* $Id: port.c,v 1.14 2003/10/12 17:05:48 hbirr Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -40,7 +40,8 @@ static GENERIC_MAPPING ExpPortMapping = {
 /* FUNCTIONS *****************************************************************/
 
 
-NTSTATUS NiInitPort (VOID)
+NTSTATUS INIT_FUNCTION
+NiInitPort (VOID)
 {
    ExPortType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
    
index 80cbf9d..0e59985 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: aspace.c,v 1.14 2003/07/10 21:05:03 royce Exp $
+/* $Id: aspace.c,v 1.15 2003/10/12 17:05:48 hbirr Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -52,7 +52,7 @@ MmUnlockAddressSpace(PMADDRESS_SPACE AddressSpace)
   ExReleaseFastMutex(&AddressSpace->Lock);
 }
 
-VOID 
+VOID INIT_FUNCTION
 MmInitializeKernelAddressSpace(VOID)
 {
    MmInitializeAddressSpace(NULL, &KernelAddressSpace);
index a35086c..c7c6c7f 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: balance.c,v 1.20 2003/07/21 21:53:52 royce Exp $
+/* $Id: balance.c,v 1.21 2003/10/12 17:05:48 hbirr Exp $
  *
  * PROJECT:     ReactOS kernel 
  * FILE:        ntoskrnl/mm/balance.c
@@ -72,7 +72,7 @@ VOID MmPrintMemoryStatistic(VOID)
           MiNrAvailablePages); 
 }
 
-VOID
+VOID INIT_FUNCTION
 MmInitializeBalancer(ULONG NrAvailablePages)
 {
   memset(MiMemoryConsumers, 0, sizeof(MiMemoryConsumers));
@@ -90,7 +90,7 @@ MmInitializeBalancer(ULONG NrAvailablePages)
   MiMemoryConsumers[MC_NPPOOL].PagesTarget = 0xFFFFFFFF;
 }
 
-VOID
+VOID INIT_FUNCTION
 MmInitializeMemoryConsumer(ULONG Consumer, 
                           NTSTATUS (*Trim)(ULONG Target, ULONG Priority, 
                                            PULONG NrFreed))
index 861d577..ff0feaa 100644 (file)
@@ -219,7 +219,7 @@ MmGetContinuousPages(ULONG NumberOfBytes,
    return((LARGE_INTEGER)((LONGLONG)start * PAGE_SIZE));
 }
 
-VOID 
+VOID INIT_FUNCTION
 MiParseRangeToFreeList(PADDRESS_RANGE Range)
 {
   ULONG i, first, last;
@@ -246,7 +246,7 @@ MiParseRangeToFreeList(PADDRESS_RANGE Range)
     }
 }
 
-VOID
+VOID INIT_FUNCTION
 MiParseRangeToBiosList(PADDRESS_RANGE Range)
 {
   ULONG i, first, last;
@@ -279,7 +279,7 @@ MiParseRangeToBiosList(PADDRESS_RANGE Range)
     }
 }
 
-VOID 
+VOID INIT_FUNCTION
 MiParseBIOSMemoryMap(ULONG MemorySizeInPages,
                     PADDRESS_RANGE BIOSMemoryMap,
                     ULONG AddressRangeCount)
@@ -305,7 +305,7 @@ MiParseBIOSMemoryMap(ULONG MemorySizeInPages,
     }
 }
 
-PVOID 
+PVOID INIT_FUNCTION
 MmInitializePageList(PVOID FirstPhysKernelAddress,
                     PVOID LastPhysKernelAddress,
                     ULONG MemorySizeInPages,
@@ -992,7 +992,8 @@ MmZeroPageThreadMain(PVOID Ignored)
     }
 }
  
-NTSTATUS MmInitZeroPageThread(VOID)
+NTSTATUS INIT_FUNCTION
+MmInitZeroPageThread(VOID)
 {
   KPRIORITY Priority;
   NTSTATUS Status;
index ebdcbea..1f7d85d 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: page.c,v 1.59 2003/08/27 21:28:08 dwelch Exp $
+/* $Id: page.c,v 1.60 2003/10/12 17:05:48 hbirr Exp $
  *
  * PROJECT:     ReactOS kernel
  * FILE:        ntoskrnl/mm/i386/page.c
@@ -1353,7 +1353,7 @@ MmUpdateStackPageDir(PULONG LocalPageDir, PKTHREAD PThread)
     }
 }
 
-VOID 
+VOID INIT_FUNCTION
 MmInitGlobalKernelPageDirectory(VOID)
 {
   ULONG i;
index 3430a79..3953868 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: kmap.c,v 1.28 2003/08/20 14:53:16 royce Exp $
+/* $Id: kmap.c,v 1.29 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:    See COPYING in the top level directory
  * PROJECT:      ReactOS kernel
@@ -127,7 +127,7 @@ ExAllocatePageWithPhysPage(PHYSICAL_ADDRESS PhysPage)
    return NULL;
 }
 
-VOID 
+VOID INIT_FUNCTION
 MiInitKernelMap(VOID)
 {
    KeInitializeSpinLock(&AllocMapLock);
index ad24424..0951267 100644 (file)
@@ -347,7 +347,8 @@ PVOID MmFindGap(PMADDRESS_SPACE AddressSpace, ULONG Length, BOOL TopDown)
 }
 
 
-NTSTATUS MmInitMemoryAreas(VOID)
+NTSTATUS INIT_FUNCTION
+MmInitMemoryAreas(VOID)
 /*
  * FUNCTION: Initialize the memory area list
  */
index c87a3e9..e615f23 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mdl.c,v 1.53 2003/07/21 21:53:52 royce Exp $
+/* $Id: mdl.c,v 1.54 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:    See COPYING in the top level directory
  * PROJECT:      ReactOS kernel
@@ -33,7 +33,7 @@ static KSPIN_LOCK MiMdlMappingRegionLock;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 MmInitializeMdlImplementation(VOID)
 {
   MEMORY_AREA* Result;
index 0b5b187..3c7b012 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mminit.c,v 1.54 2003/07/21 21:53:53 royce Exp $
+/* $Id: mminit.c,v 1.55 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:   See COPYING in the top directory
  * PROJECT:     ReactOS kernel 
 extern unsigned int _text_start__;
 extern unsigned int _text_end__;
 
+extern unsigned int _init_start__;
+extern unsigned int _init_end__;
+
 static BOOLEAN IsThisAnNtAsSystem = FALSE;
 static MM_SYSTEM_SIZE MmSystemSize = MmSmallSystem;
 
 extern unsigned int _bss_end__;
 
 static MEMORY_AREA* kernel_text_desc = NULL;
+static MEMORY_AREA* kernel_init_desc = NULL;
 static MEMORY_AREA* kernel_map_desc = NULL;
 static MEMORY_AREA* kernel_data_desc = NULL;
 static MEMORY_AREA* kernel_param_desc = NULL;
@@ -79,8 +83,9 @@ VOID MiShutdownMemoryManager(VOID)
 {
 }
 
-VOID MmInitVirtualMemory(ULONG LastKernelAddress,
-                        ULONG KernelLength)
+VOID INIT_FUNCTION
+MmInitVirtualMemory(ULONG LastKernelAddress,
+                   ULONG KernelLength)
 /*
  * FUNCTION: Intialize the memory areas list
  * ARGUMENTS:
@@ -145,11 +150,28 @@ VOID MmInitVirtualMemory(ULONG LastKernelAddress,
                      &kernel_text_desc,
                      FALSE,
                      FALSE);
-   Length = PAGE_ROUND_UP(((ULONG)&_bss_end__)) - 
+
+   BaseAddress = (PVOID)PAGE_ROUND_UP(((ULONG)&_text_end__));
+   assert (BaseAddress == (PVOID)&_init_start__);
+   Length = PAGE_ROUND_UP(((ULONG)&_init_end__)) -
             PAGE_ROUND_UP(((ULONG)&_text_end__));
    ParamLength = ParamLength - Length;
+
+   MmCreateMemoryArea(NULL,
+                     MmGetKernelAddressSpace(),
+                     MEMORY_AREA_SYSTEM,
+                     &BaseAddress,
+                     Length,
+                     0,
+                     &kernel_init_desc,
+                     FALSE,
+                     FALSE);
+
+   Length = PAGE_ROUND_UP(((ULONG)&_bss_end__)) - 
+            PAGE_ROUND_UP(((ULONG)&_init_end__));
+   ParamLength = ParamLength - Length;
    DPRINT("Length %x\n",Length);
-   BaseAddress = (PVOID)PAGE_ROUND_UP(((ULONG)&_text_end__));
+   BaseAddress = (PVOID)PAGE_ROUND_UP(((ULONG)&_init_end__));
    DPRINT("BaseAddress %x\n",BaseAddress);
 
    /*
@@ -247,12 +269,13 @@ VOID MmInitVirtualMemory(ULONG LastKernelAddress,
    MmInitializeMemoryConsumer(MC_USER, MmTrimUserMemory);
 }
 
-VOID MmInit1(ULONG FirstKrnlPhysAddr,
-            ULONG LastKrnlPhysAddr,
-            ULONG LastKernelAddress,
-            PADDRESS_RANGE BIOSMemoryMap,
-            ULONG AddressRangeCount,
-            ULONG MaxMem)
+VOID INIT_FUNCTION
+MmInit1(ULONG FirstKrnlPhysAddr,
+       ULONG LastKrnlPhysAddr,
+       ULONG LastKernelAddress,
+       PADDRESS_RANGE BIOSMemoryMap,
+       ULONG AddressRangeCount,
+       ULONG MaxMem)
 /*
  * FUNCTION: Initalize memory managment
  */
@@ -370,9 +393,9 @@ VOID MmInit1(ULONG FirstKrnlPhysAddr,
     * segment
     */
    CHECKPOINT;
-   DPRINT("_text_start__ %x _text_end__ %x\n",(int)&_text_start__,(int)&_text_end__);
-   for (i=PAGE_ROUND_UP(((int)&_text_start__));
-       i<PAGE_ROUND_DOWN(((int)&_text_end__));i=i+PAGE_SIZE)
+   DPRINT("_text_start__ %x _init_end__ %x\n",(int)&_text_start__,(int)&_init_end__);
+   for (i=PAGE_ROUND_DOWN(((int)&_text_start__));
+       i<PAGE_ROUND_UP(((int)&_init_end__));i=i+PAGE_SIZE)
      {
        MmSetPageProtect(NULL,
                         (PVOID)i,
@@ -403,13 +426,15 @@ VOID MmInit1(ULONG FirstKrnlPhysAddr,
    MmInitializeMdlImplementation();
 }
 
-VOID MmInit2(VOID)
+VOID INIT_FUNCTION
+MmInit2(VOID)
 {
    MmInitSectionImplementation();
    MmInitPagingFile();
 }
 
-VOID MmInit3(VOID)
+VOID INIT_FUNCTION
+MmInit3(VOID)
 {
    /*
     * Unmap low memory
@@ -433,3 +458,26 @@ VOID MmInit3(VOID)
    /* FIXME: Read parameters from memory */
 }
 
+VOID STATIC
+MiFreeInitMemoryPage(PVOID Context, MEMORY_AREA* MemoryArea, PVOID Address, 
+                    PHYSICAL_ADDRESS PhysAddr, SWAPENTRY SwapEntry, 
+                    BOOLEAN Dirty)
+{
+  assert(SwapEntry == 0);
+  if (PhysAddr.QuadPart  != 0)
+    {
+      MmReleasePageMemoryConsumer(MC_NPPOOL, PhysAddr);
+    }
+}
+
+VOID 
+MiFreeInitMemory(VOID)
+{
+  MmLockAddressSpace(MmGetKernelAddressSpace());
+  MmFreeMemoryArea(MmGetKernelAddressSpace(),
+                  (PVOID)&_init_start__,
+                  PAGE_ROUND_UP((ULONG)&_init_end__) - (ULONG)_init_start__,
+                  MiFreeInitMemoryPage,
+                  NULL);
+  MmUnlockAddressSpace(MmGetKernelAddressSpace());
+}
index 8e732ca..4673b25 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: pagefile.c,v 1.36 2003/08/29 21:22:24 dwelch Exp $
+/* $Id: pagefile.c,v 1.37 2003/10/12 17:05:48 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/mm/pagefile.c
@@ -262,7 +262,7 @@ NTSTATUS MmReadFromSwapPage(SWAPENTRY SwapEntry, PMDL Mdl)
    return(Status);
 }
 
-VOID 
+VOID INIT_FUNCTION
 MmInitPagingFile(VOID)
 {
    ULONG i;
index 19cca9f..c0854bd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: pageop.c,v 1.17 2003/07/21 21:53:53 royce Exp $
+/* $Id: pageop.c,v 1.18 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:    See COPYING in the top level directory
  * PROJECT:      ReactOS kernel
@@ -232,7 +232,7 @@ MmGetPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
   return(PageOp);
 }
 
-VOID
+VOID INIT_FUNCTION
 MmInitializePageOp(VOID)
 {
   memset(MmPageOpHashTable, 0, sizeof(MmPageOpHashTable));
index 9149fbd..458d6c4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ppool.c,v 1.19 2003/08/25 18:51:50 hbirr Exp $
+/* $Id: ppool.c,v 1.20 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -72,7 +72,8 @@ inline static PMM_PPOOL_USED_BLOCK_HEADER address_to_block(PVOID addr)
          ( ((char*)addr) - sizeof(MM_PPOOL_USED_BLOCK_HEADER) - MM_PPOOL_REDZONE_BYTES );
 }
 
-VOID MmInitializePagedPool(VOID)
+VOID INIT_FUNCTION
+MmInitializePagedPool(VOID)
 {
   MmPagedPoolFirstFreeBlock = (PMM_PPOOL_FREE_BLOCK_HEADER)MmPagedPoolBase;
   /*
index ecf5025..bea910c 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: rmap.c,v 1.23 2003/07/21 21:53:53 royce Exp $
+/* $Id: rmap.c,v 1.24 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:   See COPYING in the top directory
  * PROJECT:     ReactOS kernel 
@@ -54,7 +54,7 @@ static NPAGED_LOOKASIDE_LIST RmapLookasideList;
 
 /* FUNCTIONS ****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 MmInitializeRmapList(VOID)
 {
   ExInitializeFastMutex(&RmapListLock);
index 79678f4..5607155 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: section.c,v 1.129 2003/10/07 14:00:10 ekohl Exp $
+/* $Id: section.c,v 1.130 2003/10/12 17:05:48 hbirr Exp $
  *
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/mm/section.c
@@ -2090,7 +2090,7 @@ MmpCreateSection(PVOID ObjectBody,
    return(STATUS_SUCCESS);
 }
 
-NTSTATUS 
+NTSTATUS INIT_FUNCTION
 MmCreatePhysicalMemorySection(VOID)
 {
   HANDLE PhysSectionH;
@@ -2138,7 +2138,7 @@ MmCreatePhysicalMemorySection(VOID)
   return(STATUS_SUCCESS);
 }
 
-NTSTATUS 
+NTSTATUS INIT_FUNCTION
 MmInitSectionImplementation(VOID)
 {
    MmSectionObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
index 3cc47eb..8b38591 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: evtpair.c,v 1.18 2003/10/07 14:00:45 ekohl Exp $
+/* $Id: evtpair.c,v 1.19 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -65,7 +65,8 @@ NtpCreateEventPair(PVOID ObjectBody,
   return(STATUS_SUCCESS);
 }
 
-VOID NtInitializeEventPairImplementation(VOID)
+VOID INIT_FUNCTION
+NtInitializeEventPairImplementation(VOID)
 {
    ExEventPairObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
    
index 3e08d72..12c4e4e 100644 (file)
@@ -78,7 +78,7 @@ NtpDeleteMutant(PVOID ObjectBody)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 NtInitializeMutantImplementation(VOID)
 {
   ExMutantObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
index 1fab355..ad2e5e9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nt.c,v 1.10 2002/09/08 10:23:38 chorns Exp $
+/* $Id: nt.c,v 1.11 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -18,7 +18,8 @@
 
 /* FUNCTIONS *****************************************************************/
 
-VOID NtInit(VOID)
+VOID INIT_FUNCTION
+NtInit(VOID)
 {
    NtInitializeEventImplementation();
    NtInitializeEventPairImplementation();
index 47ad43b..6929278 100644 (file)
@@ -70,7 +70,7 @@ NtpCreateEvent(PVOID ObjectBody,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 NtInitializeEventImplementation(VOID)
 {
    ExEventObjectType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE));
index 61d4133..b09f842 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ntsem.c,v 1.20 2003/10/07 14:00:45 ekohl Exp $
+/* $Id: ntsem.c,v 1.21 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -51,7 +51,8 @@ NtpCreateSemaphore(PVOID ObjectBody,
   return(STATUS_SUCCESS);
 }
 
-VOID NtInitializeSemaphoreImplementation(VOID)
+VOID INIT_FUNCTION
+NtInitializeSemaphoreImplementation(VOID)
 {
    ExSemaphoreType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));
    
index c73ac87..011e10c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nttimer.c,v 1.21 2003/10/07 14:00:45 ekohl Exp $
+/* $Id: nttimer.c,v 1.22 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -118,7 +118,8 @@ NtpTimerApcKernelRoutine(PKAPC Apc,
 }
 
 
-VOID NtInitializeTimerImplementation(VOID)
+VOID INIT_FUNCTION
+NtInitializeTimerImplementation(VOID)
 {
    ExTimerType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));
 
index 9dd25f1..334cfe8 100644 (file)
@@ -359,7 +359,7 @@ KiDeleteProfile(PVOID ObjectBody)
   Profile->BufferMdl = NULL;
 }
 
-VOID
+VOID INIT_FUNCTION
 NtInitializeProfileImplementation(VOID)
 {
   ULONG i;
index a382b2a..1e7636d 100644 (file)
@@ -28,7 +28,7 @@ extern VOID Ki386RetToV86Mode(PKV86M_REGISTERS InRegs,
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 NtEarlyInitVdm(VOID)
 {
   /* GCC 3.4 warns if NULL is passed in parameter 2 to the standard function memcpy */
index bb5dc61..ecf7923 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: namespc.c,v 1.41 2003/10/07 14:01:15 ekohl Exp $
+/* $Id: namespc.c,v 1.42 2003/10/12 17:05:48 hbirr Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -339,7 +339,7 @@ ObpCreateDirectory(PVOID ObjectBody,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 ObInit(VOID)
 /*
  * FUNCTION: Initialize the object manager namespace
index 969fdd2..779dd1f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: symlink.c,v 1.4 2003/09/25 20:07:46 ekohl Exp $
+/* $Id: symlink.c,v 1.5 2003/10/12 17:05:49 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -168,7 +168,8 @@ ObpParseSymbolicLink(PVOID Object,
  *
  * REVISIONS
  */
-VOID ObInitSymbolicLinkImplementation (VOID)
+VOID INIT_FUNCTION
+ObInitSymbolicLinkImplementation (VOID)
 {
   ObSymbolicLinkType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));
 
index 88bfd8f..550fd6d 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: power.c,v 1.7 2003/07/11 01:23:15 royce Exp $
+/* $Id: power.c,v 1.8 2003/10/12 17:05:50 hbirr Exp $
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/po/power.c
  * PURPOSE:         Power Manager
@@ -213,7 +213,7 @@ PopSetSystemPowerState(
   return STATUS_NOT_IMPLEMENTED;
 }
 
-VOID
+VOID INIT_FUNCTION
 PoInit(VOID)
 {
 }
index b20e318..8575dbf 100644 (file)
@@ -43,7 +43,8 @@ PsIdleThreadMain(PVOID Context)
      }
 }
 
-VOID PsInitIdleThread(VOID)
+VOID INIT_FUNCTION
+PsInitIdleThread(VOID)
 {
    KPRIORITY Priority;
    ULONG Affinity;
index 23f718b..3f6e2d0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: locale.c,v 1.4 2002/09/08 10:23:40 chorns Exp $
+/* $Id: locale.c,v 1.5 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -31,7 +31,7 @@ LCID PsDefaultSystemLocaleId = 0;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 PiInitDefaultLocale(VOID)
 /*
  * FUNCTION:
index dfc7143..10ab3af 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: process.c,v 1.118 2003/10/07 14:01:57 ekohl Exp $
+/* $Id: process.c,v 1.119 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -229,7 +229,7 @@ PiKillMostProcesses(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 PsInitProcessManagment(VOID)
 {
    PKPROCESS KProcess;
index 0a503f7..c871702 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: psmgr.c,v 1.16 2003/07/23 19:13:37 dwelch Exp $
+/* $Id: psmgr.c,v 1.17 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:               See COPYING in the top level directory
  * PROJECT:                 ReactOS kernel
@@ -26,7 +26,8 @@ VOID PiShutdownProcessManager(VOID)
    PiKillMostProcesses();
 }
 
-VOID PiInitProcessManager(VOID)
+VOID INIT_FUNCTION
+PiInitProcessManager(VOID)
 {
    PsInitProcessManagment();
    PsInitThreadManagment();
index cc00e3c..927204f 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: suspend.c,v 1.12 2003/07/21 21:36:01 dwelch Exp $
+/* $Id: suspend.c,v 1.13 2003/10/12 17:05:50 hbirr Exp $
  *
  * PROJECT:                ReactOS kernel
  * FILE:                   ntoskrnl/ps/suspend.c
@@ -213,7 +213,7 @@ NtSuspendThread(IN HANDLE ThreadHandle,
   return(STATUS_SUCCESS);
 }
 
-VOID
+VOID INIT_FUNCTION
 PsInitialiseSuspendImplementation(VOID)
 {
   ExInitializeFastMutex(&SuspendMutex);
index 947cfbb..2acd333 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: thread.c,v 1.119 2003/10/07 14:01:57 ekohl Exp $
+/* $Id: thread.c,v 1.120 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:              See COPYING in the top level directory
  * PROJECT:                ReactOS kernel
@@ -418,7 +418,7 @@ PsApplicationProcessorInit(VOID)
     (PVOID)IdleThreads[KeGetCurrentProcessorNumber()];
 }
 
-VOID
+VOID INIT_FUNCTION
 PsPrepareForApplicationProcessorInit(ULONG Id)
 {
   PETHREAD IdleThread;
@@ -441,7 +441,7 @@ PsPrepareForApplicationProcessorInit(ULONG Id)
           Id, IdleThread->Cid.UniqueThread);
 }
 
-VOID 
+VOID INIT_FUNCTION
 PsInitThreadManagment(VOID)
 /*
  * FUNCTION: Initialize thread managment
index 6e5e987..c6874a2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: w32call.c,v 1.8 2003/07/23 19:13:37 dwelch Exp $
+/* $Id: w32call.c,v 1.9 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:              See COPYING in the top level directory
  * PROJECT:                ReactOS kernel
@@ -56,7 +56,7 @@ static LIST_ENTRY CallbackStackListHead;
 
 /* FUNCTIONS ***************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 PsInitialiseW32Call(VOID)
 {
   InitializeListHead(&CallbackStackListHead);
index d301a69..a5a0556 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: nls.c,v 1.21 2003/10/11 17:23:52 hbirr Exp $
+/* $Id: nls.c,v 1.22 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -62,7 +62,7 @@ ULONG NlsUnicodeTableOffset = 0;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 RtlpImportAnsiCodePage(PUSHORT TableBase,
                       ULONG Size)
 {
@@ -71,7 +71,7 @@ RtlpImportAnsiCodePage(PUSHORT TableBase,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 RtlpImportOemCodePage(PUSHORT TableBase,
                      ULONG Size)
 {
@@ -80,7 +80,7 @@ RtlpImportOemCodePage(PUSHORT TableBase,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 RtlpImportUnicodeCasemap(PUSHORT TableBase,
                         ULONG Size)
 {
@@ -89,7 +89,7 @@ RtlpImportUnicodeCasemap(PUSHORT TableBase,
 }
 
 
-VOID
+VOID INIT_FUNCTION
 RtlpCreateInitialNlsTables(VOID)
 {
   NLSTABLEINFO NlsTable;
@@ -110,7 +110,7 @@ RtlpCreateInitialNlsTables(VOID)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 RtlpCreateNlsSection(VOID)
 {
   NLSTABLEINFO NlsTable;
index 4e69055..75e4da3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: acl.c,v 1.12 2003/07/11 01:23:16 royce Exp $
+/* $Id: acl.c,v 1.13 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -32,7 +32,7 @@ PACL SeUnrestrictedDacl = NULL;
 
 /* FUNCTIONS ****************************************************************/
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 SepInitDACLs(VOID)
 {
   ULONG AclLength2;
index bb9dfff..26f944b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: luid.c,v 1.8 2003/07/11 01:23:16 royce Exp $
+/* $Id: luid.c,v 1.9 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -25,7 +25,7 @@ static LARGE_INTEGER LuidValue;
 
 /* FUNCTIONS *****************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 SepInitLuid(VOID)
 {
   KeInitializeSpinLock(&LuidLock);
index f34c4b4..f142e87 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: priv.c,v 1.9 2003/07/11 01:23:16 royce Exp $
+/* $Id: priv.c,v 1.10 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -47,7 +47,7 @@ LUID SeRemoteShutdownPrivilege;
 
 /* FUNCTIONS ***************************************************************/
 
-VOID
+VOID INIT_FUNCTION
 SepInitPrivileges (VOID)
 {
   SeCreateTokenPrivilege.LowPart = SE_CREATE_TOKEN_PRIVILEGE;
index f7c6a2b..384358e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sd.c,v 1.10 2003/07/11 01:23:16 royce Exp $
+/* $Id: sd.c,v 1.11 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -27,7 +27,7 @@ PSECURITY_DESCRIPTOR SeUnrestrictedSd = NULL;
 
 /* FUNCTIONS ***************************************************************/
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 SepInitSDs(VOID)
 {
   /* Create PublicDefaultSd */
index 602d343..ded22d1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: semgr.c,v 1.26 2003/07/20 22:10:23 ekohl Exp $
+/* $Id: semgr.c,v 1.27 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -32,7 +32,7 @@ static BOOLEAN SepInitExports(VOID);
 /* FUNCTIONS ****************************************************************/
 
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 SeInit1(VOID)
 {
   SepInitLuid();
@@ -55,7 +55,7 @@ SeInit1(VOID)
 }
 
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 SeInit2(VOID)
 {
   SepInitializeTokenImplementation();
@@ -119,7 +119,7 @@ SeInitSRM(VOID)
 }
 
 
-static BOOLEAN
+static BOOLEAN INIT_FUNCTION
 SepInitExports(VOID)
 {
   SeExports = ExAllocatePoolWithTag(NonPagedPool,
index 6ca52c0..8e821c7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sid.c,v 1.14 2003/07/11 01:23:16 royce Exp $
+/* $Id: sid.c,v 1.15 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -58,7 +58,7 @@ PSID SeAliasBackupOpsSid = NULL;
 /* FUNCTIONS ****************************************************************/
 
 
-BOOLEAN
+BOOLEAN INIT_FUNCTION
 SepInitSecurityIDs(VOID)
 {
   ULONG SidLength0;
index 11925fa..8f211d2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: token.c,v 1.28 2003/10/07 14:04:52 ekohl Exp $
+/* $Id: token.c,v 1.29 2003/10/12 17:05:50 hbirr Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
@@ -455,7 +455,7 @@ SepDeleteToken(PVOID ObjectBody)
 }
 
 
-VOID
+VOID INIT_FUNCTION
 SepInitializeTokenImplementation(VOID)
 {
   SepTokenObjectType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE));