Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
intplt.c
Abstract:
This module implements platform specific code to support the processing of interrupts.
Author:
David N. Cutler (davec) 30-Aug-2000
Environment:
Kernel mode only.
Revision History:
--*/
#include "ki.h"
BOOLEAN KeSynchronizeExecution ( IN PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext )
/*++
Routine Description:
This function synchronizes the execution of the specified routine with the execution of the service routine associated with the specified interrupt object.
Arguments:
Interrupt - Supplies a pointer to an interrupt object.
SynchronizeRoutine - Supplies a pointer to the function whose execution is to be synchronized with the execution of the service routine associated with the specified interrupt object.
SynchronizeContext - Supplies a context pointer which is to be passed to the synchronization function as a parameter.
Return Value:
The value returned by the synchronization routine is returned as the function value.
--*/
{
KIRQL OldIrql; BOOLEAN Status;
//
// Raise IRQL to the interrupt synchronization level and acquire the
// actual interrupt spinlock.
//
OldIrql = KfRaiseIrql(Interrupt->SynchronizeIrql); KiAcquireSpinLock(Interrupt->ActualLock);
//
// Call the specfied synchronization routine.
//
Status = (SynchronizeRoutine)(SynchronizeContext);
//
// Release the spin lock, lower IRQL to its previous value, and return
// the sysnchronization routine status.
//
KiReleaseSpinLock(Interrupt->ActualLock); KeLowerIrql(OldIrql); return Status; }
|