From e0778d0a121706e0363fb859964502544f331725 Mon Sep 17 00:00:00 2001 From: belliash Date: Thu, 16 Mar 2023 23:40:38 +0100 Subject: [PATCH] Introduce kernel executive --- sdk/xtdk/extypes.h | 26 ++++++++++++++++++++++++++ sdk/xtdk/xtkmapi.h | 1 + sdk/xtdk/xtstruct.h | 1 + xtoskrnl/ex/rundown.c | 28 ++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 sdk/xtdk/extypes.h create mode 100644 xtoskrnl/ex/rundown.c diff --git a/sdk/xtdk/extypes.h b/sdk/xtdk/extypes.h new file mode 100644 index 0000000..371c6d1 --- /dev/null +++ b/sdk/xtdk/extypes.h @@ -0,0 +1,26 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: sdk/xtdk/extypes.h + * DESCRIPTION: Kernel executive structures definitions + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTDK_EXTYPES_H +#define __XTDK_EXTYPES_H + +#include +#include + + +/* Executive rundown protection structure definition */ +typedef struct _EX_RUNDOWN_REFERENCE +{ + union + { + ULONG_PTR Count; + PVOID Ptr; + }; +} EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; + +#endif /* __XTDK_EXTYPES_H */ diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index ae09189..db672dc 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -26,6 +26,7 @@ #include /* Low level data types headers */ +#include #include #include #include diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index b6c9022..2e3753d 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -193,6 +193,7 @@ typedef struct _EFI_VENDOR_DEVICE_PATH EFI_VENDOR_DEVICE_PATH, *PEFI_VENDOR_DEVI typedef struct _EFI_VLAN_DEVICE_PATH EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DEVICE_PATH; typedef struct _EPROCESS EPROCESS, *PEPROCESS; typedef struct _ETHREAD ETHREAD, *PETHREAD; +typedef struct _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD, *PEXCEPTION_RECORD; typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; typedef struct _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *PFIRMWARE_INFORMATION_BLOCK; diff --git a/xtoskrnl/ex/rundown.c b/xtoskrnl/ex/rundown.c new file mode 100644 index 0000000..193398e --- /dev/null +++ b/xtoskrnl/ex/rundown.c @@ -0,0 +1,28 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/ex/rundown.c + * DESCRIPTION: Rundown protection mechanism + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/** + * Initializes the rundown protection descriptor. + * + * @param Descriptor + * Supplies a pointer to the descriptor to be initialized. + * + * @return This routine does not return any value. + * + * @since NT 5.1 + */ +XTFASTCALL +VOID +ExInitializeRundownProtection(IN PEX_RUNDOWN_REFERENCE Descriptor) +{ + /* Reset descriptor counter */ + Descriptor->Count = 0; +}