Add Deferred Procedure Call (DPC) and processor power state related structures
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
e41de62dab
commit
ef23acc3bc
@ -12,6 +12,7 @@
|
||||
#include <xtbase.h>
|
||||
#include <xtstruct.h>
|
||||
#include <xttypes.h>
|
||||
#include <potypes.h>
|
||||
#include ARCH_HEADER(xtstruct.h)
|
||||
#include ARCH_HEADER(artypes.h)
|
||||
|
||||
@ -452,8 +453,12 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
||||
ULONG_PTR SetMember;
|
||||
CPU_IDENTIFICATION CpuId;
|
||||
KPROCESSOR_STATE ProcessorState;
|
||||
KDPC_DATA DpcData[2];
|
||||
PVOID DpcStack;
|
||||
VOLATILE ULONG_PTR TimerRequest;
|
||||
ULONG_PTR MultiThreadProcessorSet;
|
||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||
PROCESSOR_POWER_STATE PowerState;
|
||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||
|
||||
/* Processor Block structure definition */
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <xtbase.h>
|
||||
#include <xtstruct.h>
|
||||
#include <xttypes.h>
|
||||
#include <potypes.h>
|
||||
#include ARCH_HEADER(xtstruct.h)
|
||||
#include ARCH_HEADER(artypes.h)
|
||||
|
||||
@ -401,7 +402,11 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
||||
CPU_IDENTIFICATION CpuId;
|
||||
KPROCESSOR_STATE ProcessorState;
|
||||
ULONG_PTR MultiThreadProcessorSet;
|
||||
KDPC_DATA DpcData[2];
|
||||
PVOID DpcStack;
|
||||
VOLATILE ULONG_PTR TimerRequest;
|
||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||
PROCESSOR_POWER_STATE PowerState;
|
||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||
|
||||
/* Processor Block structure definition */
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <xtstruct.h>
|
||||
#include <xttarget.h>
|
||||
#include <xttypes.h>
|
||||
#include ARCH_HEADER(ketypes.h)
|
||||
#include ARCH_HEADER(xtstruct.h)
|
||||
|
||||
|
||||
/* Exception types and handling mechanisms */
|
||||
@ -43,6 +43,12 @@
|
||||
#define READY_SKIP_QUANTUM 2
|
||||
#define THREAD_QUANTUM 6
|
||||
|
||||
/* Thread priority levels */
|
||||
#define THREAD_LOW_PRIORITY 0
|
||||
#define THREAD_LOW_REALTIME_PRIORITY 16
|
||||
#define THREAD_HIGH_PRIORITY 31
|
||||
#define THREAD_MAXIMUM_PRIORITY 32
|
||||
|
||||
/* Adjust reason */
|
||||
typedef enum _ADJUST_REASON
|
||||
{
|
||||
@ -148,6 +154,7 @@ typedef enum _WAIT_TYPE
|
||||
|
||||
/* 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 (*PKDEFERRED_ROUTINE)(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2);
|
||||
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);
|
||||
@ -186,6 +193,30 @@ typedef struct _KAPC
|
||||
BOOLEAN Inserted;
|
||||
} KAPC, *PKAPC;
|
||||
|
||||
/* Deferred Procedure Call (DPC) object structure definition */
|
||||
typedef struct _KDPC
|
||||
{
|
||||
UCHAR Type;
|
||||
UCHAR Importance;
|
||||
UCHAR Number;
|
||||
UCHAR Expedite;
|
||||
LIST_ENTRY DpcListEntry;
|
||||
PKDEFERRED_ROUTINE DeferredRoutine;
|
||||
PVOID DeferredContext;
|
||||
PVOID SystemArgument1;
|
||||
PVOID SystemArgument2;
|
||||
PVOID DpcData;
|
||||
} KDPC, *PKDPC;
|
||||
|
||||
/* DPC data structure definition */
|
||||
typedef struct _KDPC_DATA
|
||||
{
|
||||
LIST_ENTRY DpcListHead;
|
||||
KSPIN_LOCK DpcLock;
|
||||
VOLATILE ULONG DpcQueueDepth;
|
||||
ULONG DpcCount;
|
||||
} KDPC_DATA, *PKDPC_DATA;
|
||||
|
||||
/* Exception registration record structure definition */
|
||||
typedef struct _EXCEPTION_REGISTRATION_RECORD
|
||||
{
|
||||
@ -271,6 +302,7 @@ typedef struct _KPROCESS
|
||||
LIST_ENTRY ProfileListHead;
|
||||
ULONG_PTR DirectoryTable[2];
|
||||
USHORT IopmOffset;
|
||||
VOLATILE KAFFINITY ActiveProcessors;
|
||||
LIST_ENTRY ReadyListHead;
|
||||
LIST_ENTRY ThreadListHead;
|
||||
KAFFINITY Affinity;
|
||||
@ -355,6 +387,7 @@ typedef struct _KTHREAD
|
||||
};
|
||||
};
|
||||
KWAIT_BLOCK WaitBlock[KTHREAD_WAIT_BLOCK + 1];
|
||||
KIRQL WaitIrql;
|
||||
LIST_ENTRY QueueListEntry;
|
||||
PKTRAP_FRAME TrapFrame;
|
||||
PVOID CallbackStack;
|
||||
@ -363,6 +396,7 @@ typedef struct _KTHREAD
|
||||
UCHAR ApcStateIndex;
|
||||
BOOLEAN StackResident;
|
||||
PKPROCESS Process;
|
||||
KAFFINITY Affinity;
|
||||
PKAPC_STATE ApcStatePointer[2];
|
||||
KAPC_STATE SavedApcState;
|
||||
KAPC SuspendApc;
|
||||
|
30
sdk/xtdk/potypes.h
Normal file
30
sdk/xtdk/potypes.h
Normal file
@ -0,0 +1,30 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: sdk/xtdk/potypes.h
|
||||
* DESCRIPTION: Power manager subsystem structures definitions
|
||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||
*/
|
||||
|
||||
#ifndef __XTDK_POTYPES_H
|
||||
#define __XTDK_POTYPES_H
|
||||
|
||||
#include <xttypes.h>
|
||||
#include <xtstruct.h>
|
||||
#include <ketypes.h>
|
||||
|
||||
|
||||
/* Power Manager routine callbacks */
|
||||
typedef VOID (XTFASTCALL *PPROCESSOR_IDLE_FUNCTION)(PPROCESSOR_POWER_STATE PowerState);
|
||||
|
||||
/* Processor power state structure definition */
|
||||
typedef struct _PROCESSOR_POWER_STATE
|
||||
{
|
||||
PPROCESSOR_IDLE_FUNCTION IdleFunction;
|
||||
ULONG Idle0TimeLimit;
|
||||
UCHAR CurrentThrottle;
|
||||
KTIMER PerfTimer;
|
||||
KDPC PerfDpc;
|
||||
} PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
|
||||
|
||||
#endif /* __XTDK_POTYPES_H */
|
@ -30,6 +30,7 @@
|
||||
#include <iotypes.h>
|
||||
#include <ketypes.h>
|
||||
#include <ldrtypes.h>
|
||||
#include <potypes.h>
|
||||
#include <pstypes.h>
|
||||
#include <rtltypes.h>
|
||||
|
||||
|
@ -199,6 +199,8 @@ 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 _KDPC KDPC, *PKDPC;
|
||||
typedef struct _KDPC_DATA KDPC_DATA, *PKDPC_DATA;
|
||||
typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK;
|
||||
typedef struct _KGATE KGATE, *PKGATE;
|
||||
typedef struct _KPROCESS KPROCESS, *PKPROCESS;
|
||||
@ -240,6 +242,7 @@ typedef struct _PECOFF_IMAGE_ROM_HEADER PECOFF_IMAGE_ROM_HEADER, *PPECOFF_IMAGE_
|
||||
typedef struct _PECOFF_IMAGE_ROM_OPTIONAL_HEADER PECOFF_IMAGE_ROM_OPTIONAL_HEADER, *PPECOFF_IMAGE_ROM_OPTIONAL_HEADER;
|
||||
typedef struct _PECOFF_IMAGE_SECTION_HEADER PECOFF_IMAGE_SECTION_HEADER, *PPECOFF_IMAGE_SECTION_HEADER;
|
||||
typedef struct _PECOFF_IMAGE_VXD_HEADER PECOFF_IMAGE_VXD_HEADER, *PPECOFF_IMAGE_VXD_HEADER;
|
||||
typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
|
||||
typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
typedef struct _STRING STRING, *PSTRING;
|
||||
typedef struct _STRING32 STRING32, *PSTRING32;
|
||||
|
Loading…
Reference in New Issue
Block a user