sys: ioq: FspIoqRemoveExpired: add InterruptTime parameter

This commit is contained in:
Bill Zissimopoulos 2016-02-17 17:01:07 -08:00
parent 990955ff61
commit 2c9cd46e4b
3 changed files with 6 additions and 4 deletions

View File

@ -442,9 +442,11 @@ static VOID FspFsvolDeviceExpirationRoutine(PVOID Context)
PDEVICE_OBJECT DeviceObject = Context;
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(DeviceObject);
UINT64 InterruptTime;
KIRQL Irql;
FspIoqRemoveExpired(FsvolDeviceExtension->Ioq);
InterruptTime = KeQueryInterruptTime();
FspIoqRemoveExpired(FsvolDeviceExtension->Ioq, InterruptTime);
KeAcquireSpinLock(&FsvolDeviceExtension->ExpirationLock, &Irql);
FsvolDeviceExtension->ExpirationInProgress = FALSE;

View File

@ -375,7 +375,7 @@ NTSTATUS FspIoqCreate(
VOID FspIoqDelete(FSP_IOQ *Ioq);
VOID FspIoqStop(FSP_IOQ *Ioq);
BOOLEAN FspIoqStopped(FSP_IOQ *Ioq);
VOID FspIoqRemoveExpired(FSP_IOQ *Ioq);
VOID FspIoqRemoveExpired(FSP_IOQ *Ioq, UINT64 InterruptTime);
BOOLEAN FspIoqPostIrpEx(FSP_IOQ *Ioq, PIRP Irp, BOOLEAN BestEffort, NTSTATUS *PResult);
PIRP FspIoqNextPendingIrp(FSP_IOQ *Ioq, PIRP BoundaryIrp, PLARGE_INTEGER Timeout,
PIRP CancellableIrp);

View File

@ -509,11 +509,11 @@ BOOLEAN FspIoqStopped(FSP_IOQ *Ioq)
return Result;
}
VOID FspIoqRemoveExpired(FSP_IOQ *Ioq)
VOID FspIoqRemoveExpired(FSP_IOQ *Ioq, UINT64 InterruptTime)
{
FSP_IOQ_PEEK_CONTEXT PeekContext;
PeekContext.IrpHint = 0;
PeekContext.ExpirationTime = QueryInterruptTimeInSec();
PeekContext.ExpirationTime = ConvertInterruptTimeToSec(InterruptTime);
PIRP Irp;
while (0 != (Irp = IoCsqRemoveNextIrp(&Ioq->PendingIoCsq, &PeekContext)))
Ioq->CompleteCanceledIrp(Irp);