ReactOS 0.4.17-dev-1321-g5c122a9
ke.h File Reference

Go to the source code of this file.

Classes

struct  _CONTEXT
 
struct  _KPCR
 

Macros

#define PASSIVE_LEVEL   0
 
#define LOW_LEVEL   0
 
#define APC_LEVEL   1
 
#define DISPATCH_LEVEL   2
 
#define CLOCK_LEVEL   13
 
#define IPI_LEVEL   14
 
#define DRS_LEVEL   14
 
#define POWER_LEVEL   14
 
#define PROFILE_LEVEL   15
 
#define HIGH_LEVEL   15
 
#define KI_USER_SHARED_DATA   0xFFFFF78000000000ULL
 
#define SharedUserData   ((KUSER_SHARED_DATA * const)KI_USER_SHARED_DATA)
 
#define SharedTickCount   (KI_USER_SHARED_DATA + 0x320)
 
#define PAGE_SIZE   0x1000
 
#define PAGE_SHIFT   12L
 
#define PAUSE_PROCESSOR   YieldProcessor();
 
#define KERNEL_STACK_SIZE   12288
 
#define KERNEL_LARGE_STACK_SIZE   61440
 
#define KERNEL_LARGE_STACK_COMMIT   KERNEL_STACK_SIZE
 
#define EXCEPTION_READ_FAULT   0
 
#define EXCEPTION_WRITE_FAULT   1
 
#define EXCEPTION_EXECUTE_FAULT   8
 
#define KeQueryTickCount(CurrentCount)    *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount
 
#define KeMemoryBarrierWithoutFence()   _ReadWriteBarrier()
 
#define KeLowerIrql(a)   KfLowerIrql(a)
 
#define KeRaiseIrql(a, b)   *(b) = KfRaiseIrql(a)
 
#define DbgRaiseAssertionFailure()   __break(0xf001)
 
#define ARM64_MAX_BREAKPOINTS   8
 
#define ARM64_MAX_WATCHPOINTS   2
 
#define CONTEXT_ARM64   0x400000L
 
#define CONTEXT_CONTROL   (CONTEXT_ARM64 | 0x00000001L)
 
#define CONTEXT_INTEGER   (CONTEXT_ARM64 | 0x00000002L)
 
#define CONTEXT_FLOATING_POINT   (CONTEXT_ARM64 | 0x00000004L)
 
#define CONTEXT_DEBUG_REGISTERS   (CONTEXT_ARM64 | 0x00000008L)
 
#define CONTEXT_X18   (CONTEXT_ARM64 | 0x00000010L)
 
#define CONTEXT_FULL   (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
 
#define PCR_MINOR_VERSION   1
 
#define PCR_MAJOR_VERSION   1
 

Typedefs

typedef NEON128 NEON128
 
typedef NEON128 * PNEON128
 
typedef struct _CONTEXT CONTEXT
 
typedef struct _CONTEXT * PCONTEXT
 
typedef struct _KPCR KPCR
 
typedef struct _KPCR * PKPCR
 

Functions

 $if (_WDMDDK_) FORCEINLINE VOID KeMemoryBarrier(VOID)
 
 _IRQL_requires_max_ (HIGH_LEVEL) _IRQL_saves_ NTHALAPI KIRQL NTAPI KeGetCurrentIrql(VOID)
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) _IRQL_saves_ _IRQL_raises_(DISPATCH_LEVEL) FORCEINLINE KIRQL KeRaiseIrqlToDpcLevel(VOID)
 
FORCEINLINE KIRQL KeRaiseIrqlToSynchLevel (VOID)
 
NTSYSAPI PKTHREAD NTAPI KeGetCurrentThread (VOID)
 
FORCEINLINE ULONG KeGetCurrentProcessorIndex (VOID)
 
NTKERNELAPI VOID NTAPI KeFlushIoBuffers (_In_ PMDL Mdl, _In_ BOOLEAN ReadOperation, _In_ BOOLEAN DmaOperation)
 
 $endif (_WDMDDK_) $if(_NTDDK_) typedef union NEON128
 
FORCEINLINE PKPCR KeGetPcr (VOID)
 
FORCEINLINE ULONG KeGetCurrentProcessorNumber (VOID)
 

Macro Definition Documentation

◆ APC_LEVEL

#define APC_LEVEL   1

◆ ARM64_MAX_BREAKPOINTS

#define ARM64_MAX_BREAKPOINTS   8

◆ ARM64_MAX_WATCHPOINTS

#define ARM64_MAX_WATCHPOINTS   2

◆ CLOCK_LEVEL

#define CLOCK_LEVEL   13

◆ CONTEXT_ARM64

#define CONTEXT_ARM64   0x400000L

◆ CONTEXT_CONTROL

#define CONTEXT_CONTROL   (CONTEXT_ARM64 | 0x00000001L)

◆ CONTEXT_DEBUG_REGISTERS

#define CONTEXT_DEBUG_REGISTERS   (CONTEXT_ARM64 | 0x00000008L)

◆ CONTEXT_FLOATING_POINT

#define CONTEXT_FLOATING_POINT   (CONTEXT_ARM64 | 0x00000004L)

◆ CONTEXT_FULL

◆ CONTEXT_INTEGER

#define CONTEXT_INTEGER   (CONTEXT_ARM64 | 0x00000002L)

◆ CONTEXT_X18

#define CONTEXT_X18   (CONTEXT_ARM64 | 0x00000010L)

◆ DbgRaiseAssertionFailure

#define DbgRaiseAssertionFailure ( )    __break(0xf001)

Definition at line 120 of file ke.h.

◆ DISPATCH_LEVEL

#define DISPATCH_LEVEL   2

◆ DRS_LEVEL

#define DRS_LEVEL   14

◆ EXCEPTION_EXECUTE_FAULT

#define EXCEPTION_EXECUTE_FAULT   8

◆ EXCEPTION_READ_FAULT

#define EXCEPTION_READ_FAULT   0

◆ EXCEPTION_WRITE_FAULT

#define EXCEPTION_WRITE_FAULT   1

◆ HIGH_LEVEL

#define HIGH_LEVEL   15

◆ IPI_LEVEL

#define IPI_LEVEL   14

◆ KeLowerIrql

#define KeLowerIrql (   a)    KfLowerIrql(a)

Definition at line 63 of file ke.h.

◆ KeMemoryBarrierWithoutFence

#define KeMemoryBarrierWithoutFence ( )    _ReadWriteBarrier()

Definition at line 47 of file ke.h.

◆ KeQueryTickCount

#define KeQueryTickCount (   CurrentCount)     *(ULONG64*)(CurrentCount) = *(volatile ULONG64*)SharedTickCount

◆ KeRaiseIrql

#define KeRaiseIrql (   a,
  b 
)    *(b) = KfRaiseIrql(a)

Definition at line 73 of file ke.h.

◆ KERNEL_LARGE_STACK_COMMIT

#define KERNEL_LARGE_STACK_COMMIT   KERNEL_STACK_SIZE

◆ KERNEL_LARGE_STACK_SIZE

#define KERNEL_LARGE_STACK_SIZE   61440

◆ KERNEL_STACK_SIZE

#define KERNEL_STACK_SIZE   12288

◆ KI_USER_SHARED_DATA

#define KI_USER_SHARED_DATA   0xFFFFF78000000000ULL

◆ LOW_LEVEL

#define LOW_LEVEL   0

◆ PAGE_SHIFT

#define PAGE_SHIFT   12L

◆ PAGE_SIZE

#define PAGE_SIZE   0x1000

◆ PASSIVE_LEVEL

#define PASSIVE_LEVEL   0

◆ PAUSE_PROCESSOR

#define PAUSE_PROCESSOR   YieldProcessor();

◆ PCR_MAJOR_VERSION

#define PCR_MAJOR_VERSION   1

Definition at line 221 of file ke.h.

◆ PCR_MINOR_VERSION

#define PCR_MINOR_VERSION   1

Definition at line 220 of file ke.h.

◆ POWER_LEVEL

#define POWER_LEVEL   14

◆ PROFILE_LEVEL

#define PROFILE_LEVEL   15

◆ SharedTickCount

#define SharedTickCount   (KI_USER_SHARED_DATA + 0x320)

◆ SharedUserData

Typedef Documentation

◆ CONTEXT

◆ KPCR

typedef struct _KPCR KPCR

◆ NEON128

Definition at line 146 of file ke.h.

◆ PCONTEXT

◆ PKPCR

typedef struct _KPCR * PKPCR

◆ PNEON128

Definition at line 146 of file ke.h.

Function Documentation

◆ $endif()

$endif ( _WDMDDK_  )

Definition at line 122 of file ke.h.

136 {
137 struct {
141 double D[2];
142 float S[4];
143 USHORT H[8];
144 UCHAR B[16];
145} NEON128, *PNEON128;
#define D(d)
Definition: builtin.c:4557
Definition: ehthrow.cxx:54
#define H
#define DUMMYSTRUCTNAME
Definition: pecoff.h:117
unsigned short USHORT
Definition: pedump.c:61
NEON128
Definition: ke.h:229
* PNEON128
Definition: ke.h:229
@ High
Definition: strmini.h:378
@ Low
Definition: strmini.h:380
Definition: movable.cpp:9
unsigned char UCHAR
Definition: typedefs.h:53
int64_t LONGLONG
Definition: typedefs.h:68
uint64_t ULONGLONG
Definition: typedefs.h:67

◆ $if()

$if ( _WDMDDK_  )

Kernel definitions for ARM64

Definition at line 1 of file ke.h.

42{
45}
#define _ReadWriteBarrier()
Definition: intrin_arm.h:36
#define MemoryBarrier()
Definition: ke.h:39

◆ _IRQL_requires_max_() [1/2]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION; the idle machine owns the IRP afterwards.

Records hub over current in the hub hardware key, once per devnode.

First selective suspend of the device; the registry write runs in a work item.

"USB device not recognized" popup for a port.

A hub was attached beyond the allowed tier depth.

The selected configuration draws more power than the port can give.

The controller ran out of bandwidth for the device; fired by the out of bandwidth timer.

Priority 1 to 3, forwarded to the HCD's EvtEndpointSetCharacteristic.

Tells apart devices that claim the same VID, PID and serial number.

Definition at line 75 of file ke.h.

82{
84}
KIRQL FASTCALL KfRaiseIrql(IN KIRQL NewIrql)
Definition: pic.c:187
#define DISPATCH_LEVEL

◆ _IRQL_requires_max_() [2/2]

_IRQL_requires_max_ ( HIGH_LEVEL  )

Definition at line 134 of file wdfdpc.h.

151{
152 return ((PFN_WDFDPCENQUEUE) WdfFunctions[WdfDpcEnqueueTableIndex])(WdfDriverGlobals, Dpc);
153}
Globals WdfDriverGlobals
Definition: classlib.cpp:114
#define WdfFunctions
Definition: wdf.h:66
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
Definition: wdfdpc.h:112
@ WdfDpcEnqueueTableIndex
Definition: wdffuncenum.h:137

◆ KeFlushIoBuffers()

NTKERNELAPI VOID NTAPI KeFlushIoBuffers ( _In_ PMDL  Mdl,
_In_ BOOLEAN  ReadOperation,
_In_ BOOLEAN  DmaOperation 
)

Definition at line 176 of file cpu.c.

180{
182}
NTSYSAPI void WINAPI DbgBreakPoint(void)

◆ KeGetCurrentProcessorIndex()

FORCEINLINE ULONG KeGetCurrentProcessorIndex ( VOID  )

Definition at line 106 of file ke.h.

107{
108 return __readx18dword(0x9a4);
109}
__INTRIN_INLINE unsigned long __readx18dword(unsigned long offset)
Definition: intrin_arm64.h:800

◆ KeGetCurrentProcessorNumber()

FORCEINLINE ULONG KeGetCurrentProcessorNumber ( VOID  )

Definition at line 305 of file ke.h.

306{
307 return __readx18dword(0x9a4);
308}

◆ KeGetCurrentThread()

NTSYSAPI PKTHREAD NTAPI KeGetCurrentThread ( VOID  )

Definition at line 414 of file ke.h.

415{
416 /* Return the current thread */
417 return ((PKIPCR)KeGetPcr())->PrcbData.CurrentThread;
418}
#define KeGetPcr()
Definition: ketypes.h:81

◆ KeGetPcr()

FORCEINLINE PKPCR KeGetPcr ( VOID  )

Definition at line 297 of file ke.h.

298{
299 return (PKPCR)__getReg(18);
300}
#define __getReg(reg)
Definition: intrin_arm64.h:753
Definition: ke.h:294

◆ KeRaiseIrqlToSynchLevel()

FORCEINLINE KIRQL KeRaiseIrqlToSynchLevel ( VOID  )

Definition at line 88 of file ke.h.

89{
90#ifdef CONFIG_SMP
91 return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2
92#else
93 return KfRaiseIrql(2); // SYNCH_LEVEL = DISPATCH_LEVEL
94#endif
95}