From 71fefa32db013317842fd9224b63bcf5f72f2e32 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 30 Dec 2018 12:19:11 +0100 Subject: [PATCH] [NDK][NTOS] Add global definition of INIT_FUNCTION/INIT_SECTION (#779) * Add an NDK header to define INIT_FUNCTION/INIT_SECTION globally * Use _declspec(allocate(x)) and _declspec(code_seg(x)) on MSVC versions that support it * Use INIT_FUNCTION on functions only and INIT_SECTION on data only (required by MSVC) * Place INIT_FUNCTION before the return type (required by MSVC) * Make sure declarations and implementations share the same modifiers (required by MSVC) * Add a global linker option to suppress warnings about defined but unused INIT section * Merge INIT section into .text in freeldr --- boot/freeldr/freeldr/CMakeLists.txt | 4 +-- boot/freeldr/freeldr/freeldr_i386.lds | 2 ++ drivers/filesystems/fastfat/fastio.c | 2 +- drivers/filesystems/fastfat/iface.c | 2 +- drivers/filesystems/fastfat/vfat.h | 9 ++---- drivers/filesystems/mup/dfs.c | 2 +- drivers/filesystems/mup/dfs.h | 10 +++++++ drivers/filesystems/mup/mup.c | 9 ++++-- drivers/filesystems/mup/mup.h | 7 +---- drivers/filesystems/ntfs/ntfs.c | 4 +-- drivers/filesystems/ntfs/ntfs.h | 9 ++---- hal/halx86/acpi/busemul.c | 1 + hal/halx86/acpi/halacpi.c | 7 +++++ hal/halx86/apic/rtctimer.c | 2 +- hal/halx86/generic/cmos.c | 2 +- hal/halx86/generic/dma.c | 2 +- hal/halx86/generic/halinit.c | 5 ++-- hal/halx86/generic/misc.c | 4 +-- hal/halx86/generic/timer.c | 2 +- hal/halx86/generic/usage.c | 17 ++++++----- hal/halx86/include/bus.h | 5 ++++ hal/halx86/include/halacpi.h | 1 + hal/halx86/include/halp.h | 26 +++++++++++------ hal/halx86/legacy/bus/pcibus.c | 10 +++---- hal/halx86/legacy/bus/sysbus.c | 1 + hal/halx86/legacy/bussupp.c | 41 +++++++++++++++++---------- hal/halx86/legacy/halpcat.c | 12 ++++---- hal/halx86/up/halinit_mini.c | 1 + ntoskrnl/cache/newcc.h | 3 ++ ntoskrnl/cc/cacheman.c | 4 +-- ntoskrnl/config/cmalloc.c | 4 +-- ntoskrnl/config/cmboot.c | 20 ++++++------- ntoskrnl/config/cmconfig.c | 6 ++-- ntoskrnl/config/cmcontrl.c | 6 ++-- ntoskrnl/config/cmdata.c | 8 +++--- ntoskrnl/config/cmdelay.c | 4 +-- ntoskrnl/config/cmhook.c | 2 +- ntoskrnl/config/cmkcbncb.c | 2 +- ntoskrnl/config/cmsysini.c | 20 ++++++------- ntoskrnl/ex/handle.c | 2 +- ntoskrnl/ex/hdlsterm.c | 2 +- ntoskrnl/ex/init.c | 24 ++++++++-------- ntoskrnl/ex/lookas.c | 6 ++-- ntoskrnl/ex/pushlock.c | 2 +- ntoskrnl/ex/resource.c | 2 +- ntoskrnl/ex/xipdisp.c | 4 +-- ntoskrnl/fsrtl/fsrtlpc.c | 4 +-- ntoskrnl/fsrtl/stackovf.c | 2 +- ntoskrnl/inbv/inbv.c | 18 ++++++------ ntoskrnl/include/internal/amd64/mm.h | 1 + ntoskrnl/include/internal/cc.h | 3 ++ ntoskrnl/include/internal/cm.h | 17 ++++++++++- ntoskrnl/include/internal/dbgk.h | 1 + ntoskrnl/include/internal/ex.h | 20 +++++++++++++ ntoskrnl/include/internal/fsrtl.h | 3 ++ ntoskrnl/include/internal/i386/ke.h | 21 +++++++++++++- ntoskrnl/include/internal/inbv.h | 8 ++++++ ntoskrnl/include/internal/io.h | 13 +++++++++ ntoskrnl/include/internal/ke.h | 9 ++++++ ntoskrnl/include/internal/lpc.h | 1 + ntoskrnl/include/internal/mm.h | 15 +++++++++- ntoskrnl/include/internal/ntoskrnl.h | 11 +------ ntoskrnl/include/internal/ob.h | 3 ++ ntoskrnl/include/internal/po.h | 2 ++ ntoskrnl/include/internal/ps.h | 4 +++ ntoskrnl/include/internal/se.h | 7 +++++ ntoskrnl/io/iomgr/arcname.c | 12 ++++---- ntoskrnl/io/iomgr/driver.c | 8 +++--- ntoskrnl/io/iomgr/ramdisk.c | 2 +- ntoskrnl/io/iomgr/rawfs.c | 2 +- ntoskrnl/io/pnpmgr/pnpinit.c | 4 +-- ntoskrnl/io/pnpmgr/pnpmgr.c | 10 +++++-- ntoskrnl/ke/amd64/kiinit.c | 2 ++ ntoskrnl/ke/config.c | 4 +-- ntoskrnl/ke/i386/cpu.c | 32 ++++++++++----------- ntoskrnl/ke/i386/kiinit.c | 12 ++++---- ntoskrnl/ke/i386/mtrr.c | 4 +-- ntoskrnl/ke/i386/patpge.c | 6 ++-- ntoskrnl/ke/krnlinit.c | 8 +++--- ntoskrnl/lpc/port.c | 2 +- ntoskrnl/mm/ARM3/expool.c | 6 ++-- ntoskrnl/mm/ARM3/i386/init.c | 6 ++-- ntoskrnl/mm/ARM3/largepag.c | 6 ++-- ntoskrnl/mm/ARM3/miarm.h | 20 ++++++++++++- ntoskrnl/mm/ARM3/mminit.c | 40 +++++++++++++------------- ntoskrnl/mm/ARM3/pool.c | 6 ++-- ntoskrnl/mm/ARM3/procsup.c | 4 +-- ntoskrnl/mm/ARM3/sysldr.c | 12 ++++---- ntoskrnl/mm/ARM3/syspte.c | 2 +- ntoskrnl/mm/mminit.c | 10 +++---- ntoskrnl/ob/obinit.c | 2 +- ntoskrnl/ob/obname.c | 4 +-- ntoskrnl/ob/obsdcach.c | 2 +- ntoskrnl/po/power.c | 4 +-- ntoskrnl/ps/apphelp.c | 2 +- ntoskrnl/ps/job.c | 2 +- ntoskrnl/ps/psmgr.c | 18 ++++++------ ntoskrnl/ps/quota.c | 2 +- ntoskrnl/se/semgr.c | 9 +++--- ntoskrnl/vdm/vdmmain.c | 4 +-- sdk/cmake/msvc.cmake | 6 ++-- sdk/include/ndk/halfuncs.h | 3 ++ sdk/include/ndk/inbvfuncs.h | 2 ++ sdk/include/ndk/kefuncs.h | 3 ++ sdk/include/ndk/section_attribs.h | 41 +++++++++++++++++++++++++++ win32ss/gdi/eng/ldevobj.h | 1 + win32ss/user/ntuser/main.c | 2 +- win32ss/win32kp.h | 8 ------ 108 files changed, 522 insertions(+), 296 deletions(-) create mode 100644 sdk/include/ndk/section_attribs.h diff --git a/boot/freeldr/freeldr/CMakeLists.txt b/boot/freeldr/freeldr/CMakeLists.txt index 762b53e3963..3b5698133ce 100644 --- a/boot/freeldr/freeldr/CMakeLists.txt +++ b/boot/freeldr/freeldr/CMakeLists.txt @@ -233,8 +233,8 @@ if(MSVC) add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER") add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER") else() - add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") - add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") + add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:INIT=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") + add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:INIT=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text") endif() else() add_target_link_flags(freeldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds") diff --git a/boot/freeldr/freeldr/freeldr_i386.lds b/boot/freeldr/freeldr/freeldr_i386.lds index 36a44ee7add..5cb2cb6c7be 100644 --- a/boot/freeldr/freeldr/freeldr_i386.lds +++ b/boot/freeldr/freeldr/freeldr_i386.lds @@ -4,6 +4,8 @@ SECTIONS { *(.text) *(SORT(.text*)) + *(INIT) + *(SORT(INIT*)) *(.data) *(SORT(.data*)) *(.rdata) diff --git a/drivers/filesystems/fastfat/fastio.c b/drivers/filesystems/fastfat/fastio.c index 248f39f5bf9..428fdbb2201 100644 --- a/drivers/filesystems/fastfat/fastio.c +++ b/drivers/filesystems/fastfat/fastio.c @@ -753,7 +753,7 @@ VfatReleaseFromLazyWrite( ExReleaseResourceLite(&(Fcb->MainResource)); } -INIT_SECTION +INIT_FUNCTION VOID VfatInitFastIoRoutines( PFAST_IO_DISPATCH FastIoDispatch) diff --git a/drivers/filesystems/fastfat/iface.c b/drivers/filesystems/fastfat/iface.c index c98e64f02bd..f4c6608a3ed 100644 --- a/drivers/filesystems/fastfat/iface.c +++ b/drivers/filesystems/fastfat/iface.c @@ -48,7 +48,7 @@ PVFAT_GLOBAL_DATA VfatGlobalData; * RegistryPath = path to our configuration entries * RETURNS: Success or failure */ -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI DriverEntry( diff --git a/drivers/filesystems/fastfat/vfat.h b/drivers/filesystems/fastfat/vfat.h index 77b2998dade..48923cdc945 100644 --- a/drivers/filesystems/fastfat/vfat.h +++ b/drivers/filesystems/fastfat/vfat.h @@ -5,17 +5,12 @@ #include #include #include +#include #ifdef KDBG #include #include #endif -#ifdef __GNUC__ -#define INIT_SECTION __attribute__((section ("INIT"))) -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#endif - #define USE_ROS_CC_AND_FS #define ENABLE_SWAPOUT @@ -823,6 +818,7 @@ VfatSetExtendedAttributes( /* fastio.c */ +INIT_FUNCTION VOID VfatInitFastIoRoutines( PFAST_IO_DISPATCH FastIoDispatch); @@ -1127,6 +1123,7 @@ VfatFileSystemControl( /* iface.c */ +INIT_FUNCTION NTSTATUS NTAPI DriverEntry( diff --git a/drivers/filesystems/mup/dfs.c b/drivers/filesystems/mup/dfs.c index 05371e357b6..13a4fe205de 100644 --- a/drivers/filesystems/mup/dfs.c +++ b/drivers/filesystems/mup/dfs.c @@ -82,7 +82,7 @@ DfsUnload(PDRIVER_OBJECT DriverObject) UNIMPLEMENTED; } -INIT_SECTION +INIT_FUNCTION NTSTATUS DfsDriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) diff --git a/drivers/filesystems/mup/dfs.h b/drivers/filesystems/mup/dfs.h index 107cb16be57..d158a055abc 100644 --- a/drivers/filesystems/mup/dfs.h +++ b/drivers/filesystems/mup/dfs.h @@ -1,6 +1,15 @@ #ifndef _DFS_PCH_ #define _DFS_PCH_ +#ifndef INIT_SECTION +#ifdef __GNUC__ +#define INIT_SECTION __attribute__((section ("INIT"))) +#else +#define INIT_SECTION /* Done via alloc_text for MSC */ +#endif +#define INIT_FUNCTION INIT_SECTION +#endif + #define DFS_OPEN_CONTEXT 0xFF444653 #define DFS_DOWNLEVEL_OPEN_CONTEXT 0x11444653 #define DFS_CSCAGENT_NAME_CONTEXT 0xAAAAAAAA @@ -49,6 +58,7 @@ DfsUnload( PDRIVER_OBJECT DriverObject ); +INIT_FUNCTION NTSTATUS DfsDriverEntry( PDRIVER_OBJECT DriverObject, diff --git a/drivers/filesystems/mup/mup.c b/drivers/filesystems/mup/mup.c index e8cc8d7e9bf..64a277a4655 100644 --- a/drivers/filesystems/mup/mup.c +++ b/drivers/filesystems/mup/mup.c @@ -32,6 +32,7 @@ #define NDEBUG #include +INIT_FUNCTION NTSTATUS NTAPI DriverEntry( @@ -39,11 +40,13 @@ DriverEntry( PUNICODE_STRING RegistryPath ); +INIT_FUNCTION VOID MupInitializeData( VOID ); +INIT_FUNCTION VOID MupInitializeVcb( PMUP_VCB Vcb @@ -76,7 +79,7 @@ NTSTATUS MupOrderedErrorList[] = { STATUS_UNSUCCESSFUL, /* FUNCTIONS ****************************************************************/ -INIT_SECTION +INIT_FUNCTION VOID MupInitializeData(VOID) { @@ -102,7 +105,7 @@ MupUninitializeData() ExDeleteResourceLite(&MupVcbLock); } -INIT_SECTION +INIT_FUNCTION VOID MupInitializeVcb(PMUP_VCB Vcb) { @@ -2507,7 +2510,7 @@ MupUnload(PDRIVER_OBJECT DriverObject) * RegistryPath = path to our configuration entries * RETURNS: Success or failure */ -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, diff --git a/drivers/filesystems/mup/mup.h b/drivers/filesystems/mup/mup.h index 810ddc6ec51..ad1aaf549c3 100644 --- a/drivers/filesystems/mup/mup.h +++ b/drivers/filesystems/mup/mup.h @@ -5,12 +5,7 @@ #include #include #include - -#ifdef __GNUC__ -#define INIT_SECTION __attribute__((section ("INIT"))) -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#endif +#include #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) #define IO_METHOD_FROM_CTL_CODE(C) (C & 0x00000003) diff --git a/drivers/filesystems/ntfs/ntfs.c b/drivers/filesystems/ntfs/ntfs.c index c29badab08f..a102439cf90 100644 --- a/drivers/filesystems/ntfs/ntfs.c +++ b/drivers/filesystems/ntfs/ntfs.c @@ -49,7 +49,7 @@ PNTFS_GLOBAL_DATA NtfsGlobalData = NULL; * RegistryPath = path to our configuration entries * RETURNS: Success or failure */ -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, @@ -169,7 +169,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject, * DriverObject = object describing this driver * RETURNS: Nothing */ -INIT_SECTION +INIT_FUNCTION VOID NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject) diff --git a/drivers/filesystems/ntfs/ntfs.h b/drivers/filesystems/ntfs/ntfs.h index a0cb6ab7cdb..c50a077e1c1 100644 --- a/drivers/filesystems/ntfs/ntfs.h +++ b/drivers/filesystems/ntfs/ntfs.h @@ -3,12 +3,7 @@ #include #include - -#ifdef __GNUC__ -#define INIT_SECTION __attribute__((section ("INIT"))) -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#endif +#include #define CACHEPAGESIZE(pDeviceExt) \ ((pDeviceExt)->NtfsInfo.UCHARsPerCluster > PAGE_SIZE ? \ @@ -1260,8 +1255,10 @@ NtfsSetVolumeInformation(PNTFS_IRP_CONTEXT IrpContext); /* ntfs.c */ +INIT_FUNCTION DRIVER_INITIALIZE DriverEntry; +INIT_FUNCTION VOID NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject); diff --git a/hal/halx86/acpi/busemul.c b/hal/halx86/acpi/busemul.c index 87ff519994e..d63c89cce50 100644 --- a/hal/halx86/acpi/busemul.c +++ b/hal/halx86/acpi/busemul.c @@ -16,6 +16,7 @@ /* PRIVATE FUNCTIONS **********************************************************/ +INIT_FUNCTION VOID NTAPI HalpRegisterKdSupportFunctions(VOID) diff --git a/hal/halx86/acpi/halacpi.c b/hal/halx86/acpi/halacpi.c index 8b9f204717a..7f2779e19cd 100644 --- a/hal/halx86/acpi/halacpi.c +++ b/hal/halx86/acpi/halacpi.c @@ -786,6 +786,7 @@ HaliAcpiTimerInit(IN ULONG TimerPort, //HalaAcpiTimerInit(TimerPort, TimerValExt); } +INIT_FUNCTION NTSTATUS NTAPI HalpSetupAcpiPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) @@ -906,6 +907,7 @@ HalpSetupAcpiPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return STATUS_SUCCESS; } +INIT_FUNCTION VOID NTAPI HalpInitializePciBus(VOID) @@ -927,6 +929,7 @@ HalpInitNonBusHandler(VOID) HalFindBusAddressTranslation = HalpFindBusAddressTranslation; } +INIT_FUNCTION VOID NTAPI HalpInitBusHandlers(VOID) @@ -935,6 +938,7 @@ HalpInitBusHandlers(VOID) HalpInitNonBusHandler(); } +INIT_FUNCTION VOID NTAPI HalpBuildAddressMap(VOID) @@ -942,6 +946,7 @@ HalpBuildAddressMap(VOID) /* ACPI is magic baby */ } +INIT_FUNCTION BOOLEAN NTAPI HalpGetDebugPortTable(VOID) @@ -950,6 +955,7 @@ HalpGetDebugPortTable(VOID) (HalpDebugPortTable->BaseAddress.AddressSpaceID == 1)); } +INIT_FUNCTION ULONG NTAPI HalpIs16BitPortDecodeSupported(VOID) @@ -1059,6 +1065,7 @@ HalpQueryAcpiResourceRequirements(OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requiremen /* * @implemented */ +INIT_FUNCTION VOID NTAPI HalReportResourceUsage(VOID) diff --git a/hal/halx86/apic/rtctimer.c b/hal/halx86/apic/rtctimer.c index b4ffd6c1158..afd3d9dab5a 100644 --- a/hal/halx86/apic/rtctimer.c +++ b/hal/halx86/apic/rtctimer.c @@ -64,7 +64,7 @@ RtcSetClockRate(UCHAR ClockRate) HalpReleaseCmosSpinLock(); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitializeClock(VOID) diff --git a/hal/halx86/generic/cmos.c b/hal/halx86/generic/cmos.c index a8c8d794b46..689883bcc56 100644 --- a/hal/halx86/generic/cmos.c +++ b/hal/halx86/generic/cmos.c @@ -154,7 +154,7 @@ HalpSetCmosData(IN ULONG BusNumber, return Length - Len; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitializeCmos(VOID) diff --git a/hal/halx86/generic/dma.c b/hal/halx86/generic/dma.c index 48748c7d5a6..7bcfc33e037 100644 --- a/hal/halx86/generic/dma.c +++ b/hal/halx86/generic/dma.c @@ -133,7 +133,7 @@ static DMA_OPERATIONS HalpDmaOperations = { /* FUNCTIONS *****************************************************************/ #ifndef _MINIHAL_ -INIT_SECTION +INIT_FUNCTION VOID HalpInitDma(VOID) { diff --git a/hal/halx86/generic/halinit.c b/hal/halx86/generic/halinit.c index f03038b6085..002605deb9f 100644 --- a/hal/halx86/generic/halinit.c +++ b/hal/halx86/generic/halinit.c @@ -12,6 +12,7 @@ #define NDEBUG #include +INIT_FUNCTION VOID NTAPI HalpGetParameters( @@ -29,7 +30,7 @@ BOOLEAN HalpPciLockSettings; /* PRIVATE FUNCTIONS *********************************************************/ -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpGetParameters(IN PLOADER_PARAMETER_BLOCK LoaderBlock) @@ -76,7 +77,7 @@ HalInitializeProcessor( /* * @implemented */ -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalInitSystem(IN ULONG BootPhase, diff --git a/hal/halx86/generic/misc.c b/hal/halx86/generic/misc.c index b1ca888802b..866b4591069 100644 --- a/hal/halx86/generic/misc.c +++ b/hal/halx86/generic/misc.c @@ -27,7 +27,7 @@ CHAR HalpSerialNumber[31]; /* PRIVATE FUNCTIONS **********************************************************/ #ifndef _MINIHAL_ -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpReportSerialNumber(VOID) @@ -58,7 +58,7 @@ HalpReportSerialNumber(VOID) } } -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpMarkAcpiHal(VOID) diff --git a/hal/halx86/generic/timer.c b/hal/halx86/generic/timer.c index 3b3f77803e1..35606b96ece 100644 --- a/hal/halx86/generic/timer.c +++ b/hal/halx86/generic/timer.c @@ -111,7 +111,7 @@ HalpSetTimerRollOver(USHORT RollOver) __writeeflags(Flags); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitializeClock(VOID) diff --git a/hal/halx86/generic/usage.c b/hal/halx86/generic/usage.c index 725aa423579..5f94fee5f59 100644 --- a/hal/halx86/generic/usage.c +++ b/hal/halx86/generic/usage.c @@ -12,6 +12,7 @@ #define NDEBUG #include +INIT_FUNCTION VOID NTAPI HalpGetResourceSortValue( @@ -20,6 +21,7 @@ HalpGetResourceSortValue( OUT PLARGE_INTEGER Value ); +INIT_FUNCTION VOID NTAPI HalpBuildPartialFromIdt( @@ -28,6 +30,7 @@ HalpBuildPartialFromIdt( IN PCM_PARTIAL_RESOURCE_DESCRIPTOR TranslatedDescriptor ); +INIT_FUNCTION VOID NTAPI HalpBuildPartialFromAddress( @@ -97,7 +100,7 @@ ADDRESS_USAGE HalpDefaultIoSpace = /* FUNCTIONS ******************************************************************/ #ifndef _MINIHAL_ -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpGetResourceSortValue(IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, @@ -137,7 +140,7 @@ HalpGetResourceSortValue(IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, } } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpBuildPartialFromIdt(IN ULONG Entry, @@ -175,7 +178,7 @@ HalpBuildPartialFromIdt(IN ULONG Entry, TranslatedDescriptor->u.Interrupt.Level = HalpIDTUsage[Entry].Irql; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpBuildPartialFromAddress(IN INTERFACE_TYPE Interface, @@ -243,7 +246,7 @@ HalpBuildPartialFromAddress(IN INTERFACE_TYPE Interface, } } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpReportResourceUsage(IN PUNICODE_STRING HalName, @@ -522,7 +525,7 @@ HalpReportResourceUsage(IN PUNICODE_STRING HalName, } #endif -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpRegisterVector(IN UCHAR Flags, @@ -539,7 +542,7 @@ HalpRegisterVector(IN UCHAR Flags, } #ifndef _MINIHAL_ -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpEnableInterruptHandler(IN UCHAR Flags, @@ -562,7 +565,7 @@ HalpEnableInterruptHandler(IN UCHAR Flags, HalEnableSystemInterrupt(SystemVector, Irql, Mode); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpGetNMICrashFlag(VOID) diff --git a/hal/halx86/include/bus.h b/hal/halx86/include/bus.h index 56d3e5507fb..755595c3ae8 100644 --- a/hal/halx86/include/bus.h +++ b/hal/halx86/include/bus.h @@ -282,6 +282,7 @@ extern PCI_CONFIG_HANDLER PCIConfigHandler; extern PCI_CONFIG_HANDLER PCIConfigHandlerType1; extern PCI_CONFIG_HANDLER PCIConfigHandlerType2; +INIT_FUNCTION PPCI_REGISTRY_INFO_INTERNAL NTAPI HalpQueryPciRegistryInfo( @@ -425,12 +426,14 @@ HalpSetCmosData( IN ULONG Length ); +INIT_FUNCTION VOID NTAPI HalpInitializePciBus( VOID ); +INIT_FUNCTION VOID NTAPI HalpInitializePciStubs( @@ -470,6 +473,7 @@ HalpFindBusAddressTranslation( IN BOOLEAN NextBus ); +INIT_FUNCTION VOID NTAPI HalpRegisterPciDebuggingDeviceInfo( @@ -606,6 +610,7 @@ HalpTranslateIsaBusAddress( OUT PPHYSICAL_ADDRESS TranslatedAddress ); +INIT_FUNCTION ULONG NTAPI HalpGetSystemInterruptVector( diff --git a/hal/halx86/include/halacpi.h b/hal/halx86/include/halacpi.h index 8f51fdf3693..a4a68f6793e 100644 --- a/hal/halx86/include/halacpi.h +++ b/hal/halx86/include/halacpi.h @@ -24,6 +24,7 @@ HalpAcpiGetTable( IN ULONG Signature ); +INIT_FUNCTION NTSTATUS NTAPI HalpSetupAcpiPhase0( diff --git a/hal/halx86/include/halp.h b/hal/halx86/include/halp.h index a8e935ff9bb..190bfe84636 100644 --- a/hal/halx86/include/halp.h +++ b/hal/halx86/include/halp.h @@ -4,13 +4,6 @@ #pragma once -#if defined(__GNUC__) && !defined(_MINIHAL_) -#define INIT_SECTION __attribute__((section ("INIT"))) -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#endif - - #ifdef CONFIG_SMP #define HAL_BUILD_TYPE (DBG ? PRCB_BUILD_DEBUG : 0) #else @@ -556,6 +549,7 @@ typedef struct _HalAddressUsage PADAPTER_OBJECT NTAPI HalpAllocateAdapterEx(ULONG NumberOfMapRegisters,BOOLEAN IsMaster, BOOLEAN Dma32BitAddresses); /* sysinfo.c */ +INIT_FUNCTION VOID NTAPI HalpRegisterVector(IN UCHAR Flags, @@ -563,6 +557,7 @@ HalpRegisterVector(IN UCHAR Flags, IN ULONG SystemVector, IN KIRQL Irql); +INIT_FUNCTION VOID NTAPI HalpEnableInterruptHandler(IN UCHAR Flags, @@ -584,7 +579,7 @@ DECLSPEC_NORETURN VOID FASTCALL HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME Tr extern BOOLEAN HalpProfilingStopped; /* timer.c */ -VOID NTAPI HalpInitializeClock(VOID); +INIT_FUNCTION VOID NTAPI HalpInitializeClock(VOID); VOID __cdecl HalpClockInterrupt(VOID); VOID __cdecl HalpProfileInterrupt(VOID); @@ -596,7 +591,7 @@ HalpCalibrateStallExecution(VOID); VOID HalpInitPciBus (VOID); /* dma.c */ -VOID HalpInitDma (VOID); +INIT_FUNCTION VOID HalpInitDma (VOID); /* Non-generic initialization */ VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock); @@ -615,12 +610,14 @@ HalpCheckPowerButton( VOID ); +INIT_FUNCTION VOID NTAPI HalpRegisterKdSupportFunctions( VOID ); +INIT_FUNCTION NTSTATUS NTAPI HalpSetupPciDeviceForDebugging( @@ -628,6 +625,7 @@ HalpSetupPciDeviceForDebugging( IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice ); +INIT_FUNCTION NTSTATUS NTAPI HalpReleasePciDeviceForDebugging( @@ -727,6 +725,7 @@ HaliHaltSystem( // // CMOS Routines // +INIT_FUNCTION VOID NTAPI HalpInitializeCmos( @@ -777,36 +776,42 @@ HalpOpenRegistryKey( IN BOOLEAN Create ); +INIT_FUNCTION VOID NTAPI HalpGetNMICrashFlag( VOID ); +INIT_FUNCTION BOOLEAN NTAPI HalpGetDebugPortTable( VOID ); +INIT_FUNCTION VOID NTAPI HalpReportSerialNumber( VOID ); +INIT_FUNCTION NTSTATUS NTAPI HalpMarkAcpiHal( VOID ); +INIT_FUNCTION VOID NTAPI HalpBuildAddressMap( VOID ); +INIT_FUNCTION VOID NTAPI HalpReportResourceUsage( @@ -814,6 +819,7 @@ HalpReportResourceUsage( IN INTERFACE_TYPE InterfaceType ); +INIT_FUNCTION ULONG NTAPI HalpIs16BitPortDecodeSupported( @@ -834,6 +840,7 @@ KeUpdateSystemTime( IN KIRQL OldIrql ); +INIT_FUNCTION VOID NTAPI HalpInitBusHandlers( @@ -846,6 +853,7 @@ HaliInitPnpDriver( VOID ); +INIT_FUNCTION VOID NTAPI HalpDebugPciDumpBus( diff --git a/hal/halx86/legacy/bus/pcibus.c b/hal/halx86/legacy/bus/pcibus.c index 4f363ad3792..c06f0bafec5 100644 --- a/hal/halx86/legacy/bus/pcibus.c +++ b/hal/halx86/legacy/bus/pcibus.c @@ -608,7 +608,7 @@ HalpGetISAFixedPCIIrq(IN PBUS_HANDLER BusHandler, return STATUS_SUCCESS; } -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpSetupPciDeviceForDebugging(IN PVOID LoaderBlock, @@ -618,7 +618,7 @@ HalpSetupPciDeviceForDebugging(IN PVOID LoaderBlock, return STATUS_NOT_IMPLEMENTED; } -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpReleasePciDeviceForDebugging(IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice) @@ -627,7 +627,7 @@ HalpReleasePciDeviceForDebugging(IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice) return STATUS_NOT_IMPLEMENTED; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpRegisterPciDebuggingDeviceInfo(VOID) @@ -862,7 +862,7 @@ HaliPciInterfaceReadConfig(IN PBUS_HANDLER RootBusHandler, return Length; } -INIT_SECTION +INIT_FUNCTION PPCI_REGISTRY_INFO_INTERNAL NTAPI HalpQueryPciRegistryInfo(VOID) @@ -1095,7 +1095,7 @@ HalpQueryPciRegistryInfo(VOID) #endif } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitializePciStubs(VOID) diff --git a/hal/halx86/legacy/bus/sysbus.c b/hal/halx86/legacy/bus/sysbus.c index fccb8233982..ec2019dfd60 100644 --- a/hal/halx86/legacy/bus/sysbus.c +++ b/hal/halx86/legacy/bus/sysbus.c @@ -139,6 +139,7 @@ HalpGetRootInterruptVector(IN ULONG BusInterruptLevel, return SystemVector; } +INIT_FUNCTION ULONG NTAPI HalpGetSystemInterruptVector(IN PBUS_HANDLER BusHandler, diff --git a/hal/halx86/legacy/bussupp.c b/hal/halx86/legacy/bussupp.c index 4d20396560f..7fff59f235c 100644 --- a/hal/halx86/legacy/bussupp.c +++ b/hal/halx86/legacy/bussupp.c @@ -12,6 +12,7 @@ #define NDEBUG #include +INIT_FUNCTION PBUS_HANDLER NTAPI HalpAllocateAndInitPciBusHandler( @@ -20,12 +21,14 @@ HalpAllocateAndInitPciBusHandler( IN BOOLEAN TestAllocation ); +INIT_FUNCTION VOID NTAPI HalpFixupPciSupportedRanges( IN ULONG BusCount ); +INIT_FUNCTION NTSTATUS NTAPI HalpGetChipHacks( @@ -35,6 +38,7 @@ HalpGetChipHacks( IN PULONG HackFlags ); +INIT_FUNCTION BOOLEAN NTAPI HalpGetPciBridgeConfig( @@ -42,18 +46,21 @@ HalpGetPciBridgeConfig( IN PUCHAR BusCount ); +INIT_FUNCTION BOOLEAN NTAPI HalpIsBridgeDevice( IN PPCI_COMMON_CONFIG PciData ); +INIT_FUNCTION BOOLEAN NTAPI HalpIsIdeDevice( IN PPCI_COMMON_CONFIG PciData ); +INIT_FUNCTION BOOLEAN NTAPI HalpIsRecognizedCard( @@ -62,6 +69,7 @@ HalpIsRecognizedCard( IN ULONG Flags ); +INIT_FUNCTION BOOLEAN NTAPI HalpIsValidPCIDevice( @@ -69,18 +77,21 @@ HalpIsValidPCIDevice( IN PCI_SLOT_NUMBER Slot ); +INIT_FUNCTION NTSTATUS NTAPI HalpMarkChipsetDecode( IN BOOLEAN OverrideEnable ); +INIT_FUNCTION VOID NTAPI HalpRegisterInternalBusHandlers( VOID ); +INIT_FUNCTION VOID NTAPI ShowSize( @@ -160,7 +171,7 @@ HalpAllocateBusHandler(IN INTERFACE_TYPE InterfaceType, return Bus; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpRegisterInternalBusHandlers(VOID) @@ -235,7 +246,7 @@ HalpRegisterInternalBusHandlers(VOID) } #ifndef _MINIHAL_ -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpMarkChipsetDecode(BOOLEAN OverrideEnable) @@ -283,7 +294,7 @@ HalpMarkChipsetDecode(BOOLEAN OverrideEnable) return Status; } -INIT_SECTION +INIT_FUNCTION PBUS_HANDLER NTAPI HalpAllocateAndInitPciBusHandler(IN ULONG PciType, @@ -368,7 +379,7 @@ HalpAllocateAndInitPciBusHandler(IN ULONG PciType, return Bus; } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpIsValidPCIDevice(IN PBUS_HANDLER BusHandler, @@ -430,7 +441,7 @@ HalpIsValidPCIDevice(IN PBUS_HANDLER BusHandler, static BOOLEAN WarningsGiven[5]; -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpGetChipHacks(IN USHORT VendorId, @@ -494,7 +505,7 @@ HalpGetChipHacks(IN USHORT VendorId, return Status; } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpIsRecognizedCard(IN PPCI_REGISTRY_INFO_INTERNAL PciRegistryInfo, @@ -575,7 +586,7 @@ HalpIsRecognizedCard(IN PPCI_REGISTRY_INFO_INTERNAL PciRegistryInfo, return FALSE; } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpIsIdeDevice(IN PPCI_COMMON_CONFIG PciData) @@ -628,7 +639,7 @@ HalpIsIdeDevice(IN PPCI_COMMON_CONFIG PciData) return FALSE; } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpIsBridgeDevice(IN PPCI_COMMON_CONFIG PciData) @@ -642,7 +653,7 @@ HalpIsBridgeDevice(IN PPCI_COMMON_CONFIG PciData) (PciData->SubClass == PCI_SUBCLASS_BR_CARDBUS))); } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpGetPciBridgeConfig(IN ULONG PciType, @@ -695,7 +706,7 @@ HalpGetPciBridgeConfig(IN ULONG PciType, return FALSE; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpFixupPciSupportedRanges(IN ULONG BusCount) @@ -758,7 +769,7 @@ HalpFixupPciSupportedRanges(IN ULONG BusCount) } } -INIT_SECTION +INIT_FUNCTION VOID NTAPI ShowSize(ULONG x) @@ -790,7 +801,7 @@ ShowSize(ULONG x) */ #include "pci_classes.h" #include "pci_vendors.h" -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpDebugPciDumpBus(IN ULONG i, @@ -943,7 +954,7 @@ HalpDebugPciDumpBus(IN ULONG i, } #endif -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitializePciBus(VOID) @@ -1182,7 +1193,7 @@ HalpInitializePciBus(VOID) #endif } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpInitBusHandlers(VOID) @@ -1191,7 +1202,7 @@ HalpInitBusHandlers(VOID) HalpRegisterInternalBusHandlers(); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpRegisterKdSupportFunctions(VOID) diff --git a/hal/halx86/legacy/halpcat.c b/hal/halx86/legacy/halpcat.c index b8d7fa657e9..d097ca7c729 100644 --- a/hal/halx86/legacy/halpcat.c +++ b/hal/halx86/legacy/halpcat.c @@ -30,7 +30,7 @@ PWCHAR HalName = L"PC Compatible Eisa/Isa HAL"; /* PRIVATE FUNCTIONS **********************************************************/ -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HalpSetupAcpiPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) @@ -39,7 +39,7 @@ HalpSetupAcpiPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return STATUS_NO_SUCH_DEVICE; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalpBuildAddressMap(VOID) @@ -51,7 +51,7 @@ HalpBuildAddressMap(VOID) //HalpAddROMRanges(); } -INIT_SECTION +INIT_FUNCTION BOOLEAN NTAPI HalpGetDebugPortTable(VOID) @@ -60,7 +60,7 @@ HalpGetDebugPortTable(VOID) return FALSE; } -INIT_SECTION +INIT_FUNCTION ULONG NTAPI HalpIs16BitPortDecodeSupported(VOID) @@ -70,7 +70,7 @@ HalpIs16BitPortDecodeSupported(VOID) } #if 0 -INIT_SECTION +INIT_FUNCTION NTSTATUS NTAPI HaliInitPnpDriver(VOID) @@ -84,7 +84,7 @@ HaliInitPnpDriver(VOID) /* * @implemented */ -INIT_SECTION +INIT_FUNCTION VOID NTAPI HalReportResourceUsage(VOID) diff --git a/hal/halx86/up/halinit_mini.c b/hal/halx86/up/halinit_mini.c index ae0f6cde309..505a23a93e3 100644 --- a/hal/halx86/up/halinit_mini.c +++ b/hal/halx86/up/halinit_mini.c @@ -34,6 +34,7 @@ HalpInitPhase1(VOID) { } +INIT_FUNCTION NTSTATUS NTAPI HalpSetupAcpiPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) diff --git a/ntoskrnl/cache/newcc.h b/ntoskrnl/cache/newcc.h index adbf1c5d926..a668c523282 100644 --- a/ntoskrnl/cache/newcc.h +++ b/ntoskrnl/cache/newcc.h @@ -38,6 +38,7 @@ typedef struct _NOCC_CACHE_MAP ULONG ReadAheadGranularity; } NOCC_CACHE_MAP, *PNOCC_CACHE_MAP; +INIT_FUNCTION VOID NTAPI CcPfInitializePrefetcher(VOID); @@ -53,6 +54,7 @@ CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain); +INIT_FUNCTION VOID NTAPI CcInitView(VOID); @@ -62,6 +64,7 @@ NTAPI CcpUnpinData(PNOCC_BCB Bcb, BOOLEAN ActuallyRelease); +INIT_FUNCTION BOOLEAN NTAPI CcInitializeCacheManager(VOID); diff --git a/ntoskrnl/cc/cacheman.c b/ntoskrnl/cc/cacheman.c index 8ccd6a703d6..9c7bf43298f 100644 --- a/ntoskrnl/cc/cacheman.c +++ b/ntoskrnl/cc/cacheman.c @@ -22,9 +22,9 @@ static ULONG BugCheckFileId = 0x4 << 16; /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CcPfInitializePrefetcher(VOID) { /* Notify debugger */ @@ -40,9 +40,9 @@ CcPfInitializePrefetcher(VOID) /* FIXME: Setup the rest of the prefetecher */ } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CcInitializeCacheManager(VOID) { ULONG Thread; diff --git a/ntoskrnl/config/cmalloc.c b/ntoskrnl/config/cmalloc.c index 621a2652234..2c2868ea7cb 100644 --- a/ntoskrnl/config/cmalloc.c +++ b/ntoskrnl/config/cmalloc.c @@ -23,9 +23,9 @@ LIST_ENTRY CmpFreeDelayItemsListHead; /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitCmPrivateAlloc(VOID) { /* Make sure we didn't already do this */ @@ -38,9 +38,9 @@ CmpInitCmPrivateAlloc(VOID) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitCmPrivateDelayAlloc(VOID) { /* Initialize the delay allocation list and lock */ diff --git a/ntoskrnl/config/cmboot.c b/ntoskrnl/config/cmboot.c index 73f6d0ac9fd..f1790284fcf 100644 --- a/ntoskrnl/config/cmboot.c +++ b/ntoskrnl/config/cmboot.c @@ -19,9 +19,9 @@ extern ULONG InitSafeBootMode; /* FUNCTIONS ******************************************************************/ +INIT_FUNCTION HCELL_INDEX NTAPI -INIT_FUNCTION CmpFindControlSet(IN PHHIVE SystemHive, IN HCELL_INDEX RootCell, IN PUNICODE_STRING SelectKeyName, @@ -129,9 +129,9 @@ CmpFindControlSet(IN PHHIVE SystemHive, return ControlSetCell; } +INIT_FUNCTION ULONG NTAPI -INIT_FUNCTION CmpFindTagIndex(IN PHHIVE Hive, IN HCELL_INDEX TagCell, IN HCELL_INDEX GroupOrderCell, @@ -179,9 +179,9 @@ CmpFindTagIndex(IN PHHIVE Hive, return -2; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpAddDriverToList(IN PHHIVE Hive, IN HCELL_INDEX DriverCell, IN HCELL_INDEX GroupOrderCell, @@ -346,9 +346,9 @@ CmpAddDriverToList(IN PHHIVE Hive, return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpIsLoadType(IN PHHIVE Hive, IN HCELL_INDEX Cell, IN SERVICE_LOAD_TYPE LoadType) @@ -377,9 +377,9 @@ CmpIsLoadType(IN PHHIVE Hive, return (*Data == LoadType); } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpFindDrivers(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN SERVICE_LOAD_TYPE LoadType, @@ -499,9 +499,9 @@ CmpFindDrivers(IN PHHIVE Hive, return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpDoSort(IN PLIST_ENTRY DriverListHead, IN PUNICODE_STRING OrderList) { @@ -556,9 +556,9 @@ CmpDoSort(IN PLIST_ENTRY DriverListHead, return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpSortDriverList(IN PHHIVE Hive, IN HCELL_INDEX ControlSet, IN PLIST_ENTRY DriverListHead) @@ -605,9 +605,9 @@ CmpSortDriverList(IN PHHIVE Hive, return CmpDoSort(DriverListHead, &DependList); } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpOrderGroup(IN PBOOT_DRIVER_NODE StartNode, IN PBOOT_DRIVER_NODE EndNode) { @@ -668,9 +668,9 @@ CmpOrderGroup(IN PBOOT_DRIVER_NODE StartNode, return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpResolveDriverDependencies(IN PLIST_ENTRY DriverListHead) { PLIST_ENTRY NextEntry; @@ -718,9 +718,9 @@ CmpResolveDriverDependencies(IN PLIST_ENTRY DriverListHead) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpIsSafe(IN PHHIVE Hive, IN HCELL_INDEX SafeBootCell, IN HCELL_INDEX DriverCell) diff --git a/ntoskrnl/config/cmconfig.c b/ntoskrnl/config/cmconfig.c index 97b81d682e6..be46cfeb2cf 100644 --- a/ntoskrnl/config/cmconfig.c +++ b/ntoskrnl/config/cmconfig.c @@ -14,9 +14,9 @@ /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpInitializeRegistryNode(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, IN HANDLE NodeHandle, OUT PHANDLE NewHandle, @@ -199,9 +199,9 @@ CmpInitializeRegistryNode(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpSetupConfigurationTree(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, IN HANDLE ParentHandle, IN INTERFACE_TYPE InterfaceType, @@ -322,9 +322,9 @@ CmpSetupConfigurationTree(IN PCONFIGURATION_COMPONENT_DATA CurrentEntry, return STATUS_SUCCESS; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpInitializeHardwareConfiguration(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { NTSTATUS Status; diff --git a/ntoskrnl/config/cmcontrl.c b/ntoskrnl/config/cmcontrl.c index 54d49499793..935d55bf301 100644 --- a/ntoskrnl/config/cmcontrl.c +++ b/ntoskrnl/config/cmcontrl.c @@ -16,9 +16,9 @@ /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION LANGID NTAPI -INIT_FUNCTION CmpConvertLangId(IN LPWSTR Name, IN ULONG NameLength) { @@ -67,9 +67,9 @@ CmpConvertLangId(IN LPWSTR Name, return LangId; } +INIT_FUNCTION HCELL_INDEX NTAPI -INIT_FUNCTION CmpWalkPath(IN PHHIVE SystemHive, IN HCELL_INDEX ParentCell, IN LPWSTR Path) @@ -98,9 +98,9 @@ CmpWalkPath(IN PHHIVE SystemHive, } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmGetSystemControlValues(IN PVOID SystemHiveData, IN PCM_SYSTEM_CONTROL_VECTOR ControlVector) { diff --git a/ntoskrnl/config/cmdata.c b/ntoskrnl/config/cmdata.c index a32909da341..77d82616ded 100644 --- a/ntoskrnl/config/cmdata.c +++ b/ntoskrnl/config/cmdata.c @@ -65,7 +65,7 @@ ULONG CmpTypeCount[MaximumType + 1]; HANDLE CmpRegistryRootHandle; -INIT_FUNCTION UNICODE_STRING CmClassName[MaximumClass + 1] = +INIT_SECTION UNICODE_STRING CmClassName[MaximumClass + 1] = { RTL_CONSTANT_STRING(L"System"), RTL_CONSTANT_STRING(L"Processor"), @@ -77,7 +77,7 @@ INIT_FUNCTION UNICODE_STRING CmClassName[MaximumClass + 1] = RTL_CONSTANT_STRING(L"Undefined") }; -INIT_FUNCTION UNICODE_STRING CmTypeName[MaximumType + 1] = +INIT_SECTION UNICODE_STRING CmTypeName[MaximumType + 1] = { RTL_CONSTANT_STRING(L"System"), RTL_CONSTANT_STRING(L"CentralProcessor"), @@ -123,7 +123,7 @@ INIT_FUNCTION UNICODE_STRING CmTypeName[MaximumType + 1] = RTL_CONSTANT_STRING(L"Undefined") }; -INIT_FUNCTION CMP_MF_TYPE CmpMultifunctionTypes[] = +INIT_SECTION CMP_MF_TYPE CmpMultifunctionTypes[] = { {"ISA", Isa, 0}, {"MCA", MicroChannel, 0}, @@ -136,7 +136,7 @@ INIT_FUNCTION CMP_MF_TYPE CmpMultifunctionTypes[] = {NULL, Internal, 0} }; -INIT_FUNCTION CM_SYSTEM_CONTROL_VECTOR CmControlVector[] = +INIT_SECTION CM_SYSTEM_CONTROL_VECTOR CmControlVector[] = { { L"Session Manager", diff --git a/ntoskrnl/config/cmdelay.c b/ntoskrnl/config/cmdelay.c index e0c487d90c5..34321eaba3c 100644 --- a/ntoskrnl/config/cmdelay.c +++ b/ntoskrnl/config/cmdelay.c @@ -185,9 +185,9 @@ CmpDelayCloseWorker(IN PVOID Context) CmpUnlockRegistry(); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitializeDelayedCloseTable(VOID) { @@ -262,9 +262,9 @@ CmpDelayDerefKCBWorker(IN PVOID Context) CmpUnlockRegistry(); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitDelayDerefKCBEngine(VOID) { /* Initialize lock and list */ diff --git a/ntoskrnl/config/cmhook.c b/ntoskrnl/config/cmhook.c index 7f8acdf4cb4..1ba3c5bbbda 100644 --- a/ntoskrnl/config/cmhook.c +++ b/ntoskrnl/config/cmhook.c @@ -32,9 +32,9 @@ typedef struct _REGISTRY_CALLBACK /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitCallback(VOID) { ULONG i; diff --git a/ntoskrnl/config/cmkcbncb.c b/ntoskrnl/config/cmkcbncb.c index 8751357e8bf..d9b0941e129 100644 --- a/ntoskrnl/config/cmkcbncb.c +++ b/ntoskrnl/config/cmkcbncb.c @@ -20,9 +20,9 @@ PCM_NAME_HASH_TABLE_ENTRY CmpNameCacheTable; /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpInitializeCache(VOID) { ULONG Length, i; diff --git a/ntoskrnl/config/cmsysini.c b/ntoskrnl/config/cmsysini.c index 295e4b4376d..d672ead8c24 100644 --- a/ntoskrnl/config/cmsysini.c +++ b/ntoskrnl/config/cmsysini.c @@ -391,9 +391,9 @@ CmpInitHiveFromFile(IN PCUNICODE_STRING HiveName, return STATUS_SUCCESS; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpSetSystemValues(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { NTSTATUS Status; @@ -446,9 +446,9 @@ Quit: return Status; } +INIT_FUNCTION static NTSTATUS -INIT_FUNCTION CmpCreateHardwareProfile(HANDLE ControlSetHandle) { OBJECT_ATTRIBUTES ObjectAttributes; @@ -518,9 +518,9 @@ done: return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpCreateControlSet(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { UNICODE_STRING ConfigName = RTL_CONSTANT_STRING(L"Control\\IDConfigDB"); @@ -859,9 +859,9 @@ CmpLinkHiveToMaster(IN PUNICODE_STRING LinkName, return STATUS_SUCCESS; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpInitializeSystemHive(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { static const UNICODE_STRING HiveName = RTL_CONSTANT_STRING(L"SYSTEM"); @@ -976,9 +976,9 @@ CmpInitializeSystemHive(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return TRUE; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION CmpCreateObjectTypes(VOID) { OBJECT_TYPE_INITIALIZER ObjectTypeInitializer; @@ -1010,9 +1010,9 @@ CmpCreateObjectTypes(VOID) return ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &CmpKeyObjectType); } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpCreateRootNode(IN PHHIVE Hive, IN PCWSTR Name, OUT PHCELL_INDEX Index) @@ -1066,9 +1066,9 @@ CmpCreateRootNode(IN PHHIVE Hive, return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmpCreateRegistryRoot(VOID) { UNICODE_STRING KeyName; @@ -1511,9 +1511,9 @@ CmpInitializeHiveList(VOID) CmpNoVolatileCreates = TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION CmInitSystem1(VOID) { OBJECT_ATTRIBUTES ObjectAttributes; @@ -1727,9 +1727,9 @@ CmInitSystem1(VOID) return TRUE; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION CmpFreeDriverList(IN PHHIVE Hive, IN PLIST_ENTRY DriverList) { @@ -1776,9 +1776,9 @@ CmpFreeDriverList(IN PHHIVE Hive, } } +INIT_FUNCTION PUNICODE_STRING* NTAPI -INIT_FUNCTION CmGetSystemDriverList(VOID) { LIST_ENTRY DriverList; diff --git a/ntoskrnl/ex/handle.c b/ntoskrnl/ex/handle.c index 5c26ccdca86..a0ea5fb448c 100644 --- a/ntoskrnl/ex/handle.c +++ b/ntoskrnl/ex/handle.c @@ -22,9 +22,9 @@ EX_PUSH_LOCK HandleTableListLock; /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpInitializeHandleTables(VOID) { /* Initialize the list of handle tables and the lock */ diff --git a/ntoskrnl/ex/hdlsterm.c b/ntoskrnl/ex/hdlsterm.c index ffd6b0afb25..3b8dc13ea6f 100644 --- a/ntoskrnl/ex/hdlsterm.c +++ b/ntoskrnl/ex/hdlsterm.c @@ -183,9 +183,9 @@ HdlspEnableTerminal(IN BOOLEAN Enable) return STATUS_SUCCESS; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION HeadlessInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PHEADLESS_LOADER_BLOCK HeadlessBlock; diff --git a/ntoskrnl/ex/init.c b/ntoskrnl/ex/init.c index 66819c56c81..10be8053742 100644 --- a/ntoskrnl/ex/init.c +++ b/ntoskrnl/ex/init.c @@ -91,9 +91,9 @@ BOOLEAN ExpRealTimeIsUniversal; /* FUNCTIONS ****************************************************************/ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ExpCreateSystemRootLink(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { UNICODE_STRING LinkName; @@ -203,9 +203,9 @@ ExpCreateSystemRootLink(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return STATUS_SUCCESS; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpInitNls(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { LARGE_INTEGER SectionSize; @@ -379,9 +379,9 @@ ExpInitNls(IN PLOADER_PARAMETER_BLOCK LoaderBlock) ExpNlsTableBase = SectionBase; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpLoadInitialProcess(IN PINIT_BUFFER InitBuffer, OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, OUT PCHAR *ProcessEnvironment) @@ -596,9 +596,9 @@ ExpLoadInitialProcess(IN PINIT_BUFFER InitBuffer, *ProcessEnvironment = EnvironmentPtr; } +INIT_FUNCTION ULONG NTAPI -INIT_FUNCTION ExComputeTickCountMultiplier(IN ULONG ClockIncrement) { ULONG MsRemainder = 0, MsIncrement; @@ -629,9 +629,9 @@ ExComputeTickCountMultiplier(IN ULONG ClockIncrement) return (MsIncrement << 24) | MsRemainder; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION ExpInitSystemPhase0(VOID) { /* Initialize EXRESOURCE Support */ @@ -652,9 +652,9 @@ ExpInitSystemPhase0(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION ExpInitSystemPhase1(VOID) { /* Initialize worker threads */ @@ -729,9 +729,9 @@ ExpInitSystemPhase1(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION ExInitSystem(VOID) { /* Check the initialization phase */ @@ -755,9 +755,9 @@ ExInitSystem(VOID) } } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION ExpIsLoaderValid(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLOADER_PARAMETER_EXTENSION Extension; @@ -781,9 +781,9 @@ ExpIsLoaderValid(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return TRUE; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { ULONG i = 0; @@ -862,9 +862,9 @@ ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExBurnMemory(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN ULONG_PTR PagesToDestroy, IN TYPE_OF_MEMORY MemoryType) @@ -908,9 +908,9 @@ ExBurnMemory(IN PLOADER_PARAMETER_BLOCK LoaderBlock, } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpInitializeExecutive(IN ULONG Cpu, IN PLOADER_PARAMETER_BLOCK LoaderBlock) { @@ -1327,9 +1327,9 @@ VOID NTAPI MmFreeLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock); +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION Phase1InitializationDiscard(IN PVOID Context) { PLOADER_PARAMETER_BLOCK LoaderBlock = Context; diff --git a/ntoskrnl/ex/lookas.c b/ntoskrnl/ex/lookas.c index ceb3789f9c7..376d94baf3a 100644 --- a/ntoskrnl/ex/lookas.c +++ b/ntoskrnl/ex/lookas.c @@ -29,9 +29,9 @@ GENERAL_LOOKASIDE ExpSmallPagedPoolLookasideLists[MAXIMUM_PROCESSORS]; /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExInitializeSystemLookasideList(IN PGENERAL_LOOKASIDE List, IN POOL_TYPE Type, IN ULONG Size, @@ -57,9 +57,9 @@ ExInitializeSystemLookasideList(IN PGENERAL_LOOKASIDE List, List->LastAllocateHits = 0; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExInitPoolLookasidePointers(VOID) { ULONG i; @@ -87,9 +87,9 @@ ExInitPoolLookasidePointers(VOID) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpInitLookasideLists(VOID) { ULONG i; diff --git a/ntoskrnl/ex/pushlock.c b/ntoskrnl/ex/pushlock.c index 9ac77a11aa4..855231393a6 100644 --- a/ntoskrnl/ex/pushlock.c +++ b/ntoskrnl/ex/pushlock.c @@ -39,9 +39,9 @@ ULONG ExPushLockSpinCount = 0; * @remarks The ExpInitializePushLocks routine sets up the spin on SMP machines. * *--*/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpInitializePushLocks(VOID) { #ifdef CONFIG_SMP diff --git a/ntoskrnl/ex/resource.c b/ntoskrnl/ex/resource.c index 1911ef1813e..192f8702e30 100644 --- a/ntoskrnl/ex/resource.c +++ b/ntoskrnl/ex/resource.c @@ -163,9 +163,9 @@ ExpCheckForApcsDisabled(IN KIRQL Irql, * @remarks This routine should only be called once, during system startup. * *--*/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExpResourceInitialization(VOID) { /* Setup the timeout */ diff --git a/ntoskrnl/ex/xipdisp.c b/ntoskrnl/ex/xipdisp.c index 1fe77250974..669a706f77b 100644 --- a/ntoskrnl/ex/xipdisp.c +++ b/ntoskrnl/ex/xipdisp.c @@ -25,9 +25,9 @@ XIPDispatch(IN ULONG DispatchCode, return STATUS_NOT_IMPLEMENTED; } +INIT_FUNCTION PMEMORY_ALLOCATION_DESCRIPTOR NTAPI -INIT_FUNCTION XIPpFindMemoryDescriptor(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLIST_ENTRY NextEntry; @@ -49,9 +49,9 @@ XIPpFindMemoryDescriptor(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return NULL; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION XIPInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PCHAR CommandLine, XipBoot, XipRom, XipMegs, XipVerbose, XipRam; diff --git a/ntoskrnl/fsrtl/fsrtlpc.c b/ntoskrnl/fsrtl/fsrtlpc.c index 1a97085d797..30d0b46d837 100644 --- a/ntoskrnl/fsrtl/fsrtlpc.c +++ b/ntoskrnl/fsrtl/fsrtlpc.c @@ -16,7 +16,7 @@ PERESOURCE FsRtlPagingIoResources; ULONG FsRtlPagingIoResourceSelector; -NTSTATUS NTAPI INIT_FUNCTION FsRtlInitializeWorkerThread(VOID); +INIT_FUNCTION NTSTATUS NTAPI FsRtlInitializeWorkerThread(VOID); extern KSEMAPHORE FsRtlpUncSemaphore; static const UCHAR LegalAnsiCharacterArray[] = @@ -155,9 +155,9 @@ const UCHAR * const FsRtlLegalAnsiCharacterArray = LegalAnsiCharacterArray; /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION FsRtlInitSystem(VOID) { ULONG i; diff --git a/ntoskrnl/fsrtl/stackovf.c b/ntoskrnl/fsrtl/stackovf.c index 353e893aa76..c5dda39f7ac 100644 --- a/ntoskrnl/fsrtl/stackovf.c +++ b/ntoskrnl/fsrtl/stackovf.c @@ -144,9 +144,9 @@ FsRtlWorkerThread(IN PVOID StartContext) /* * @implemented */ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION FsRtlInitializeWorkerThread(VOID) { ULONG_PTR i; diff --git a/ntoskrnl/inbv/inbv.c b/ntoskrnl/inbv/inbv.c index 92285692980..c1ece52461e 100644 --- a/ntoskrnl/inbv/inbv.c +++ b/ntoskrnl/inbv/inbv.c @@ -212,9 +212,9 @@ BootLogoFadeIn(VOID) /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION PVOID NTAPI -INIT_FUNCTION FindBitmapResource(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN ULONG ResourceId) { @@ -277,9 +277,9 @@ FindBitmapResource(IN PLOADER_PARAMETER_BLOCK LoaderBlock, return Data; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION InbvDriverInitialize(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN ULONG Count) { @@ -357,9 +357,9 @@ InbvReleaseLock(VOID) if (InbvOldIrql <= DISPATCH_LEVEL) KeLowerIrql(OldIrql); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION InbvEnableBootDriver(IN BOOLEAN Enable) { /* Check if we're installed */ @@ -622,9 +622,9 @@ InbvSolidColorFill(IN ULONG Left, } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION InbvUpdateProgressBar(IN ULONG Progress) { ULONG FillCount, BoundedProgress; @@ -738,9 +738,9 @@ InbvSetProgressBarSubset(IN ULONG Floor, InbvProgressState.Bias = (Ceiling * 100) - Floor; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION InbvIndicateProgress(VOID) { ULONG Percentage; @@ -930,9 +930,9 @@ InbvRotationThread( PsTerminateSystemThread(STATUS_SUCCESS); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION InbvRotBarInit(VOID) { PltRotBarStatus = RBS_FADEIN; @@ -940,9 +940,9 @@ InbvRotBarInit(VOID) } #endif +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION DisplayBootBitmap(IN BOOLEAN TextMode) { PVOID Header = NULL, Footer = NULL, Screen = NULL; @@ -1185,9 +1185,9 @@ DisplayBootBitmap(IN BOOLEAN TextMode) #endif } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION DisplayFilter(PCHAR *String) { /* Windows hack to skip first dots */ @@ -1209,9 +1209,9 @@ DisplayFilter(PCHAR *String) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION FinalizeBootLogo(VOID) { /* Acquire lock and check the display state */ diff --git a/ntoskrnl/include/internal/amd64/mm.h b/ntoskrnl/include/internal/amd64/mm.h index f7880944582..8f881a12c28 100644 --- a/ntoskrnl/include/internal/amd64/mm.h +++ b/ntoskrnl/include/internal/amd64/mm.h @@ -289,6 +289,7 @@ MI_IS_MAPPED_PTE(PMMPTE PointerPte) return ((PointerPte->u.Long & 0xFFFFFC01) != 0); } +INIT_FUNCTION VOID FORCEINLINE MmInitGlobalKernelPageDirectory(VOID) diff --git a/ntoskrnl/include/internal/cc.h b/ntoskrnl/include/internal/cc.h index 10bdb43a86a..332ad524c40 100644 --- a/ntoskrnl/include/internal/cc.h +++ b/ntoskrnl/include/internal/cc.h @@ -288,6 +288,7 @@ extern LAZY_WRITER LazyWriter; #define NODE_TYPE_PRIVATE_MAP 0x02FE #define NODE_TYPE_SHARED_MAP 0x02FF +INIT_FUNCTION VOID NTAPI CcPfInitializePrefetcher( @@ -324,6 +325,7 @@ CcRosGetVacb( PROS_VACB *Vacb ); +INIT_FUNCTION VOID NTAPI CcInitView(VOID); @@ -340,6 +342,7 @@ NTSTATUS NTAPI CcWriteVirtualAddress(PROS_VACB Vacb); +INIT_FUNCTION BOOLEAN NTAPI CcInitializeCacheManager(VOID); diff --git a/ntoskrnl/include/internal/cm.h b/ntoskrnl/include/internal/cm.h index 76fc5b9d1a4..a65e5e8ba2a 100644 --- a/ntoskrnl/include/internal/cm.h +++ b/ntoskrnl/include/internal/cm.h @@ -694,6 +694,7 @@ CmpFlushNotify( IN BOOLEAN LockHeld ); +INIT_FUNCTION VOID NTAPI CmpInitCallback( @@ -703,24 +704,28 @@ CmpInitCallback( // // KCB Cache/Delay Routines // +INIT_FUNCTION VOID NTAPI CmpInitializeCache( VOID ); +INIT_FUNCTION VOID NTAPI CmpInitCmPrivateDelayAlloc( VOID ); +INIT_FUNCTION VOID NTAPI CmpInitCmPrivateAlloc( VOID ); +INIT_FUNCTION VOID NTAPI CmpInitDelayDerefKCBEngine( @@ -963,6 +968,7 @@ VOID NTAPI CmpRemoveFromDelayedClose(IN PCM_KEY_CONTROL_BLOCK Kcb); +INIT_FUNCTION VOID NTAPI CmpInitializeDelayedCloseTable( @@ -1161,6 +1167,7 @@ CmpCreateLinkNode( // // Boot Routines // +INIT_FUNCTION HCELL_INDEX NTAPI CmpFindControlSet( @@ -1170,6 +1177,7 @@ CmpFindControlSet( OUT PBOOLEAN AutoSelect ); +INIT_FUNCTION VOID NTAPI CmGetSystemControlValues( @@ -1186,6 +1194,7 @@ CmpSaveBootControlSet( // // Hardware Configuration Routines // +INIT_FUNCTION NTSTATUS NTAPI CmpInitializeRegistryNode( @@ -1203,6 +1212,7 @@ CmpInitializeMachineDependentConfiguration( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION NTSTATUS NTAPI CmpInitializeHardwareConfiguration( @@ -1407,6 +1417,7 @@ CmSaveMergedKeys( // // Startup and Shutdown // +INIT_FUNCTION BOOLEAN NTAPI CmInitSystem1( @@ -1434,12 +1445,14 @@ CmpSetVersionData( // // Driver List Routines // +INIT_FUNCTION PUNICODE_STRING* NTAPI CmGetSystemDriverList( VOID ); +INIT_FUNCTION BOOLEAN NTAPI CmpFindDrivers( @@ -1450,7 +1463,7 @@ CmpFindDrivers( IN PLIST_ENTRY DriverListHead ); - +INIT_FUNCTION BOOLEAN NTAPI CmpSortDriverList( @@ -1459,12 +1472,14 @@ CmpSortDriverList( IN PLIST_ENTRY DriverListHead ); +INIT_FUNCTION BOOLEAN NTAPI CmpResolveDriverDependencies( IN PLIST_ENTRY DriverListHead ); +INIT_FUNCTION BOOLEAN NTAPI CmpIsSafe( diff --git a/ntoskrnl/include/internal/dbgk.h b/ntoskrnl/include/internal/dbgk.h index 96cbb1f309b..ef49aebbc53 100644 --- a/ntoskrnl/include/internal/dbgk.h +++ b/ntoskrnl/include/internal/dbgk.h @@ -46,6 +46,7 @@ #define DBGKTRACE(x, fmt, ...) DPRINT(fmt, ##__VA_ARGS__) #endif +INIT_FUNCTION VOID NTAPI DbgkInitialize( diff --git a/ntoskrnl/include/internal/ex.h b/ntoskrnl/include/internal/ex.h index 89fec759145..2eaf8d2da08 100644 --- a/ntoskrnl/include/internal/ex.h +++ b/ntoskrnl/include/internal/ex.h @@ -169,6 +169,7 @@ ExGetPoolTagInfo( /* INITIALIZATION FUNCTIONS *************************************************/ +INIT_FUNCTION BOOLEAN NTAPI ExpWin32kInit(VOID); @@ -183,6 +184,7 @@ Phase1Initialization( IN PVOID Context ); +INIT_FUNCTION VOID NTAPI ExpInitializePushLocks(VOID); @@ -193,6 +195,7 @@ ExRefreshTimeZoneInformation( IN PLARGE_INTEGER SystemBootTime ); +INIT_FUNCTION VOID NTAPI ExpInitializeWorkerThreads(VOID); @@ -201,10 +204,12 @@ VOID NTAPI ExSwapinWorkerThreads(IN BOOLEAN AllowSwap); +INIT_FUNCTION VOID NTAPI ExpInitLookasideLists(VOID); +INIT_FUNCTION VOID NTAPI ExInitializeSystemLookasideList( @@ -216,14 +221,17 @@ ExInitializeSystemLookasideList( IN PLIST_ENTRY ListHead ); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeCallbacks(VOID); +INIT_FUNCTION VOID NTAPI ExpInitUuids(VOID); +INIT_FUNCTION VOID NTAPI ExpInitializeExecutive( @@ -235,38 +243,47 @@ VOID NTAPI ExShutdownSystem(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeEventImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeKeyedEventImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeEventPairImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeSemaphoreImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeMutantImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeTimerImplementation(VOID); +INIT_FUNCTION BOOLEAN NTAPI ExpInitializeProfileImplementation(VOID); +INIT_FUNCTION VOID NTAPI ExpResourceInitialization(VOID); +INIT_FUNCTION VOID NTAPI ExInitPoolLookasidePointers(VOID); @@ -406,6 +423,7 @@ typedef BOOLEAN ULONG_PTR Context ); +INIT_FUNCTION VOID NTAPI ExpInitializeHandleTables( @@ -1461,12 +1479,14 @@ ExTimerRundown( VOID ); +INIT_FUNCTION VOID NTAPI HeadlessInit( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION VOID NTAPI XIPInit( diff --git a/ntoskrnl/include/internal/fsrtl.h b/ntoskrnl/include/internal/fsrtl.h index 6e65bd78886..67464d4abb2 100644 --- a/ntoskrnl/include/internal/fsrtl.h +++ b/ntoskrnl/include/internal/fsrtl.h @@ -108,12 +108,14 @@ typedef struct _INT_MAPPING // // Initialization Routines // +INIT_FUNCTION VOID NTAPI FsRtlInitializeLargeMcbs( VOID ); +INIT_FUNCTION VOID NTAPI FsRtlInitializeTunnels( @@ -129,6 +131,7 @@ FsRtlPTeardownPerFileObjectContexts( IN PFILE_OBJECT FileObject ); +INIT_FUNCTION BOOLEAN NTAPI FsRtlInitSystem( diff --git a/ntoskrnl/include/internal/i386/ke.h b/ntoskrnl/include/internal/i386/ke.h index c7c48eaf5fc..10eb6eb1bed 100644 --- a/ntoskrnl/include/internal/i386/ke.h +++ b/ntoskrnl/include/internal/i386/ke.h @@ -321,6 +321,7 @@ KiSetTebBase(PKPCR Pcr, PVOID TebAddress) Ke386SetGdtEntryBase(&Pcr->GDT[KGDT_R3_TEB / sizeof(KGDTENTRY)], TebAddress); } +INIT_FUNCTION VOID FASTCALL Ki386InitializeTss( @@ -329,30 +330,36 @@ Ki386InitializeTss( IN PKGDTENTRY Gdt ); +INIT_FUNCTION VOID NTAPI KiSetCR0Bits(VOID); +INIT_FUNCTION VOID NTAPI KiGetCacheInformation(VOID); +INIT_FUNCTION BOOLEAN NTAPI KiIsNpxPresent( VOID ); +INIT_FUNCTION BOOLEAN NTAPI KiIsNpxErrataPresent( VOID ); +INIT_FUNCTION VOID NTAPI KiSetProcessorType(VOID); +INIT_FUNCTION ULONG NTAPI KiGetFeatureBits(VOID); @@ -387,18 +394,21 @@ Ki386SetupAndExitToV86Mode( OUT PTEB VdmTeb ); +INIT_FUNCTION VOID NTAPI KeI386VdmInitialize( VOID ); +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableGlobalPage( IN ULONG_PTR Context ); +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableTargetLargePage( @@ -426,48 +436,56 @@ Ki386EnableCurrentLargePage( IN ULONG Cr3 ); +INIT_FUNCTION VOID NTAPI KiI386PentiumLockErrataFixup( VOID ); +INIT_FUNCTION VOID NTAPI KiInitializePAT( VOID ); +INIT_FUNCTION VOID NTAPI KiInitializeMTRR( IN BOOLEAN FinalCpu ); +INIT_FUNCTION VOID NTAPI KiAmdK6InitializeMTRR( VOID ); +INIT_FUNCTION VOID NTAPI KiRestoreFastSyscallReturnState( VOID ); +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableDE( IN ULONG_PTR Context ); +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableFxsr( IN ULONG_PTR Context ); +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableXMMIExceptions( @@ -791,11 +809,12 @@ KiCheckForApcDelivery(IN PKTRAP_FRAME TrapFrame) // // Switches from boot loader to initial kernel stack // +INIT_FUNCTION FORCEINLINE VOID KiSwitchToBootStack(IN ULONG_PTR InitialStack) { - VOID NTAPI KiSystemStartupBootStack(VOID); + INIT_FUNCTION VOID NTAPI KiSystemStartupBootStack(VOID); /* We have to switch to a new stack before continuing kernel initialization */ #ifdef __GNUC__ diff --git a/ntoskrnl/include/internal/inbv.h b/ntoskrnl/include/internal/inbv.h index 92de2cc83b2..3fb6669a584 100644 --- a/ntoskrnl/include/internal/inbv.h +++ b/ntoskrnl/include/internal/inbv.h @@ -21,18 +21,21 @@ typedef enum _ROT_BAR_TYPE RB_PROGRESS_BAR } ROT_BAR_TYPE; +INIT_FUNCTION VOID NTAPI InbvUpdateProgressBar( IN ULONG Progress ); +INIT_FUNCTION VOID NTAPI InbvRotBarInit( VOID ); +INIT_FUNCTION BOOLEAN NTAPI InbvDriverInitialize( @@ -40,24 +43,28 @@ InbvDriverInitialize( IN ULONG Count ); +INIT_FUNCTION VOID NTAPI InbvEnableBootDriver( IN BOOLEAN Enable ); +INIT_FUNCTION VOID NTAPI DisplayBootBitmap( IN BOOLEAN TextMode ); +INIT_FUNCTION VOID NTAPI DisplayFilter( IN PCHAR *String ); +INIT_FUNCTION VOID NTAPI FinalizeBootLogo( @@ -78,6 +85,7 @@ InbvBitBlt( IN ULONG Y ); +INIT_FUNCTION VOID NTAPI InbvIndicateProgress( diff --git a/ntoskrnl/include/internal/io.h b/ntoskrnl/include/internal/io.h index 8ae32a0dc5c..7e93ca88569 100644 --- a/ntoskrnl/include/internal/io.h +++ b/ntoskrnl/include/internal/io.h @@ -577,6 +577,7 @@ PipCallDriverAddDevice( IN PDRIVER_OBJECT DriverObject ); +INIT_FUNCTION NTSTATUS NTAPI IopInitializePlugPlayServices( @@ -692,6 +693,7 @@ IoDestroyDriverList( VOID ); +INIT_FUNCTION NTSTATUS IopInitPlugPlayEvents(VOID); @@ -740,12 +742,14 @@ IopTraverseDeviceTree( // // PnP Routines // +INIT_FUNCTION NTSTATUS NTAPI IopUpdateRootKey( VOID ); +INIT_FUNCTION NTSTATUS NTAPI PiInitCacheGroupInformation( @@ -783,12 +787,14 @@ PnpRegSzToString( // // Initialization Routines // +INIT_FUNCTION NTSTATUS NTAPI IopCreateArcNames( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION NTSTATUS NTAPI IopReassignSystemRoot( @@ -796,6 +802,7 @@ IopReassignSystemRoot( OUT PANSI_STRING NtBootPath ); +INIT_FUNCTION BOOLEAN NTAPI IoInitSystem( @@ -986,11 +993,13 @@ IopShutdownBaseFileSystems( // // Boot logging support // +INIT_FUNCTION VOID IopInitBootLog( IN BOOLEAN StartBootLog ); +INIT_FUNCTION VOID IopStartBootLog( VOID @@ -1062,6 +1071,7 @@ RawFsIsRawFileSystemDeviceObject( IN PDEVICE_OBJECT DeviceObject ); +INIT_FUNCTION NTSTATUS NTAPI RawFsDriverEntry( @@ -1094,12 +1104,14 @@ PnpRootRegisterDevice( // // Driver Routines // +INIT_FUNCTION VOID FASTCALL IopInitializeBootDrivers( VOID ); +INIT_FUNCTION VOID FASTCALL IopInitializeSystemDrivers( @@ -1356,6 +1368,7 @@ IoSetIoCompletion( // // Ramdisk Routines // +INIT_FUNCTION NTSTATUS NTAPI IopStartRamdisk( diff --git a/ntoskrnl/include/internal/ke.h b/ntoskrnl/include/internal/ke.h index 7bdd97fd8ee..1abde8fff67 100644 --- a/ntoskrnl/include/internal/ke.h +++ b/ntoskrnl/include/internal/ke.h @@ -724,10 +724,12 @@ KeQueryValuesProcess(IN PKPROCESS Process, /* INITIALIZATION FUNCTIONS *************************************************/ +INIT_FUNCTION BOOLEAN NTAPI KeInitSystem(VOID); +INIT_FUNCTION VOID NTAPI KeInitExceptions(VOID); @@ -736,10 +738,12 @@ VOID NTAPI KeInitInterrupts(VOID); +INIT_FUNCTION VOID NTAPI KiInitializeBugCheck(VOID); +INIT_FUNCTION VOID NTAPI KiSystemStartup( @@ -900,6 +904,7 @@ KiChainedDispatch( IN PKINTERRUPT Interrupt ); +INIT_FUNCTION VOID NTAPI KiInitializeMachineType( @@ -917,6 +922,7 @@ KiSetupStackAndInitializeKernel( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION VOID NTAPI KiInitSpinLocks( @@ -924,6 +930,7 @@ KiInitSpinLocks( IN CCHAR Number ); +INIT_FUNCTION LARGE_INTEGER NTAPI KiComputeReciprocal( @@ -931,6 +938,7 @@ KiComputeReciprocal( OUT PUCHAR Shift ); +INIT_FUNCTION VOID NTAPI KiInitSystem( @@ -959,6 +967,7 @@ KiCallbackReturn( IN NTSTATUS Status ); +INIT_FUNCTION VOID NTAPI KiInitMachineDependent(VOID); diff --git a/ntoskrnl/include/internal/lpc.h b/ntoskrnl/include/internal/lpc.h index e862a4f2476..667309ebdde 100644 --- a/ntoskrnl/include/internal/lpc.h +++ b/ntoskrnl/include/internal/lpc.h @@ -137,6 +137,7 @@ LpcExitThread( // // Initialization functions // +INIT_FUNCTION BOOLEAN NTAPI LpcInitSystem( diff --git a/ntoskrnl/include/internal/mm.h b/ntoskrnl/include/internal/mm.h index cf9e5069ac7..b4d7ad85bcc 100644 --- a/ntoskrnl/include/internal/mm.h +++ b/ntoskrnl/include/internal/mm.h @@ -559,6 +559,7 @@ MiCheckAllProcessMemoryAreas(VOID); /* npool.c *******************************************************************/ +INIT_FUNCTION VOID NTAPI MiInitializeNonPagedPool(VOID); @@ -609,6 +610,7 @@ MmInit1( VOID ); +INIT_FUNCTION BOOLEAN NTAPI MmInitSystem(IN ULONG Phase, @@ -625,6 +627,7 @@ VOID NTAPI MmFreeSwapPage(SWAPENTRY Entry); +INIT_FUNCTION VOID NTAPI MmInitPagingFile(VOID); @@ -793,6 +796,7 @@ MmDeleteKernelStack(PVOID Stack, /* balace.c ******************************************************************/ +INIT_FUNCTION VOID NTAPI MmInitializeMemoryConsumer( @@ -800,6 +804,7 @@ MmInitializeMemoryConsumer( NTSTATUS (*Trim)(ULONG Target, ULONG Priority, PULONG NrFreed) ); +INIT_FUNCTION VOID NTAPI MmInitializeBalancer( @@ -822,6 +827,7 @@ MmRequestPageMemoryConsumer( PPFN_NUMBER AllocatedPage ); +INIT_FUNCTION VOID NTAPI MiInitBalancerThread(VOID); @@ -867,6 +873,7 @@ MmDeleteRmap( PVOID Address ); +INIT_FUNCTION VOID NTAPI MmInitializeRmapList(VOID); @@ -1076,6 +1083,7 @@ MmIsDisabledPage( PVOID Address ); +INIT_FUNCTION VOID NTAPI MmInitGlobalKernelPageDirectory(VOID); @@ -1178,6 +1186,7 @@ MmCreateProcessAddressSpace( IN PULONG_PTR DirectoryTableBase ); +INIT_FUNCTION NTSTATUS NTAPI MmInitializeHandBuiltProcess( @@ -1185,7 +1194,7 @@ MmInitializeHandBuiltProcess( IN PULONG_PTR DirectoryTableBase ); - +INIT_FUNCTION NTSTATUS NTAPI MmInitializeHandBuiltProcess2( @@ -1305,6 +1314,7 @@ MmProtectSectionView( PULONG OldProtect ); +INIT_FUNCTION NTSTATUS NTAPI MmInitSectionImplementation(VOID); @@ -1327,6 +1337,7 @@ MmPageOutSectionView( ULONG_PTR Entry ); +INIT_FUNCTION NTSTATUS NTAPI MmCreatePhysicalMemorySection(VOID); @@ -1345,12 +1356,14 @@ MmFreeSectionSegments(PFILE_OBJECT FileObject); /* sysldr.c ******************************************************************/ +INIT_FUNCTION VOID NTAPI MiReloadBootLoadedDrivers( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION BOOLEAN NTAPI MiInitializeLoadedModuleList( diff --git a/ntoskrnl/include/internal/ntoskrnl.h b/ntoskrnl/include/internal/ntoskrnl.h index eb7b92fb8e3..c16a4b5ad2e 100644 --- a/ntoskrnl/include/internal/ntoskrnl.h +++ b/ntoskrnl/include/internal/ntoskrnl.h @@ -1,15 +1,6 @@ #pragma once -/* - * Use these to place a function in a specific section of the executable - */ -#ifdef __GNUC__ -#define INIT_SECTION __attribute__((section ("INIT"))) -#define INIT_FUNCTION INIT_SECTION -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#define INIT_FUNCTION INIT_SECTION -#endif +#include diff --git a/ntoskrnl/include/internal/ob.h b/ntoskrnl/include/internal/ob.h index 1026c49ee78..355e9339d8d 100644 --- a/ntoskrnl/include/internal/ob.h +++ b/ntoskrnl/include/internal/ob.h @@ -159,6 +159,7 @@ typedef struct _OB_TEMP_BUFFER // // Startup and Shutdown Functions // +INIT_FUNCTION BOOLEAN NTAPI ObInitSystem( @@ -421,6 +422,7 @@ ObInheritDeviceMap( IN PEPROCESS Process ); +INIT_FUNCTION NTSTATUS NTAPI ObpCreateDosDevicesDirectory( @@ -430,6 +432,7 @@ ObpCreateDosDevicesDirectory( // // Security descriptor cache functions // +INIT_FUNCTION NTSTATUS NTAPI ObpInitSdCache( diff --git a/ntoskrnl/include/internal/po.h b/ntoskrnl/include/internal/po.h index 1fe29407219..f9d57e3e59d 100644 --- a/ntoskrnl/include/internal/po.h +++ b/ntoskrnl/include/internal/po.h @@ -264,12 +264,14 @@ typedef struct _POP_SHUTDOWN_WAIT_ENTRY // // Initialization routines // +INIT_FUNCTION BOOLEAN NTAPI PoInitSystem( IN ULONG BootPhase ); +INIT_FUNCTION VOID NTAPI PoInitializePrcb( diff --git a/ntoskrnl/include/internal/ps.h b/ntoskrnl/include/internal/ps.h index b6eb06d2504..fd360cfa330 100644 --- a/ntoskrnl/include/internal/ps.h +++ b/ntoskrnl/include/internal/ps.h @@ -90,6 +90,7 @@ PspShutdownProcessManager( VOID ); +INIT_FUNCTION BOOLEAN NTAPI PsInitSystem( @@ -120,6 +121,7 @@ PspMapSystemDll( IN BOOLEAN UseLargePages ); +INIT_FUNCTION NTSTATUS NTAPI PsLocateSystemDll( @@ -352,6 +354,7 @@ PspRemoveProcessFromJob( IN PEJOB Job ); +INIT_FUNCTION VOID NTAPI PspInitializeJobStructures( @@ -415,6 +418,7 @@ PspIsProcessExiting(IN PEPROCESS Process); // // Apphelp functions // +INIT_FUNCTION NTSTATUS NTAPI ApphelpCacheInitialize(VOID); diff --git a/ntoskrnl/include/internal/se.h b/ntoskrnl/include/internal/se.h index 563cd23d331..e2285fd29de 100644 --- a/ntoskrnl/include/internal/se.h +++ b/ntoskrnl/include/internal/se.h @@ -243,26 +243,32 @@ SepSidInTokenEx( ); /* Functions */ +INIT_FUNCTION BOOLEAN NTAPI SeInitSystem(VOID); +INIT_FUNCTION VOID NTAPI ExpInitLuid(VOID); +INIT_FUNCTION VOID NTAPI SepInitPrivileges(VOID); +INIT_FUNCTION BOOLEAN NTAPI SepInitSecurityIDs(VOID); +INIT_FUNCTION BOOLEAN NTAPI SepInitDACLs(VOID); +INIT_FUNCTION BOOLEAN NTAPI SepInitSDs(VOID); @@ -329,6 +335,7 @@ SepCreateImpersonationTokenDacl( _Out_ PACL* Dacl ); +INIT_FUNCTION VOID NTAPI SepInitializeTokenImplementation(VOID); diff --git a/ntoskrnl/io/iomgr/arcname.c b/ntoskrnl/io/iomgr/arcname.c index 6ef7dd0e89a..9d011043571 100644 --- a/ntoskrnl/io/iomgr/arcname.c +++ b/ntoskrnl/io/iomgr/arcname.c @@ -22,22 +22,22 @@ extern BOOLEAN IoRemoteBootClient; /* FUNCTIONS *****************************************************************/ -NTSTATUS INIT_FUNCTION +NTSTATUS NTAPI IopCreateArcNamesCd(IN PLOADER_PARAMETER_BLOCK LoaderBlock ); -NTSTATUS INIT_FUNCTION +NTSTATUS NTAPI IopCreateArcNamesDisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN BOOLEAN SingleDisk, IN PBOOLEAN FoundBoot ); -NTSTATUS INIT_FUNCTION +NTSTATUS NTAPI IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { @@ -147,8 +147,8 @@ IopCreateArcNames(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return Status; } -NTSTATUS INIT_FUNCTION +NTSTATUS NTAPI IopCreateArcNamesCd(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { @@ -409,8 +409,8 @@ Cleanup: return Status; } -NTSTATUS INIT_FUNCTION +NTSTATUS NTAPI IopCreateArcNamesDisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN BOOLEAN SingleDisk, @@ -831,9 +831,9 @@ Cleanup: return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION IopReassignSystemRoot(IN PLOADER_PARAMETER_BLOCK LoaderBlock, OUT PANSI_STRING NtBootPath) { diff --git a/ntoskrnl/io/iomgr/driver.c b/ntoskrnl/io/iomgr/driver.c index a1584f58109..c9fa6116c48 100644 --- a/ntoskrnl/io/iomgr/driver.c +++ b/ntoskrnl/io/iomgr/driver.c @@ -713,9 +713,9 @@ MiResolveImageReferences(IN PVOID ImageBase, // // Used for images already loaded (boot drivers) // +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION LdrProcessDriverModule(PLDR_DATA_TABLE_ENTRY LdrEntry, PUNICODE_STRING FileName, PLDR_DATA_TABLE_ENTRY *ModuleObject) @@ -793,9 +793,9 @@ LdrProcessDriverModule(PLDR_DATA_TABLE_ENTRY LdrEntry, * * Initialize a driver that is already loaded in memory. */ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry) { PDEVICE_NODE DeviceNode; @@ -924,9 +924,9 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY BootLdrEntry) * Return Value * None */ +INIT_FUNCTION VOID FASTCALL -INIT_FUNCTION IopInitializeBootDrivers(VOID) { PLIST_ENTRY ListHead, NextEntry, NextEntry2; @@ -1120,9 +1120,9 @@ IopInitializeBootDrivers(VOID) InitializeListHead(&KeLoaderBlock->LoadOrderListHead); } +INIT_FUNCTION VOID FASTCALL -INIT_FUNCTION IopInitializeSystemDrivers(VOID) { PUNICODE_STRING *DriverList, *SavedList; diff --git a/ntoskrnl/io/iomgr/ramdisk.c b/ntoskrnl/io/iomgr/ramdisk.c index 810b106203c..67ec971982a 100644 --- a/ntoskrnl/io/iomgr/ramdisk.c +++ b/ntoskrnl/io/iomgr/ramdisk.c @@ -22,9 +22,9 @@ /* FUNCTIONS ******************************************************************/ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION IopStartRamdisk(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PMEMORY_ALLOCATION_DESCRIPTOR MemoryDescriptor; diff --git a/ntoskrnl/io/iomgr/rawfs.c b/ntoskrnl/io/iomgr/rawfs.c index 569be1a1bf3..de3a90f1b81 100644 --- a/ntoskrnl/io/iomgr/rawfs.c +++ b/ntoskrnl/io/iomgr/rawfs.c @@ -1187,9 +1187,9 @@ RawUnload(IN PDRIVER_OBJECT DriverObject) #endif } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION RawFsDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { diff --git a/ntoskrnl/io/pnpmgr/pnpinit.c b/ntoskrnl/io/pnpmgr/pnpinit.c index 5ae33e377ff..944704aa3bd 100644 --- a/ntoskrnl/io/pnpmgr/pnpinit.c +++ b/ntoskrnl/io/pnpmgr/pnpinit.c @@ -42,9 +42,9 @@ IopInitializeArbiters(VOID) return STATUS_SUCCESS; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION PiInitCacheGroupInformation(VOID) { HANDLE KeyHandle; @@ -374,9 +374,9 @@ Exit: return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION IopInitializePlugPlayServices(VOID) { NTSTATUS Status; diff --git a/ntoskrnl/io/pnpmgr/pnpmgr.c b/ntoskrnl/io/pnpmgr/pnpmgr.c index 9c0d0304640..1362a89f037 100644 --- a/ntoskrnl/io/pnpmgr/pnpmgr.c +++ b/ntoskrnl/io/pnpmgr/pnpmgr.c @@ -3095,7 +3095,9 @@ IopInitializePnpServices(IN PDEVICE_NODE DeviceNode) return IopTraverseDeviceTree(&Context); } -static NTSTATUS INIT_FUNCTION +static +INIT_FUNCTION +NTSTATUS IopEnumerateDetectedDevices( IN HANDLE hBaseKey, IN PUNICODE_STRING RelativePath OPTIONAL, @@ -3526,7 +3528,9 @@ cleanup: return Status; } -static BOOLEAN INIT_FUNCTION +static +INIT_FUNCTION +BOOLEAN IopIsFirmwareMapperDisabled(VOID) { UNICODE_STRING KeyPathU = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\SYSTEM\\CURRENTCONTROLSET\\Control\\Pnp"); @@ -3594,9 +3598,9 @@ IopIsFirmwareMapperDisabled(VOID) return (KeyValue != 0) ? TRUE : FALSE; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION IopUpdateRootKey(VOID) { UNICODE_STRING EnumU = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Enum"); diff --git a/ntoskrnl/ke/amd64/kiinit.c b/ntoskrnl/ke/amd64/kiinit.c index a8647203cee..3afeaf88582 100644 --- a/ntoskrnl/ke/amd64/kiinit.c +++ b/ntoskrnl/ke/amd64/kiinit.c @@ -40,6 +40,7 @@ void KiSystemCallEntry32(); /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI KiInitMachineDependent(VOID) @@ -364,6 +365,7 @@ KiInitModuleList(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } } +INIT_FUNCTION VOID NTAPI KiSystemStartup(IN PLOADER_PARAMETER_BLOCK LoaderBlock) diff --git a/ntoskrnl/ke/config.c b/ntoskrnl/ke/config.c index 9c40183e8e5..ca3d8b009b3 100644 --- a/ntoskrnl/ke/config.c +++ b/ntoskrnl/ke/config.c @@ -17,9 +17,9 @@ /* * @implemented */ +INIT_FUNCTION PCONFIGURATION_COMPONENT_DATA NTAPI -INIT_FUNCTION KeFindConfigurationEntry(IN PCONFIGURATION_COMPONENT_DATA Child, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, @@ -38,9 +38,9 @@ KeFindConfigurationEntry(IN PCONFIGURATION_COMPONENT_DATA Child, /* * @implemented */ +INIT_FUNCTION PCONFIGURATION_COMPONENT_DATA NTAPI -INIT_FUNCTION KeFindConfigurationNextEntry(IN PCONFIGURATION_COMPONENT_DATA Child, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, diff --git a/ntoskrnl/ke/i386/cpu.c b/ntoskrnl/ke/i386/cpu.c index ea582d8885b..5f366665bd8 100644 --- a/ntoskrnl/ke/i386/cpu.c +++ b/ntoskrnl/ke/i386/cpu.c @@ -85,9 +85,9 @@ setCx86(UCHAR reg, UCHAR data) /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiSetProcessorType(VOID) { ULONG EFlags, NewEFlags; @@ -152,9 +152,9 @@ KiSetProcessorType(VOID) __writeeflags(EFlags); } +INIT_FUNCTION ULONG NTAPI -INIT_FUNCTION KiGetCpuVendor(VOID) { PKPRCB Prcb = KeGetCurrentPrcb(); @@ -208,9 +208,9 @@ KiGetCpuVendor(VOID) return CPU_UNKNOWN; } +INIT_FUNCTION ULONG NTAPI -INIT_FUNCTION KiGetFeatureBits(VOID) { PKPRCB Prcb = KeGetCurrentPrcb(); @@ -454,9 +454,9 @@ KiGetFeatureBits(VOID) return FeatureBits; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiGetCacheInformation(VOID) { PKIPCR Pcr = (PKIPCR)KeGetPcr(); @@ -722,9 +722,9 @@ KiGetCacheInformation(VOID) Pcr->SecondLevelCacheAssociativity); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiSetCR0Bits(VOID) { ULONG Cr0; @@ -739,9 +739,9 @@ KiSetCR0Bits(VOID) __writecr0(Cr0); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitializeTSS2(IN PKTSS Tss, IN PKGDTENTRY TssEntry OPTIONAL) { @@ -793,9 +793,9 @@ KiInitializeTSS(IN PKTSS Tss) Tss->Ss0 = KGDT_R0_DATA; } +INIT_FUNCTION VOID FASTCALL -INIT_FUNCTION Ki386InitializeTss(IN PKTSS Tss, IN PKIDTENTRY Idt, IN PKGDTENTRY Gdt) @@ -982,18 +982,18 @@ KiSaveProcessorControlState(OUT PKPROCESSOR_STATE ProcessorState) ProcessorState->SpecialRegisters.Ldtr = Ke386GetLocalDescriptorTable(); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitializeMachineType(VOID) { /* Set the Machine Type we got from NTLDR */ KeI386MachineType = KeLoaderBlock->u.I386.MachineType & 0x000FF; } +INIT_FUNCTION ULONG_PTR NTAPI -INIT_FUNCTION KiLoadFastSyscallMachineSpecificRegisters(IN ULONG_PTR Context) { /* Set CS and ESP */ @@ -1005,9 +1005,9 @@ KiLoadFastSyscallMachineSpecificRegisters(IN ULONG_PTR Context) return 0; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiRestoreFastSyscallReturnState(VOID) { /* Check if the CPU Supports fast system call */ @@ -1039,9 +1039,9 @@ KiRestoreFastSyscallReturnState(VOID) } } +INIT_FUNCTION ULONG_PTR NTAPI -INIT_FUNCTION Ki386EnableDE(IN ULONG_PTR Context) { /* Enable DE */ @@ -1049,9 +1049,9 @@ Ki386EnableDE(IN ULONG_PTR Context) return 0; } +INIT_FUNCTION ULONG_PTR NTAPI -INIT_FUNCTION Ki386EnableFxsr(IN ULONG_PTR Context) { /* Enable FXSR */ @@ -1059,9 +1059,9 @@ Ki386EnableFxsr(IN ULONG_PTR Context) return 0; } +INIT_FUNCTION ULONG_PTR NTAPI -INIT_FUNCTION Ki386EnableXMMIExceptions(IN ULONG_PTR Context) { PKIDTENTRY IdtEntry; @@ -1082,9 +1082,9 @@ Ki386EnableXMMIExceptions(IN ULONG_PTR Context) return 0; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiI386PentiumLockErrataFixup(VOID) { KDESCRIPTOR IdtDescriptor = {0, 0, 0}; @@ -1158,9 +1158,9 @@ KiSaveProcessorState(IN PKTRAP_FRAME TrapFrame, KiSaveProcessorControlState(&Prcb->ProcessorState); } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION KiIsNpxPresent(VOID) { ULONG Cr0; @@ -1199,9 +1199,9 @@ KiIsNpxPresent(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION KiIsNpxErrataPresent(VOID) { static double Value1 = 4195835.0, Value2 = 3145727.0; diff --git a/ntoskrnl/ke/i386/kiinit.c b/ntoskrnl/ke/i386/kiinit.c index c17f4dd1f35..6d437a05815 100644 --- a/ntoskrnl/ke/i386/kiinit.c +++ b/ntoskrnl/ke/i386/kiinit.c @@ -31,7 +31,7 @@ ULONGLONG BootCycles, BootCyclesEnd; /* FUNCTIONS *****************************************************************/ -INIT_SECTION +INIT_FUNCTION VOID NTAPI KiInitMachineDependent(VOID) @@ -330,7 +330,7 @@ KiInitMachineDependent(VOID) KiSetCR0Bits(); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI KiInitializePcr(IN ULONG ProcessorNumber, @@ -392,7 +392,7 @@ KiInitializePcr(IN ULONG ProcessorNumber, Pcr->PrcbData.MultiThreadProcessorSet = Pcr->PrcbData.SetMember; } -INIT_SECTION +INIT_FUNCTION VOID NTAPI KiInitializeKernel(IN PKPROCESS InitProcess, @@ -617,7 +617,7 @@ KiInitializeKernel(IN PKPROCESS InitProcess, LoaderBlock->Prcb = 0; } -INIT_SECTION +INIT_FUNCTION VOID FASTCALL KiGetMachineBootPointers(IN PKGDTENTRY *Gdt, @@ -658,7 +658,7 @@ KiGetMachineBootPointers(IN PKGDTENTRY *Gdt, TssSelector.HighWord.Bytes.BaseHi << 24); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI KiSystemStartupBootStack(VOID) @@ -710,7 +710,7 @@ KiMarkPageAsReadOnly( __invlpg(Address); } -INIT_SECTION +INIT_FUNCTION VOID NTAPI KiSystemStartup(IN PLOADER_PARAMETER_BLOCK LoaderBlock) diff --git a/ntoskrnl/ke/i386/mtrr.c b/ntoskrnl/ke/i386/mtrr.c index 13f76950e02..ed2a7fb7ba1 100644 --- a/ntoskrnl/ke/i386/mtrr.c +++ b/ntoskrnl/ke/i386/mtrr.c @@ -16,18 +16,18 @@ /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitializeMTRR(IN BOOLEAN FinalCpu) { /* FIXME: Support this */ DPRINT("MTRR support detected but not yet taken advantage of\n"); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiAmdK6InitializeMTRR(VOID) { /* FIXME: Support this */ diff --git a/ntoskrnl/ke/i386/patpge.c b/ntoskrnl/ke/i386/patpge.c index a0e9b494240..8a27d7a7384 100644 --- a/ntoskrnl/ke/i386/patpge.c +++ b/ntoskrnl/ke/i386/patpge.c @@ -17,7 +17,7 @@ /* FUNCTIONS *****************************************************************/ -INIT_SECTION +INIT_FUNCTION ULONG_PTR NTAPI Ki386EnableGlobalPage(IN ULONG_PTR Context) @@ -55,18 +55,18 @@ Ki386EnableGlobalPage(IN ULONG_PTR Context) return 0; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitializePAT(VOID) { /* FIXME: Support this */ DPRINT("PAT support detected but not yet taken advantage of\n"); } +INIT_FUNCTION ULONG_PTR NTAPI -INIT_FUNCTION Ki386EnableTargetLargePage(IN ULONG_PTR Context) { PLARGE_IDENTITY_MAP IdentityMap = (PLARGE_IDENTITY_MAP)Context; diff --git a/ntoskrnl/ke/krnlinit.c b/ntoskrnl/ke/krnlinit.c index 96ac3d26127..accdeae7efb 100644 --- a/ntoskrnl/ke/krnlinit.c +++ b/ntoskrnl/ke/krnlinit.c @@ -65,9 +65,9 @@ KSPIN_LOCK KiReverseStallIpiLock; /* FUNCTIONS *****************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitSystem(VOID) { ULONG i; @@ -117,9 +117,9 @@ KiInitSystem(VOID) sizeof(KeServiceDescriptorTable)); } +INIT_FUNCTION LARGE_INTEGER NTAPI -INIT_FUNCTION KiComputeReciprocal(IN LONG Divisor, OUT PUCHAR Shift) { @@ -181,9 +181,9 @@ KiComputeReciprocal(IN LONG Divisor, return Reciprocal; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KiInitSpinLocks(IN PKPRCB Prcb, IN CCHAR Number) { @@ -287,9 +287,9 @@ KiInitSpinLocks(IN PKPRCB Prcb, } } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION KeInitSystem(VOID) { /* Check if Threaded DPCs are enabled */ diff --git a/ntoskrnl/lpc/port.c b/ntoskrnl/lpc/port.c index 7ca93a1574f..ea49eb0c4b5 100644 --- a/ntoskrnl/lpc/port.c +++ b/ntoskrnl/lpc/port.c @@ -31,9 +31,9 @@ static GENERIC_MAPPING LpcpPortMapping = /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION LpcInitSystem(VOID) { OBJECT_TYPE_INITIALIZER ObjectTypeInitializer; diff --git a/ntoskrnl/mm/ARM3/expool.c b/ntoskrnl/mm/ARM3/expool.c index 0828126d878..af83d88f057 100644 --- a/ntoskrnl/mm/ARM3/expool.c +++ b/ntoskrnl/mm/ARM3/expool.c @@ -628,9 +628,9 @@ MiDumpPoolConsumers(BOOLEAN CalledFromDbg, ULONG Tag, ULONG Mask, ULONG Flags) /* PRIVATE FUNCTIONS **********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_SECTION ExpSeedHotTags(VOID) { ULONG i, Key, Hash, Index; @@ -958,9 +958,9 @@ ExpInsertPoolTracker(IN ULONG Key, DPRINT1("Out of pool tag space, ignoring...\n"); } +INIT_FUNCTION VOID NTAPI -INIT_SECTION ExInitializePoolDescriptor(IN PPOOL_DESCRIPTOR PoolDescriptor, IN POOL_TYPE PoolType, IN ULONG PoolIndex, @@ -1009,9 +1009,9 @@ ExInitializePoolDescriptor(IN PPOOL_DESCRIPTOR PoolDescriptor, ASSERT(PoolType != PagedPoolSession); } +INIT_FUNCTION VOID NTAPI -INIT_SECTION InitializePool(IN POOL_TYPE PoolType, IN ULONG Threshold) { diff --git a/ntoskrnl/mm/ARM3/i386/init.c b/ntoskrnl/mm/ARM3/i386/init.c index 58cb5ba03c9..6d3e2e7045b 100644 --- a/ntoskrnl/mm/ARM3/i386/init.c +++ b/ntoskrnl/mm/ARM3/i386/init.c @@ -39,9 +39,9 @@ MMPTE MmDecommittedPte = {{MM_DECOMMIT << MM_PTE_SOFTWARE_PROTECTION_BITS}}; /* PRIVATE FUNCTIONS **********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeSessionSpaceLayout(VOID) { // @@ -120,9 +120,9 @@ MiInitializeSessionSpaceLayout(VOID) MM_ALLOCATION_GRANULARITY); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiComputeNonPagedPoolVa(IN ULONG FreePages) { IN PFN_NUMBER PoolPages; @@ -236,9 +236,9 @@ MiComputeNonPagedPoolVa(IN ULONG FreePages) } } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PFN_NUMBER PageFrameIndex; diff --git a/ntoskrnl/mm/ARM3/largepag.c b/ntoskrnl/mm/ARM3/largepag.c index f169b4970bc..e0c5ce9d56c 100644 --- a/ntoskrnl/mm/ARM3/largepag.c +++ b/ntoskrnl/mm/ARM3/largepag.c @@ -28,9 +28,9 @@ BOOLEAN MiLargePageAllDrivers; /* FUNCTIONS ******************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeLargePageSupport(VOID) { #if _MI_PAGING_LEVELS > 2 @@ -48,9 +48,9 @@ MiInitializeLargePageSupport(VOID) #endif } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiSyncCachedRanges(VOID) { ULONG i; @@ -62,9 +62,9 @@ MiSyncCachedRanges(VOID) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeDriverLargePageList(VOID) { PWCHAR p, pp; diff --git a/ntoskrnl/mm/ARM3/miarm.h b/ntoskrnl/mm/ARM3/miarm.h index 00801d8c16e..27ff0718ba4 100644 --- a/ntoskrnl/mm/ARM3/miarm.h +++ b/ntoskrnl/mm/ARM3/miarm.h @@ -1667,6 +1667,7 @@ MiQueryPageTableReferences(IN PVOID Address) return *RefCount; } +INIT_FUNCTION BOOLEAN NTAPI MmArmInitSystem( @@ -1674,34 +1675,40 @@ MmArmInitSystem( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION VOID NTAPI MiInitializeSessionSpaceLayout(VOID); +INIT_FUNCTION NTSTATUS NTAPI MiInitMachineDependent( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION VOID NTAPI MiComputeColorInformation( VOID ); +INIT_FUNCTION VOID NTAPI MiMapPfnDatabase( IN PLOADER_PARAMETER_BLOCK LoaderBlock ); +INIT_FUNCTION VOID NTAPI MiInitializeColorTables( VOID ); +INIT_FUNCTION VOID NTAPI MiInitializePfnDatabase( @@ -1720,18 +1727,21 @@ MiInitializeSessionIds( VOID ); +INIT_FUNCTION BOOLEAN NTAPI MiInitializeMemoryEvents( VOID ); +INIT_FUNCTION PFN_NUMBER NTAPI MxGetNextPage( IN PFN_NUMBER PageCount ); +INIT_FUNCTION PPHYSICAL_MEMORY_DESCRIPTOR NTAPI MmInitializeMemoryLimits( @@ -1778,24 +1788,28 @@ MiCheckPdeForPagedPool( IN PVOID Address ); +INIT_FUNCTION VOID NTAPI MiInitializeNonPagedPool( VOID ); +INIT_FUNCTION VOID NTAPI MiInitializeNonPagedPoolThresholds( VOID ); +INIT_FUNCTION VOID NTAPI MiInitializePoolEvents( VOID ); +INIT_FUNCTION VOID // NTAPI // InitializePool( // @@ -1804,9 +1818,9 @@ InitializePool( // ); // // FIXFIX: THIS ONE TOO +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION ExInitializePoolDescriptor( IN PPOOL_DESCRIPTOR PoolDescriptor, IN POOL_TYPE PoolType, @@ -1821,6 +1835,7 @@ MiInitializeSessionPool( VOID ); +INIT_FUNCTION VOID NTAPI MiInitializeSystemPtes( @@ -1982,18 +1997,21 @@ MiLookupDataTableEntry( IN PVOID Address ); +INIT_FUNCTION VOID NTAPI MiInitializeDriverLargePageList( VOID ); +INIT_FUNCTION VOID NTAPI MiInitializeLargePageSupport( VOID ); +INIT_FUNCTION VOID NTAPI MiSyncCachedRanges( diff --git a/ntoskrnl/mm/ARM3/mminit.c b/ntoskrnl/mm/ARM3/mminit.c index 217aa6569d1..bcb8f1652ab 100644 --- a/ntoskrnl/mm/ARM3/mminit.c +++ b/ntoskrnl/mm/ARM3/mminit.c @@ -477,9 +477,9 @@ MiScanMemoryDescriptors(IN PLOADER_PARAMETER_BLOCK LoaderBlock) MxOldFreeDescriptor = *MxFreeDescriptor; } +INIT_FUNCTION PFN_NUMBER NTAPI -INIT_FUNCTION MxGetNextPage(IN PFN_NUMBER PageCount) { PFN_NUMBER Pfn; @@ -502,9 +502,9 @@ MxGetNextPage(IN PFN_NUMBER PageCount) return Pfn; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiComputeColorInformation(VOID) { ULONG L2Associativity; @@ -556,9 +556,9 @@ MiComputeColorInformation(VOID) KeGetCurrentPrcb()->SecondaryColorMask = MmSecondaryColorMask; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeColorTables(VOID) { ULONG i; @@ -607,9 +607,9 @@ MiInitializeColorTables(VOID) } #ifndef _M_AMD64 +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION MiIsRegularMemory(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PFN_NUMBER Pfn) { @@ -666,9 +666,9 @@ MiIsRegularMemory(IN PLOADER_PARAMETER_BLOCK LoaderBlock, return FALSE; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiMapPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PFN_NUMBER FreePage, FreePageCount, PagesLeft, BasePage, PageCount; @@ -762,9 +762,9 @@ MiMapPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock) MxFreeDescriptor->PageCount = FreePageCount; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiBuildPfnDatabaseFromPages(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PMMPDE PointerPde; @@ -871,9 +871,9 @@ MiBuildPfnDatabaseFromPages(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiBuildPfnDatabaseZeroPage(VOID) { PMMPFN Pfn1; @@ -894,9 +894,9 @@ MiBuildPfnDatabaseZeroPage(VOID) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiBuildPfnDatabaseFromLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLIST_ENTRY NextEntry; @@ -1038,9 +1038,9 @@ MiBuildPfnDatabaseFromLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiBuildPfnDatabaseSelf(VOID) { PMMPTE PointerPte, LastPte; @@ -1068,9 +1068,9 @@ MiBuildPfnDatabaseSelf(VOID) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializePfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { /* Scan memory and start setting up PFN entries */ @@ -1087,9 +1087,9 @@ MiInitializePfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } #endif /* !_M_AMD64 */ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MmFreeLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLIST_ENTRY NextMd; @@ -1197,9 +1197,9 @@ MmFreeLoaderBlock(IN PLOADER_PARAMETER_BLOCK LoaderBlock) ExFreePoolWithTag(Buffer, 'lMmM'); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiAdjustWorkingSetManagerParameters(IN BOOLEAN Client) { /* This function needs to do more work, for now, we tune page minimums */ @@ -1212,9 +1212,9 @@ MiAdjustWorkingSetManagerParameters(IN BOOLEAN Client) } } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiNotifyMemoryEvents(VOID) { /* Are we in a low-memory situation? */ @@ -1238,9 +1238,9 @@ MiNotifyMemoryEvents(VOID) } } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MiCreateMemoryEvent(IN PUNICODE_STRING Name, OUT PKEVENT *Event) { @@ -1333,9 +1333,9 @@ CleanUp: return Status; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION MiInitializeMemoryEvents(VOID) { UNICODE_STRING LowString = RTL_CONSTANT_STRING(L"\\KernelObjects\\LowMemoryCondition"); @@ -1412,9 +1412,9 @@ MiInitializeMemoryEvents(VOID) return TRUE; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiAddHalIoMappings(VOID) { PVOID BaseAddress; @@ -1616,9 +1616,9 @@ MmDumpArmPfnDatabase(IN BOOLEAN StatusOnly) KeLowerIrql(OldIrql); } +INIT_FUNCTION PPHYSICAL_MEMORY_DESCRIPTOR NTAPI -INIT_FUNCTION MmInitializeMemoryLimits(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PBOOLEAN IncludeType) { @@ -1745,9 +1745,9 @@ MmInitializeMemoryLimits(IN PLOADER_PARAMETER_BLOCK LoaderBlock, return Buffer; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiBuildPagedPool(VOID) { PMMPTE PointerPte; @@ -1985,9 +1985,9 @@ MiBuildPagedPool(VOID) MiInitializeSystemSpaceMap(NULL); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiDbgDumpMemoryDescriptors(VOID) { PLIST_ENTRY NextEntry; @@ -2037,9 +2037,9 @@ MiDbgDumpMemoryDescriptors(VOID) DPRINT1("Total: %08lX (%lu MB)\n", (ULONG)TotalPages, (ULONG)(TotalPages * PAGE_SIZE) / 1024 / 1024); } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION MmArmInitSystem(IN ULONG Phase, IN PLOADER_PARAMETER_BLOCK LoaderBlock) { diff --git a/ntoskrnl/mm/ARM3/pool.c b/ntoskrnl/mm/ARM3/pool.c index 9ef703ef2c9..5d6554bad75 100644 --- a/ntoskrnl/mm/ARM3/pool.c +++ b/ntoskrnl/mm/ARM3/pool.c @@ -178,9 +178,9 @@ MiProtectedPoolRemoveEntryList(IN PLIST_ENTRY Entry) if (PoolBlink) MiProtectFreeNonPagedPool(PoolBlink, 1); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeNonPagedPoolThresholds(VOID) { PFN_NUMBER Size = MmMaximumNonPagedPoolInPages; @@ -195,9 +195,9 @@ MiInitializeNonPagedPoolThresholds(VOID) ASSERT(MiLowNonPagedPoolThreshold < MiHighNonPagedPoolThreshold); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializePoolEvents(VOID) { KIRQL OldIrql; @@ -270,9 +270,9 @@ MiInitializePoolEvents(VOID) KeReleaseQueuedSpinLock(LockQueueMmNonPagedPoolLock, OldIrql); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeNonPagedPool(VOID) { ULONG i; diff --git a/ntoskrnl/mm/ARM3/procsup.c b/ntoskrnl/mm/ARM3/procsup.c index 51502b9a5d1..cbc784066a0 100644 --- a/ntoskrnl/mm/ARM3/procsup.c +++ b/ntoskrnl/mm/ARM3/procsup.c @@ -1028,9 +1028,9 @@ MmInitializeProcessAddressSpace(IN PEPROCESS Process, return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MmInitializeHandBuiltProcess(IN PEPROCESS Process, IN PULONG_PTR DirectoryTableBase) { @@ -1053,9 +1053,9 @@ MmInitializeHandBuiltProcess(IN PEPROCESS Process, return STATUS_SUCCESS; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MmInitializeHandBuiltProcess2(IN PEPROCESS Process) { /* Lock the VAD, ARM3-owned ranges away */ diff --git a/ntoskrnl/mm/ARM3/sysldr.c b/ntoskrnl/mm/ARM3/sysldr.c index d614b8bf3a9..15b267d1468 100644 --- a/ntoskrnl/mm/ARM3/sysldr.c +++ b/ntoskrnl/mm/ARM3/sysldr.c @@ -586,9 +586,9 @@ MiProcessLoaderEntry(IN PLDR_DATA_TABLE_ENTRY LdrEntry, KeLeaveCriticalRegion(); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiUpdateThunks(IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PVOID OldBase, IN PVOID NewBase, @@ -1444,9 +1444,9 @@ MiFreeInitializationCode(IN PVOID InitStart, NULL); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiFindInitializationCode(OUT PVOID *StartVa, OUT PVOID *EndVa) { @@ -1679,9 +1679,9 @@ MmFreeDriverInitialization(IN PLDR_DATA_TABLE_ENTRY LdrEntry) MiDeleteSystemPageableVm(StartPte, PageCount, 0, NULL); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLIST_ENTRY NextEntry; @@ -1868,9 +1868,9 @@ MiReloadBootLoadedDrivers(IN PLOADER_PARAMETER_BLOCK LoaderBlock) } } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MiBuildImportsForBootDrivers(VOID) { PLIST_ENTRY NextEntry, NextEntry2; @@ -2133,9 +2133,9 @@ MiBuildImportsForBootDrivers(VOID) return STATUS_SUCCESS; } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiLocateKernelSections(IN PLDR_DATA_TABLE_ENTRY LdrEntry) { ULONG_PTR DllBase; @@ -2194,9 +2194,9 @@ MiLocateKernelSections(IN PLDR_DATA_TABLE_ENTRY LdrEntry) } } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION MiInitializeLoadedModuleList(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { PLDR_DATA_TABLE_ENTRY LdrEntry, NewEntry; diff --git a/ntoskrnl/mm/ARM3/syspte.c b/ntoskrnl/mm/ARM3/syspte.c index 673b2e9a2c1..3c1ec6ca6da 100644 --- a/ntoskrnl/mm/ARM3/syspte.c +++ b/ntoskrnl/mm/ARM3/syspte.c @@ -393,9 +393,9 @@ MiReleaseSystemPtes(IN PMMPTE StartingPte, KeReleaseQueuedSpinLock(LockQueueSystemSpaceLock, OldIrql); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiInitializeSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE PoolType) diff --git a/ntoskrnl/mm/mminit.c b/ntoskrnl/mm/mminit.c index e0166ee8fb3..4f328ab65c9 100644 --- a/ntoskrnl/mm/mminit.c +++ b/ntoskrnl/mm/mminit.c @@ -39,8 +39,8 @@ extern NTSTATUS MiRosTrimCache(ULONG Target, ULONG Priority, PULONG NrFreed); // Helper function to create initial memory areas. // The created area is always read/write. // -VOID INIT_FUNCTION +VOID NTAPI MiCreateArm3StaticMemoryArea(PVOID BaseAddress, SIZE_T Size, BOOLEAN Executable) { @@ -61,8 +61,8 @@ MiCreateArm3StaticMemoryArea(PVOID BaseAddress, SIZE_T Size, BOOLEAN Executable) // TODO: Perhaps it would be prudent to bugcheck here, not only assert? } -VOID INIT_FUNCTION +VOID NTAPI MiInitSystemMemoryAreas(VOID) { @@ -117,9 +117,9 @@ MiInitSystemMemoryAreas(VOID) #endif /* _X86_ */ } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION MiDbgDumpAddressSpace(VOID) { // @@ -169,9 +169,9 @@ MiDbgDumpAddressSpace(VOID) "Non Paged Pool Expansion PTE Space"); } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION MmInitBsmThread(VOID) { NTSTATUS Status; @@ -193,9 +193,9 @@ MmInitBsmThread(VOID) return Status; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION MmInitSystem(IN ULONG Phase, IN PLOADER_PARAMETER_BLOCK LoaderBlock) { diff --git a/ntoskrnl/ob/obinit.c b/ntoskrnl/ob/obinit.c index dcc2448a4a1..e4de1a16d7d 100644 --- a/ntoskrnl/ob/obinit.c +++ b/ntoskrnl/ob/obinit.c @@ -55,9 +55,9 @@ ULONG ObpInitializationPhase; /* PRIVATE FUNCTIONS *********************************************************/ static +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ObpCreateKernelObjectsSD(OUT PSECURITY_DESCRIPTOR *SecurityDescriptor) { PSECURITY_DESCRIPTOR Sd = NULL; diff --git a/ntoskrnl/ob/obname.c b/ntoskrnl/ob/obname.c index a9d05c8137e..b1e541eeb4b 100644 --- a/ntoskrnl/ob/obname.c +++ b/ntoskrnl/ob/obname.c @@ -34,9 +34,9 @@ ULONG ObpUnsecureGlobalNamesLength = sizeof(ObpUnsecureGlobalNamesBuffer); /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ObpCreateGlobalDosDevicesSD(OUT PSECURITY_DESCRIPTOR *SecurityDescriptor) { PSECURITY_DESCRIPTOR Sd = NULL; @@ -127,9 +127,9 @@ done: return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ObpCreateDosDevicesDirectory(VOID) { OBJECT_ATTRIBUTES ObjectAttributes; diff --git a/ntoskrnl/ob/obsdcach.c b/ntoskrnl/ob/obsdcach.c index 7573ba69f0f..4d6433cad85 100644 --- a/ntoskrnl/ob/obsdcach.c +++ b/ntoskrnl/ob/obsdcach.c @@ -55,9 +55,9 @@ ObpSdReleaseLockShared(IN POB_SD_CACHE_LIST CacheEntry) KeLeaveCriticalRegion(); } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ObpInitSdCache(VOID) { ULONG i; diff --git a/ntoskrnl/po/power.c b/ntoskrnl/po/power.c index c34a660c86e..a0dd4fb3af9 100644 --- a/ntoskrnl/po/power.c +++ b/ntoskrnl/po/power.c @@ -289,9 +289,9 @@ PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState, POWER_ACTION PowerAction) return Status; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION PoInitSystem(IN ULONG BootPhase) { PVOID NotificationEntry; @@ -383,9 +383,9 @@ PopIdle0(IN PPROCESSOR_POWER_STATE PowerState) HalProcessorIdle(); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION PoInitializePrcb(IN PKPRCB Prcb) { /* Initialize the Power State */ diff --git a/ntoskrnl/ps/apphelp.c b/ntoskrnl/ps/apphelp.c index 6cdea62bca1..7692c7ab2e0 100644 --- a/ntoskrnl/ps/apphelp.c +++ b/ntoskrnl/ps/apphelp.c @@ -434,9 +434,9 @@ ApphelpCacheWrite(VOID) } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION ApphelpCacheInitialize(VOID) { DPRINT("SHIMS: ApphelpCacheInitialize\n"); diff --git a/ntoskrnl/ps/job.c b/ntoskrnl/ps/job.c index fd0049c9915..f37de8bbb07 100644 --- a/ntoskrnl/ps/job.c +++ b/ntoskrnl/ps/job.c @@ -105,9 +105,9 @@ PspDeleteJob ( PVOID ObjectBody ) ExDeleteResource(&Job->JobLock); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION PspInitializeJobStructures(VOID) { InitializeListHead(&PsJobListHead); diff --git a/ntoskrnl/ps/psmgr.c b/ntoskrnl/ps/psmgr.c index ed01622235f..317861c1288 100644 --- a/ntoskrnl/ps/psmgr.c +++ b/ntoskrnl/ps/psmgr.c @@ -62,9 +62,9 @@ BOOLEAN PspDoingGiveBacks; /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION USHORT NTAPI -INIT_FUNCTION NameToOrdinal(IN PCHAR Name, IN PVOID DllBase, IN ULONG NumberOfNames, @@ -105,9 +105,9 @@ NameToOrdinal(IN PCHAR Name, return NameToOrdinal(Name, DllBase, NumberOfNames, NameTable, OrdinalTable); } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION LookupEntryPoint(IN PVOID DllBase, IN PCHAR Name, OUT PVOID *EntryPoint) @@ -157,9 +157,9 @@ LookupEntryPoint(IN PVOID DllBase, return STATUS_SUCCESS; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION PspLookupSystemDllEntryPoint(IN PCHAR Name, IN PVOID *EntryPoint) { @@ -167,9 +167,9 @@ PspLookupSystemDllEntryPoint(IN PCHAR Name, return LookupEntryPoint(PspSystemDllBase, Name, EntryPoint); } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION PspLookupKernelUserEntryPoints(VOID) { NTSTATUS Status; @@ -273,9 +273,9 @@ PspMapSystemDll(IN PEPROCESS Process, return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION PsLocateSystemDll(VOID) { OBJECT_ATTRIBUTES ObjectAttributes; @@ -359,9 +359,9 @@ PsLocateSystemDll(VOID) return Status; } +INIT_FUNCTION NTSTATUS NTAPI -INIT_FUNCTION PspInitializeSystemDll(VOID) { NTSTATUS Status; @@ -392,9 +392,9 @@ PspInitializeSystemDll(VOID) return Status; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION PspInitPhase1(VOID) { /* Initialize the System DLL and return status of operation */ @@ -402,9 +402,9 @@ PspInitPhase1(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION PspInitPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { NTSTATUS Status; @@ -620,9 +620,9 @@ PspInitPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION PsInitSystem(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { /* Check the initialization phase */ diff --git a/ntoskrnl/ps/quota.c b/ntoskrnl/ps/quota.c index f955818f78f..b813190a76c 100644 --- a/ntoskrnl/ps/quota.c +++ b/ntoskrnl/ps/quota.c @@ -95,9 +95,9 @@ PspReturnProcessQuotaSpecifiedPool(IN PEPROCESS Process, /* FUNCTIONS ***************************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION PsInitializeQuotaSystem(VOID) { RtlZeroMemory(&PspDefaultQuotaBlock, sizeof(PspDefaultQuotaBlock)); diff --git a/ntoskrnl/se/semgr.c b/ntoskrnl/se/semgr.c index 389f6bf765e..3156e64227c 100644 --- a/ntoskrnl/se/semgr.c +++ b/ntoskrnl/se/semgr.c @@ -24,8 +24,9 @@ extern ERESOURCE SepSubjectContextLock; /* PRIVATE FUNCTIONS **********************************************************/ -static BOOLEAN +static INIT_FUNCTION +BOOLEAN SepInitExports(VOID) { SepExports.SeCreateTokenPrivilege = SeCreateTokenPrivilege; @@ -89,9 +90,9 @@ SepInitExports(VOID) } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION SepInitializationPhase0(VOID) { PAGED_CODE(); @@ -124,9 +125,9 @@ SepInitializationPhase0(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION SepInitializationPhase1(VOID) { OBJECT_ATTRIBUTES ObjectAttributes; @@ -232,9 +233,9 @@ SepInitializationPhase1(VOID) return TRUE; } +INIT_FUNCTION BOOLEAN NTAPI -INIT_FUNCTION SeInitSystem(VOID) { /* Check the initialization phase */ diff --git a/ntoskrnl/vdm/vdmmain.c b/ntoskrnl/vdm/vdmmain.c index 8bedcd9cdc9..32a45a9ba42 100644 --- a/ntoskrnl/vdm/vdmmain.c +++ b/ntoskrnl/vdm/vdmmain.c @@ -17,9 +17,9 @@ /* PRIVATE FUNCTIONS *********************************************************/ +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION Ki386VdmEnablePentiumExtentions(IN BOOLEAN Enable) { ULONG EFlags, Cr4; @@ -36,9 +36,9 @@ Ki386VdmEnablePentiumExtentions(IN BOOLEAN Enable) __writeeflags(EFlags); } +INIT_FUNCTION VOID NTAPI -INIT_FUNCTION KeI386VdmInitialize(VOID) { NTSTATUS Status; diff --git a/sdk/cmake/msvc.cmake b/sdk/cmake/msvc.cmake index eda09727294..747b23b199c 100644 --- a/sdk/cmake/msvc.cmake +++ b/sdk/cmake/msvc.cmake @@ -139,9 +139,9 @@ if(RUNTIME_CHECKS) add_compile_flags("/RTC1") endif() -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE ${_hotpatch_link_flag}") -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE /IGNORE:4104 ${_hotpatch_link_flag}") -set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE ${_hotpatch_link_flag}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE ${_hotpatch_link_flag} /IGNORE:4039") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE ${_hotpatch_link_flag} /IGNORE:4104 /IGNORE:4039") +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO /INCREMENTAL:NO /SAFESEH:NO /NODEFAULTLIB /RELEASE ${_hotpatch_link_flag} /IGNORE:4039") # HACK: Remove the /implib argument, implibs are generated separately string(REPLACE "/implib:" "" CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE}") diff --git a/sdk/include/ndk/halfuncs.h b/sdk/include/ndk/halfuncs.h index 29877c5a584..03e869887a2 100644 --- a/sdk/include/ndk/halfuncs.h +++ b/sdk/include/ndk/halfuncs.h @@ -25,6 +25,7 @@ Author: #include #include #include +#include #ifndef NTOS_MODE_USER @@ -80,6 +81,7 @@ HalInitializeProcessor( _In_ struct _LOADER_PARAMETER_BLOCK *LoaderBlock ); +INIT_FUNCTION NTHALAPI BOOLEAN NTAPI @@ -175,6 +177,7 @@ HalGetInterruptSource( ); #endif +INIT_FUNCTION NTHALAPI VOID NTAPI diff --git a/sdk/include/ndk/inbvfuncs.h b/sdk/include/ndk/inbvfuncs.h index 61855e9054c..df121830cb6 100644 --- a/sdk/include/ndk/inbvfuncs.h +++ b/sdk/include/ndk/inbvfuncs.h @@ -24,6 +24,7 @@ Author: // #include #include +#include #ifndef NTOS_MODE_USER // @@ -50,6 +51,7 @@ InbvNotifyDisplayOwnershipLost( // // Installation Functions // +INIT_FUNCTION VOID NTAPI InbvEnableBootDriver( diff --git a/sdk/include/ndk/kefuncs.h b/sdk/include/ndk/kefuncs.h index f0b1c275f0a..6d7b713cc8d 100644 --- a/sdk/include/ndk/kefuncs.h +++ b/sdk/include/ndk/kefuncs.h @@ -24,6 +24,7 @@ Author: // #include #include +#include #ifndef NTOS_MODE_USER @@ -244,6 +245,7 @@ KeSignalCallDpcSynchronize( // ARC Configuration Functions. Only enabled if you have ARC Support // #ifdef _ARC_ +INIT_FUNCTION PCONFIGURATION_COMPONENT_DATA NTAPI KeFindConfigurationNextEntry( @@ -254,6 +256,7 @@ KeFindConfigurationNextEntry( _In_ PCONFIGURATION_COMPONENT_DATA *NextLink ); +INIT_FUNCTION PCONFIGURATION_COMPONENT_DATA NTAPI KeFindConfigurationEntry( diff --git a/sdk/include/ndk/section_attribs.h b/sdk/include/ndk/section_attribs.h new file mode 100644 index 00000000000..a35fae81ebc --- /dev/null +++ b/sdk/include/ndk/section_attribs.h @@ -0,0 +1,41 @@ +/*++ NDK Version: 0099 + +Copyright (c) Alex Ionescu. All rights reserved. + +Header Name: + + section_attribs.h + +Abstract: + + Preprocessor definitions to put code and data into the INIT section. + +Author: + + Timo Kreuzer (timo.kreuzer@reactos.org) + +--*/ + +#pragma once + +#ifdef __GNUC__ + +#define INIT_SECTION __attribute__((section ("INIT"))) +#define INIT_FUNCTION __attribute__((section ("INIT"))) + +#elif defined(_MSC_VER) + +#pragma comment(linker, "/SECTION:INIT,ERW") +#define INIT_SECTION __declspec(allocate("INIT")) +#if (_MSC_VER >= 1800) // Visual Studio 2013 / version 12.0 +#define INIT_FUNCTION __declspec(code_seg("INIT")) +#else +#pragma section("INIT", read,execute,discard) +#define INIT_FUNCTION +#endif + +#else + +#error Invalid compiler! + +#endif diff --git a/win32ss/gdi/eng/ldevobj.h b/win32ss/gdi/eng/ldevobj.h index 5405ec1c692..a689914ad60 100644 --- a/win32ss/gdi/eng/ldevobj.h +++ b/win32ss/gdi/eng/ldevobj.h @@ -51,6 +51,7 @@ NTAPI EngGetLDEV( PDEVMODEW pdm); +INIT_FUNCTION NTSTATUS APIENTRY DriverEntry ( diff --git a/win32ss/user/ntuser/main.c b/win32ss/user/ntuser/main.c index b97a1f3d372..318a7ea70eb 100644 --- a/win32ss/user/ntuser/main.c +++ b/win32ss/user/ntuser/main.c @@ -904,7 +904,7 @@ DriverUnload(IN PDRIVER_OBJECT DriverObject) /* * This definition doesn't work */ -INIT_SECTION +INIT_FUNCTION NTSTATUS APIENTRY DriverEntry( diff --git a/win32ss/win32kp.h b/win32ss/win32kp.h index 1bdcf38eddc..2d0f358597c 100644 --- a/win32ss/win32kp.h +++ b/win32ss/win32kp.h @@ -10,14 +10,6 @@ #pragma once -#ifdef __GNUC__ -#define INIT_SECTION __attribute__((section ("INIT"))) -#define INIT_FUNCTION INIT_SECTION -#else -#define INIT_SECTION /* Done via alloc_text for MSC */ -#define INIT_FUNCTION INIT_SECTION -#endif - /* Enable debugging features */ #define GDI_DEBUG 0 #define DBG_ENABLE_GDIOBJ_BACKTRACES 0 -- 2.17.1