Update timer subsystem with multi-backend dispatch table
All checks were successful
All checks were successful
This commit is contained in:
@@ -307,6 +307,17 @@ typedef enum _PIC_I8259_ICW4_SYSTEM_MODE
|
||||
New8086Mode
|
||||
} PIC_I8259_ICW4_SYSTEM_MODE, *PPIC_I8259_ICW4_SYSTEM_MODE;
|
||||
|
||||
/* Supported hardware timer backends */
|
||||
typedef enum _TIMER_TYPE
|
||||
{
|
||||
TimerNone,
|
||||
TimerAcpiPm,
|
||||
TimerHpet,
|
||||
TimerLapic,
|
||||
TimerPit,
|
||||
TimerTsc
|
||||
} TIMER_TYPE, *PTIMER_TYPE;
|
||||
|
||||
/* APIC Base Register */
|
||||
typedef union _APIC_BASE_REGISTER
|
||||
{
|
||||
@@ -500,6 +511,7 @@ typedef struct _HPET_REGISTERS
|
||||
} Timers[];
|
||||
} HPET_REGISTERS, *PHPET_REGISTERS;
|
||||
|
||||
/* Hardware timer capabilities and CPU clock features */
|
||||
typedef struct _TIMER_CAPABILITIES
|
||||
{
|
||||
BOOLEAN Arat;
|
||||
|
||||
@@ -497,6 +497,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
||||
ULONG_PTR MultiThreadProcessorSet;
|
||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||
PROCESSOR_POWER_STATE PowerState;
|
||||
ULONG ProfilingCountdown;
|
||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||
|
||||
/* Processor Block structure definition */
|
||||
|
||||
@@ -37,6 +37,7 @@ typedef enum _PIC_I8259_ICW1_OPERATING_MODE PIC_I8259_ICW1_OPERATING_MODE, *PPIC
|
||||
typedef enum _PIC_I8259_ICW4_BUFFERED_MODE PIC_I8259_ICW4_BUFFERED_MODE, *PPIC_I8259_ICW4_BUFFERED_MODE;
|
||||
typedef enum _PIC_I8259_ICW4_EOI_MODE PIC_I8259_ICW4_EOI_MODE, *PPIC_I8259_ICW4_EOI_MODE;
|
||||
typedef enum _PIC_I8259_ICW4_SYSTEM_MODE PIC_I8259_ICW4_SYSTEM_MODE, *PPIC_I8259_ICW4_SYSTEM_MODE;
|
||||
typedef enum _TIMER_TYPE TIMER_TYPE, *PTIMER_TYPE;
|
||||
typedef enum _TRAMPOLINE_TYPE TRAMPOLINE_TYPE, *PTRAMPOLINE_TYPE;
|
||||
|
||||
/* Architecture-specific structures forward references */
|
||||
|
||||
@@ -188,14 +188,33 @@
|
||||
#define COMPORT_REG_MSR 0x06 /* Modem Status Register */
|
||||
#define COMPORT_REG_SR 0x07 /* Scratch Register */
|
||||
|
||||
/* Standard system clock rates (in 100-nanosecond units)*/
|
||||
#define HL_CLOCK_RATE_1000HZ 10000 /* 1 ms (1000 Hz) - Best Performance */
|
||||
#define HL_CLOCK_RATE_500HZ 20000 /* 2 ms (500 Hz) - High Responsiveness */
|
||||
#define HL_CLOCK_RATE_300HZ 33333 /* 3.33ms (300 Hz) - Multimedia Sync */
|
||||
#define HL_CLOCK_RATE_250HZ 40000 /* 4 ms (250 Hz) - Optimal Balance */
|
||||
#define HL_CLOCK_RATE_100HZ 100000 /* 10 ms (100 Hz) - Power Saving */
|
||||
#define HL_CLOCK_RATE_50HZ 200000 /* 20 ms (50 Hz) - Deep Power Saving */
|
||||
|
||||
/* Minimum and maximum system clock rate definitions */
|
||||
#define HL_MINIMUM_CLOCK_RATE HL_CLOCK_RATE_1000HZ
|
||||
#define HL_MAXIMUM_CLOCK_RATE HL_CLOCK_RATE_50HZ
|
||||
|
||||
/* Minimum and maximum profile intervals */
|
||||
#define MIN_PROFILE_INTERVAL 10000
|
||||
#define MAX_PROFILE_INTERVAL 10000000
|
||||
#define MIN_PROFILE_INTERVAL 10000
|
||||
#define MAX_PROFILE_INTERVAL 10000000
|
||||
|
||||
|
||||
/* C/C++ specific code */
|
||||
#ifndef __XTOS_ASSEMBLER__
|
||||
|
||||
/* Hardware Layer routine callbacks */
|
||||
typedef XTSTATUS (XTAPI *PHALP_INITIALIZE_CLOCK)(VOID);
|
||||
typedef ULONGLONG (XTAPI *PHALP_QUERY_PERF_COUNTER)(VOID);
|
||||
typedef ULONG (XTAPI *PHALP_QUERY_TIME_DELTA)(VOID);
|
||||
typedef ULONG (XTAPI *PHALP_SET_CLOCK_RATE)(IN ULONG Increment);
|
||||
typedef VOID (XTAPI *PHALP_STALL_EXECUTION)(IN ULONG MicroSeconds);
|
||||
|
||||
/* Generic Address structure */
|
||||
typedef struct _GENERIC_ADDRESS
|
||||
{
|
||||
@@ -498,5 +517,15 @@ typedef struct _SMBIOS3_TABLE_HEADER
|
||||
ULONGLONG TableAddress;
|
||||
} SMBIOS3_TABLE_HEADER, *PSMBIOS3_TABLE_HEADER;
|
||||
|
||||
/* Timer dispatch table */
|
||||
typedef struct _TIMER_ROUTINES
|
||||
{
|
||||
PHALP_INITIALIZE_CLOCK InitializeClock;
|
||||
PHALP_QUERY_PERF_COUNTER QueryPerformanceCounter;
|
||||
PHALP_QUERY_TIME_DELTA QueryTimeDelta;
|
||||
PHALP_SET_CLOCK_RATE SetClockRate;
|
||||
PHALP_STALL_EXECUTION StallExecution;
|
||||
} TIMER_ROUTINES, *PTIMER_ROUTINES;
|
||||
|
||||
#endif /* __XTOS_ASSEMBLER__ */
|
||||
#endif /* __XTDK_HLTYPES_H */
|
||||
|
||||
@@ -315,6 +315,17 @@ typedef enum _PIC_I8259_ICW4_SYSTEM_MODE
|
||||
New8086Mode
|
||||
} PIC_I8259_ICW4_SYSTEM_MODE, *PPIC_I8259_ICW4_SYSTEM_MODE;
|
||||
|
||||
/* Supported hardware timer backends */
|
||||
typedef enum _TIMER_TYPE
|
||||
{
|
||||
TimerNone,
|
||||
TimerAcpiPm,
|
||||
TimerHpet,
|
||||
TimerLapic,
|
||||
TimerPit,
|
||||
TimerTsc
|
||||
} TIMER_TYPE, *PTIMER_TYPE;
|
||||
|
||||
/* APIC Base Register */
|
||||
typedef union _APIC_BASE_REGISTER
|
||||
{
|
||||
@@ -508,7 +519,7 @@ typedef struct _HPET_REGISTERS
|
||||
} Timers[];
|
||||
} HPET_REGISTERS, *PHPET_REGISTERS;
|
||||
|
||||
/* Timer Capabilities */
|
||||
/* Hardware timer capabilities and CPU clock features */
|
||||
typedef struct _TIMER_CAPABILITIES
|
||||
{
|
||||
BOOLEAN Arat;
|
||||
|
||||
@@ -456,6 +456,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
||||
VOLATILE ULONG_PTR TimerRequest;
|
||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||
PROCESSOR_POWER_STATE PowerState;
|
||||
ULONG ProfilingCountdown;
|
||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||
|
||||
/* Processor Block structure definition */
|
||||
|
||||
@@ -37,6 +37,7 @@ typedef enum _PIC_I8259_ICW1_OPERATING_MODE PIC_I8259_ICW1_OPERATING_MODE, *PPIC
|
||||
typedef enum _PIC_I8259_ICW4_BUFFERED_MODE PIC_I8259_ICW4_BUFFERED_MODE, *PPIC_I8259_ICW4_BUFFERED_MODE;
|
||||
typedef enum _PIC_I8259_ICW4_EOI_MODE PIC_I8259_ICW4_EOI_MODE, *PPIC_I8259_ICW4_EOI_MODE;
|
||||
typedef enum _PIC_I8259_ICW4_SYSTEM_MODE PIC_I8259_ICW4_SYSTEM_MODE, *PPIC_I8259_ICW4_SYSTEM_MODE;
|
||||
typedef enum _TIMER_TYPE TIMER_TYPE, *PTIMER_TYPE;
|
||||
typedef enum _TRAMPOLINE_TYPE TRAMPOLINE_TYPE, *PTRAMPOLINE_TYPE;
|
||||
|
||||
/* Architecture-specific structures forward references */
|
||||
|
||||
@@ -338,6 +338,7 @@ typedef struct _STRING32 STRING32, *PSTRING32;
|
||||
typedef struct _STRING64 STRING64, *PSTRING64;
|
||||
typedef struct _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHREAD_INFORMATION_BLOCK;
|
||||
typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS;
|
||||
typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES;
|
||||
typedef struct _UEFI_FIRMWARE_INFORMATION UEFI_FIRMWARE_INFORMATION, *PUEFI_FIRMWARE_INFORMATION;
|
||||
typedef struct _UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;
|
||||
typedef struct _UNICODE_STRING32 UNICODE_STRING32, *PUNICODE_STRING32;
|
||||
@@ -359,7 +360,6 @@ typedef struct _XTBL_MODULE_AUTHORS XTBL_MODULE_AUTHORS, *PXTBL_MODULE_AUTHORS;
|
||||
typedef struct _XTBL_MODULE_DEPS XTBL_MODULE_DEPS, *PXTBL_MODULE_DEPS;
|
||||
typedef struct _XTBL_MODULE_INFO XTBL_MODULE_INFO, *PXTBL_MODULE_INFO;
|
||||
typedef struct _XTBL_PAGE_MAPPING XTBL_PAGE_MAPPING, *PXTBL_PAGE_MAPPING;
|
||||
typedef struct _XTBL_SHELL_COMMAND XTBL_SHELL_COMMAND, *PXTBL_SHELL_COMMAND;
|
||||
typedef struct _XTBL_STATUS XTBL_STATUS, *PXTBL_STATUS;
|
||||
|
||||
/* Unions forward references */
|
||||
|
||||
Reference in New Issue
Block a user