diff --git a/sdk/xtdk/kertptr.h b/sdk/xtdk/kertptr.h deleted file mode 100644 index 546d838..0000000 --- a/sdk/xtdk/kertptr.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * PROJECT: ExectOS - * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtdk/kertptr.h - * DESCRIPTION: XT kernel core handlers and routine pointers - * DEVELOPERS: Rafal Kupiec - */ - -#ifndef __XTDK_KERTPTR_H -#define __XTDK_KERTPTR_H - -#include -#include -#include -#include ARCH_HEADER(ketypes.h) - - -/* Kernel routine callbacks */ -typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE)(IN PEXCEPTION_RECORD ExceptionRecord, IN PVOID EstablisherFrame, IN OUT PCONTEXT ContextRecord, IN OUT PVOID DispatcherContext); - -#endif /* __XTDK_KERTPTR_H */ diff --git a/sdk/xtdk/ketypes.h b/sdk/xtdk/ketypes.h index 0920a87..5a335e3 100644 --- a/sdk/xtdk/ketypes.h +++ b/sdk/xtdk/ketypes.h @@ -18,14 +18,6 @@ /* Maximum number of exception parameters */ #define EXCEPTION_MAXIMUM_PARAMETERS 15 -/* APC Types */ -typedef enum _MODE -{ - KernelMode, - UserMode, - MaximumMode -} MODE, *PMODE; - /* Exception disposition return values */ typedef enum _EXCEPTION_DISPOSITION { @@ -35,6 +27,67 @@ typedef enum _EXCEPTION_DISPOSITION ExceptionCollidedUnwind, } EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION; +/* APC environment types */ +typedef enum _KAPC_ENVIRONMENT +{ + OriginalApcEnvironment, + AttachedApcEnvironment, + CurrentApcEnvironment, + InsertApcEnvironment +} KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT; + +/* Kernel objects */ +typedef enum _KOBJECTS +{ + EventNotificationObject = 0, + EventSynchronizationObject = 1, + MutantObject = 2, + ProcessObject = 3, + QueueObject = 4, + SemaphoreObject = 5, + ThreadObject = 6, + GateObject = 7, + TimerNotificationObject = 8, + TimerSynchronizationObject = 9, + Spare2Object = 10, + Spare3Object = 11, + Spare4Object = 12, + Spare5Object = 13, + Spare6Object = 14, + Spare7Object = 15, + Spare8Object = 16, + Spare9Object = 17, + ApcObject = 18, + DpcObject = 19, + DeviceQueueObject = 20, + EventPairObject = 21, + InterruptObject = 22, + ProfileObject = 23, + ThreadedDpcObject = 24, + MaximumKernelObject = 25 +} KOBJECTS, *PKOBJECTS; + +/* Timer type */ +typedef enum _KTIMER_TYPE +{ + NotificationTimer, + SynchronizationTimer +} KTIMER_TYPE, *PKTIMER_TYPE; + +/* APC Types */ +typedef enum _MODE +{ + KernelMode, + UserMode, + MaximumMode +} MODE, *PMODE; + +/* Kernel routine callbacks */ +typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE)(IN PEXCEPTION_RECORD ExceptionRecord, IN PVOID EstablisherFrame, IN OUT PCONTEXT ContextRecord, IN OUT PVOID DispatcherContext); +typedef VOID (*PKNORMAL_ROUTINE)(IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2); +typedef VOID (*PKKERNEL_ROUTINE)(IN PKAPC Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArgument2); +typedef VOID (*PKRUNDOWN_ROUTINE)(IN PKAPC Apc); + /* Exception record structure definition */ typedef struct _EXCEPTION_RECORD { @@ -46,6 +99,27 @@ typedef struct _EXCEPTION_RECORD ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; } EXCEPTION_RECORD, *PEXCEPTION_RECORD; +/* Asynchronous Procedure Call (APC) object structure definition */ +typedef struct _KAPC +{ + UCHAR Type; + UCHAR SpareByte0; + UCHAR Size; + UCHAR SpareByte1; + ULONG SpareLong0; + PKTHREAD Thread; + LIST_ENTRY ApcListEntry; + PKKERNEL_ROUTINE KernelRoutine; + PKRUNDOWN_ROUTINE RundownRoutine; + PKNORMAL_ROUTINE NormalRoutine; + PVOID NormalContext; + PVOID SystemArgument1; + PVOID SystemArgument2; + CHAR ApcStateIndex; + KPROCESSOR_MODE ApcMode; + BOOLEAN Inserted; +} KAPC, *PKAPC; + /* Exception registration record structure definition */ typedef struct _EXCEPTION_REGISTRATION_RECORD { @@ -63,6 +137,29 @@ typedef struct _KAPC_STATE BOOLEAN UserApcPending; } KAPC_STATE, *PKAPC_STATE; +/* Semaphore object structure definition */ +typedef struct _KSEMAPHORE +{ + DISPATCHER_HEADER Header; + LONG Limit; +} KSEMAPHORE, *PKSEMAPHORE; + +/* Per processor lock queue structure definition */ +typedef struct _KSPIN_LOCK_QUEUE +{ + PKSPIN_LOCK_QUEUE Next; + PKSPIN_LOCK Lock; +} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE; + +/* Timer object structure definition */ +typedef struct _KTIMER +{ + DISPATCHER_HEADER Header; + ULARGE_INTEGER DueTime; + LIST_ENTRY TimerListEntry; + LONG Period; +} KTIMER, *PKTIMER; + /* Process control block structure definition */ typedef struct _KPROCESS { @@ -72,6 +169,7 @@ typedef struct _KPROCESS /* Thread control block structure definition */ typedef struct _KTHREAD { + DISPATCHER_HEADER Header; PVOID InitialStack; PVOID KernelStack; PVOID StackBase; diff --git a/sdk/xtdk/xtbase.h b/sdk/xtdk/xtbase.h index 822431d..799f3f8 100644 --- a/sdk/xtdk/xtbase.h +++ b/sdk/xtdk/xtbase.h @@ -20,6 +20,9 @@ typedef UCHAR KIRQL, *PKIRQL; /* Processor modes */ typedef CHAR KPROCESSOR_MODE, *PKPROCESSOR_MODE; +/* Spin locks synchronization mechanism */ +typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; + /* 128-bit buffer containing a unique identifier value */ typedef struct _GUID { diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index da5e380..ed16af9 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -48,6 +48,3 @@ #include ARCH_HEADER(arfuncs.h) #include ARCH_HEADER(hlfuncs.h) #include ARCH_HEADER(rtlfuncs.h) - -/* Callbacks */ -#include diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 155bfc9..6b556db 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -37,6 +37,9 @@ typedef enum _EFI_TIMER_DELAY EFI_TIMER_DELAY, *PEFI_TIMER_DELAY; typedef enum _EFI_UART_PARITY_TYPE EFI_UART_PARITY_TYPE, *PEFI_UART_PARITY_TYPE; typedef enum _EFI_UART_STOP_BITS_TYPE EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_BITS_TYPE; typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION EFI_UNIVERSA_GRAPHICS_BLT_OPERATION, *PEFI_UNIVERSA_GRAPHICS_BLT_OPERATION; +typedef enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT; +typedef enum _KOBJECTS KOBJECTS, *PKOBJECTS; +typedef enum _KTIMER_TYPE KTIMER_TYPE, *PKTIMER_TYPE; typedef enum _LOADER_MEMORY_TYPE LOADER_MEMORY_TYPE, *PLOADER_MEMORY_TYPE; typedef enum _MODE MODE, *PMODE; typedef enum _SYSTEM_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE; @@ -190,10 +193,14 @@ typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PE typedef struct _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *PFIRMWARE_INFORMATION_BLOCK; typedef struct _FLOAT128 FLOAT128, *PFLOAT128; typedef struct _GUID GUID, *PGUID; +typedef struct _KAPC KAPC, *PKAPC; typedef struct _KAPC_STATE KAPC_STATE, *PKAPC_STATE; typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK; typedef struct _KPROCESS KPROCESS, *PKPROCESS; +typedef struct _KSEMAPHORE KSEMAPHORE, *PKSEMAPHORE; +typedef struct _KSPIN_LOCK_QUEUE KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE; typedef struct _KTHREAD KTHREAD, *PKTHREAD; +typedef struct _KTIMER KTIMER, *PKTIMER; typedef struct _LDR_DATA_TABLE_ENTRY LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; typedef struct _LIST_ENTRY LIST_ENTRY, *PLIST_ENTRY; typedef struct _LIST_ENTRY32 LIST_ENTRY32, *PLIST_ENTRY32;