[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 7/9] Wrap all driver.c globals in a struct
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of Owen Smith > Sent: 22 April 2016 15:16 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith > Subject: [win-pv-devel] [PATCH 7/9] Wrap all driver.c globals in a struct > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > src/xenvbd/driver.c | 64 +++++++++++++++++++++++++++-------------------- > ------ > 1 file changed, 33 insertions(+), 31 deletions(-) > > diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c > index c5352d0..8f0aeb8 100644 > --- a/src/xenvbd/driver.c > +++ b/src/xenvbd/driver.c > @@ -42,8 +42,18 @@ > #include <xencrsh_interface.h> > #include <xenvbd-ntstrsafe.h> > > +typedef struct _XENVBD_DRIVER { > + HANDLE StatusKey; > + PDRIVER_DISPATCH StorPortDispatchPnp; > + PDRIVER_DISPATCH StorPortDispatchPower; > + PDRIVER_UNLOAD StorPortDriverUnload; > + PXENVBD_FDO Fdo; > + KSPIN_LOCK Lock; > +} XENVBD_DRIVER; > + > +static XENVBD_DRIVER Driver; > + > XENVBD_PARAMETERS DriverParameters; > -HANDLE DriverStatusKey; > > #define XENVBD_POOL_TAG 'dbvX' > > @@ -203,18 +213,13 @@ __DriverParseParameterKey( > DriverParameters.PVCDRom ? "PV_CDROM " : ""); > } > > - > //========================================================= > ==================== > -static PDRIVER_DISPATCH StorPortDispatchPnp; > -static PDRIVER_DISPATCH StorPortDispatchPower; > -static PDRIVER_UNLOAD StorPortDriverUnload; > - > NTSTATUS > DriverDispatchPnp( > IN PDEVICE_OBJECT DeviceObject, > IN PIRP Irp > ) > { > - return StorPortDispatchPnp(DeviceObject, Irp); > + return Driver.StorPortDispatchPnp(DeviceObject, Irp); > } > > NTSTATUS > @@ -223,14 +228,9 @@ DriverDispatchPower( > IN PIRP Irp > ) > { > - return StorPortDispatchPower(DeviceObject, Irp); > + return Driver.StorPortDispatchPower(DeviceObject, Irp); > } > > - > //========================================================= > ==================== > -// Fdo Device Extension management > -static PXENVBD_FDO __XenvbdFdo; > -static KSPIN_LOCK __XenvbdLock; > - > VOID > DriverLinkFdo( > __in PXENVBD_FDO Fdo > @@ -238,9 +238,9 @@ DriverLinkFdo( > { > KIRQL Irql; > > - KeAcquireSpinLock(&__XenvbdLock, &Irql); > - __XenvbdFdo = Fdo; > - KeReleaseSpinLock(&__XenvbdLock, Irql); > + KeAcquireSpinLock(&Driver.Lock, &Irql); > + Driver.Fdo = Fdo; > + KeReleaseSpinLock(&Driver.Lock, Irql); > } > > VOID > @@ -252,9 +252,9 @@ DriverUnlinkFdo( > > UNREFERENCED_PARAMETER(Fdo); > > - KeAcquireSpinLock(&__XenvbdLock, &Irql); > - __XenvbdFdo = NULL; > - KeReleaseSpinLock(&__XenvbdLock, Irql); > + KeAcquireSpinLock(&Driver.Lock, &Irql); > + Driver.Fdo = NULL; > + KeReleaseSpinLock(&Driver.Lock, Irql); > } > > static FORCEINLINE BOOLEAN > @@ -266,15 +266,15 @@ __DriverGetFdo( > KIRQL Irql; > BOOLEAN IsFdo = FALSE; > > - KeAcquireSpinLock(&__XenvbdLock, &Irql); > - *Fdo = __XenvbdFdo; > + KeAcquireSpinLock(&Driver.Lock, &Irql); > + *Fdo = Driver.Fdo; > if (*Fdo) { > FdoReference(*Fdo); > if (FdoGetDeviceObject(*Fdo) == DeviceObject) { > IsFdo = TRUE; > } > } > - KeReleaseSpinLock(&__XenvbdLock, Irql); > + KeReleaseSpinLock(&Driver.Lock, Irql); > > return IsFdo; > } > @@ -306,7 +306,7 @@ DriverNotifyInstaller( > > RtlInitUnicodeString(&Unicode, L"NeedReboot"); > > - status = ZwSetValueKey(DriverStatusKey, > + status = ZwSetValueKey(Driver.StatusKey, > &Unicode, > Partial->TitleIndex, > Partial->Type, > @@ -571,9 +571,11 @@ DriverUnload( > Verbose("%s (%s)\n", > MAJOR_VERSION_STR "." MINOR_VERSION_STR "." > MICRO_VERSION_STR "." BUILD_NUMBER_STR, > DAY_STR "/" MONTH_STR "/" YEAR_STR); > - StorPortDriverUnload(_DriverObject); > + > + Driver.StorPortDriverUnload(_DriverObject); > BufferTerminate(); > - ZwClose(DriverStatusKey); > + ZwClose(Driver.StatusKey); > + > Trace("<=== (Irql=%d)\n", KeGetCurrentIrql()); > } > > @@ -623,7 +625,7 @@ DriverEntry( > ServiceKey, > NULL); > > - Status = ZwCreateKey(&DriverStatusKey, > + Status = ZwCreateKey(&Driver.StatusKey, > KEY_ALL_ACCESS, > &Attributes, > 0, > @@ -637,8 +639,8 @@ DriverEntry( > if (!NT_SUCCESS(Status)) > goto done; > > - KeInitializeSpinLock(&__XenvbdLock); > - __XenvbdFdo = NULL; > + KeInitializeSpinLock(&Driver.Lock); > + Driver.Fdo = NULL; > BufferInitialize(); > __DriverParseParameterKey(); > > @@ -668,9 +670,9 @@ DriverEntry( > > Status = StorPortInitialize(_DriverObject, RegistryPath, &InitData, > NULL); > if (NT_SUCCESS(Status)) { > - StorPortDispatchPnp = _DriverObject->MajorFunction[IRP_MJ_PNP]; > - StorPortDispatchPower = _DriverObject- > >MajorFunction[IRP_MJ_POWER]; > - StorPortDriverUnload = _DriverObject->DriverUnload; > + Driver.StorPortDispatchPnp = _DriverObject- > >MajorFunction[IRP_MJ_PNP]; > + Driver.StorPortDispatchPower = _DriverObject- > >MajorFunction[IRP_MJ_POWER]; > + Driver.StorPortDriverUnload = _DriverObject->DriverUnload; > > _DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; > _DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; > -- > 1.9.4.msysgit.1 > > > _______________________________________________ > win-pv-devel mailing list > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |