return status;
}
+ULONG
+BalloonGetReferences(
+ IN PXENBUS_BALLOON_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
BalloonTeardown(
IN PXENBUS_BALLOON_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+BalloonGetReferences(
+ IN PXENBUS_BALLOON_CONTEXT Context
+ );
+
extern VOID
BalloonTeardown(
IN PXENBUS_BALLOON_CONTEXT Context
return status;
}
+ULONG
+CacheGetReferences(
+ IN PXENBUS_CACHE_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
CacheTeardown(
IN PXENBUS_CACHE_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+CacheGetReferences(
+ IN PXENBUS_CACHE_CONTEXT Context
+ );
+
extern VOID
CacheTeardown(
IN PXENBUS_CACHE_CONTEXT Context
return status;
}
+ULONG
+DebugGetReferences(
+ IN PXENBUS_DEBUG_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
DebugTeardown(
IN PXENBUS_DEBUG_CONTEXT Context
Trace("<====\n");
}
-
IN ULONG Size
);
+extern ULONG
+DebugGetReferences(
+ IN PXENBUS_DEBUG_CONTEXT Context
+ );
+
extern VOID
DebugTeardown(
IN PXENBUS_DEBUG_CONTEXT Context
return status;
}
+ULONG
+EvtchnGetReferences(
+ IN PXENBUS_EVTCHN_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
EvtchnTeardown(
IN PXENBUS_EVTCHN_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+EvtchnGetReferences(
+ IN PXENBUS_EVTCHN_CONTEXT Context
+ );
+
extern VOID
EvtchnTeardown(
IN PXENBUS_EVTCHN_CONTEXT Context
ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
ASSERT3U(__FdoGetSystemPowerState(Fdo), ==, PowerSystemSleeping3);
+ BUG_ON(SuspendGetReferences(Fdo->SuspendContext) != 0);
+ BUG_ON(SharedInfoGetReferences(Fdo->SharedInfoContext) != 0);
+ BUG_ON(EvtchnGetReferences(Fdo->EvtchnContext) != 0);
+ BUG_ON(DebugGetReferences(Fdo->DebugContext) != 0);
+ BUG_ON(StoreGetReferences(Fdo->StoreContext) != 0);
+ BUG_ON(RangeSetGetReferences(Fdo->RangeSetContext) != 0);
+ BUG_ON(CacheGetReferences(Fdo->CacheContext) != 0);
+ BUG_ON(GnttabGetReferences(Fdo->GnttabContext) != 0);
+ BUG_ON(UnplugGetReferences(Fdo->UnplugContext) != 0);
+ BUG_ON(BalloonGetReferences(Fdo->BalloonContext) != 0);
+
__FdoSetSystemPowerState(Fdo, PowerSystemHibernate);
Trace("<====\n");
return status;
}
+ULONG
+GnttabGetReferences(
+ IN PXENBUS_GNTTAB_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
GnttabTeardown(
IN PXENBUS_GNTTAB_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+GnttabGetReferences(
+ IN PXENBUS_GNTTAB_CONTEXT Context
+ );
+
extern VOID
GnttabTeardown(
IN PXENBUS_GNTTAB_CONTEXT Context
return status;
}
+ULONG
+RangeSetGetReferences(
+ IN PXENBUS_RANGE_SET_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
RangeSetTeardown(
IN PXENBUS_RANGE_SET_CONTEXT Context
Trace("<====\n");
}
-
-
IN ULONG Size
);
+extern ULONG
+RangeSetGetReferences(
+ IN PXENBUS_RANGE_SET_CONTEXT Context
+ );
+
extern VOID
RangeSetTeardown(
IN PXENBUS_RANGE_SET_CONTEXT Context
return status;
}
+ULONG
+SharedInfoGetReferences(
+ IN PXENBUS_SHARED_INFO_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
SharedInfoTeardown(
IN PXENBUS_SHARED_INFO_CONTEXT Context
Trace("<====\n");
}
-
IN ULONG Size
);
+extern ULONG
+SharedInfoGetReferences(
+ IN PXENBUS_SHARED_INFO_CONTEXT Context
+ );
+
extern VOID
SharedInfoTeardown(
IN PXENBUS_SHARED_INFO_CONTEXT Context
IN PXENBUS_STORE_CONTEXT Context
)
{
+ LogPrintf(LOG_LEVEL_INFO,
+ "STORE: DISABLE\n");
+
Context->Enabled = FALSE;
XENBUS_EVTCHN(Close,
Port = (ULONG)Value;
- LogPrintf(LOG_LEVEL_INFO,
- "STORE: EVTCHN %u\n",
- Port);
-
Context->Channel = XENBUS_EVTCHN(Open,
&Context->EvtchnInterface,
XENBUS_EVTCHN_TYPE_FIXED,
Context->Enabled = TRUE;
+ LogPrintf(LOG_LEVEL_INFO,
+ "STORE: ENABLE (%u)\n",
+ Port);
+
// Trigger an initial poll
KeInsertQueueDpc(&Context->Dpc, NULL, NULL);
}
return status;
}
+ULONG
+StoreGetReferences(
+ IN PXENBUS_STORE_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
StoreTeardown(
IN PXENBUS_STORE_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+StoreGetReferences(
+ IN PXENBUS_STORE_CONTEXT Context
+ );
+
extern VOID
StoreTeardown(
IN PXENBUS_STORE_CONTEXT Context
return status;
}
+ULONG
+SuspendGetReferences(
+ IN PXENBUS_SUSPEND_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
SuspendTeardown(
IN PXENBUS_SUSPEND_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+SuspendGetReferences(
+ IN PXENBUS_SUSPEND_CONTEXT Context
+ );
+
extern VOID
SuspendTeardown(
IN PXENBUS_SUSPEND_CONTEXT Context
return status;
}
+ULONG
+UnplugGetReferences(
+ IN PXENBUS_UNPLUG_CONTEXT Context
+ )
+{
+ return Context->References;
+}
+
VOID
UnplugTeardown(
IN PXENBUS_UNPLUG_CONTEXT Context
IN ULONG Size
);
+extern ULONG
+UnplugGetReferences(
+ IN PXENBUS_UNPLUG_CONTEXT Context
+ );
+
extern VOID
UnplugTeardown(
IN PXENBUS_UNPLUG_CONTEXT Context