114 ASSERT(StartupLoc.HighPart == 0);
115 ASSERT((StartupLoc.QuadPart & 0xFFF) == 0);
116 ASSERT((StartupLoc.QuadPart & 0xFFF00FFF) == 0);
148 APIC_DSH DestinationShortHand = IncludeSelf ?
156 DestinationShortHand);
175 ULONG ProcessorIndex;
179 TargetSet &= ActiveProcessors;
182 if (TargetSet == ActiveProcessors)
198 RemainingSet = TargetSet;
199 while (RemainingSet != 0)
204 RemainingSet &= ~SetMember;
240HalpSendSoftwareInterrupt(
276 ULONG ProcessorIndex;
283 RemainingSet = TargetSet;
284 while (RemainingSet != 0)
289 RemainingSet &= ~SetMember;
#define EFLAGS_INTERRUPT_MASK
@ APIC_DSH_AllIncludingSelf
@ APIC_DSH_AllExcludingSelf
FORCEINLINE ULONG ApicRead(APIC_REGISTER Register)
FORCEINLINE VOID ApicWrite(APIC_REGISTER Register, ULONG Value)
FORCEINLINE VOID ApicRequestGlobalInterrupt(_In_ UCHAR DestinationProcessor, _In_ UCHAR Vector, _In_ APIC_MT MessageType, _In_ APIC_TGM TriggerMode, _In_ APIC_DSH DestinationShortHand)
VOID ApicStartApplicationProcessor(_In_ ULONG NTProcessorNumber, _In_ PHYSICAL_ADDRESS StartupLoc)
VOID NTAPI HalpRequestIpi(_In_ KAFFINITY TargetSet)
Requests an IPI interrupt on the specified processors.
VOID NTAPI HalRequestIpiSpecifyVector(_In_ KAFFINITY TargetSet, _In_ UCHAR Vector)
Requests an IPI with a specified vector on the specified processors.
VOID NTAPI HalpBroadcastIpiSpecifyVector(_In_ UCHAR Vector, _In_ BOOLEAN IncludeSelf)
Broadcasts an IPI with a specified vector to all processors.
PPROCESSOR_IDENTITY HalpProcessorIdentity
KAFFINITY HalpActiveProcessors
void __cdecl _disable(void)
void __cdecl _enable(void)
__INTRIN_INLINE uintptr_t __readeflags(void)
#define KeStallExecutionProcessor(MicroSeconds)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
FORCEINLINE KAFFINITY AFFINITY_MASK(ULONG Index)
FORCEINLINE BOOLEAN BitScanForwardAffinity(PULONG Index, KAFFINITY Mask)
UINT64 DestinationShortHand
_Must_inspect_result_ _In_ ULONG Flags