]> xenbits.xensource.com Git - people/pauldu/xenbus.git/commitdiff
Make XENBUS_CONSOLE interface available to other drivers
authorPaul Durrant <paul.durrant@citrix.com>
Wed, 26 Apr 2017 10:47:53 +0000 (11:47 +0100)
committerPaul Durrant <paul.durrant@citrix.com>
Fri, 28 Apr 2017 15:53:19 +0000 (16:53 +0100)
This patch adds the interface to the set of that may be queried via the
PDO.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
include/revision.h
src/coinst/coinst.c
src/xenbus/fdo.h
src/xenbus/pdo.c

index 5e39e206cd6ab000c1637ae3e43f6364c6f089a8..2aa7dc57a7d70647812335121a5f389a6475db0b 100644 (file)
 // R  - XENBUS_RANGE_SET_INTERFACE
 // C  - XENBUS_CACHE_INTERFACE
 // G  - XENBUS_GNTTAB_INTERFACE
+// U  - XENBUS_UNPLUG_INTERFACE
+// CO - XENBUS_CONSOLE_INTERFACE
 // EM - XENFILT_EMULATED_INTERFACE
 
-//                    REVISION   S  SI   E   D  ST   R   C   G   U  EM
-#define DEFINE_REVISION_TABLE                                               \
-    DEFINE_REVISION(0x08000009,  1,  2,  4,  1,  1,  1,  1,  1,  1,  1),    \
-    DEFINE_REVISION(0x0800000A,  1,  2,  5,  1,  1,  1,  1,  1,  1,  1),    \
-    DEFINE_REVISION(0x0800000B,  1,  2,  5,  1,  2,  1,  1,  2,  1,  1),    \
-    DEFINE_REVISION(0x09000000,  1,  2,  5,  1,  2,  1,  1,  2,  1,  1),    \
-    DEFINE_REVISION(0x09000001,  1,  2,  6,  1,  2,  1,  1,  2,  1,  1)
+//                    REVISION   S  SI   E   D  ST   R   C   G   U  CO  EM
+#define DEFINE_REVISION_TABLE                                                \
+    DEFINE_REVISION(0x08000009,  1,  2,  4,  1,  1,  1,  1,  1,  1,  0,  1), \
+    DEFINE_REVISION(0x0800000A,  1,  2,  5,  1,  1,  1,  1,  1,  1,  0,  1), \
+    DEFINE_REVISION(0x0800000B,  1,  2,  5,  1,  2,  1,  1,  2,  1,  0,  1), \
+    DEFINE_REVISION(0x09000000,  1,  2,  5,  1,  2,  1,  1,  2,  1,  0,  1), \
+    DEFINE_REVISION(0x09000001,  1,  2,  6,  1,  2,  1,  1,  2,  1,  1,  1)
 
 #endif  // _REVISION_H
index 89d52d0adaf6efc605ea19bef71f5f0defbf8361..f19d108b7352f62cdf28466885f4f4562759cc69 100644 (file)
@@ -981,7 +981,7 @@ fail1:
     return FALSE;
 }
 
-#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _EM) \
+#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _CO, _EM) \
     (_N)
 
 static DWORD    DeviceRevision[] = {
index 9e9b5996a986530f6e2327e7c23f5f58c9985ed8..90f81ace0698ab670077e33ce4887a26885678af 100644 (file)
@@ -259,6 +259,13 @@ FdoGetUnplugContext(
     IN  PXENBUS_FDO Fdo
     );
 
+#include "console.h"
+
+extern PXENBUS_CONSOLE_CONTEXT
+FdoGetConsoleContext(
+    IN  PXENBUS_FDO Fdo
+    );
+
 extern NTSTATUS
 FdoDispatch(
     IN  PXENBUS_FDO Fdo,
index 48ba84e41d138e4ef874baf6b2c516adbac0ba8b..efd29dcf57823c1aafdd29629206a075376a40ee 100644 (file)
@@ -363,11 +363,12 @@ typedef struct _XENBUS_PDO_REVISION {
     ULONG   CacheInterfaceVersion;
     ULONG   GnttabInterfaceVersion;
     ULONG   UnplugInterfaceVersion;
+    ULONG   ConsoleInterfaceVersion;
     ULONG   EmulatedInterfaceVersion;
 } XENBUS_PDO_REVISION, *PXENBUS_PDO_REVISION;
 
-#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _EM) \
-    { (_N), (_S), (_SI), (_E), (_D), (_ST), (_R), (_C), (_G), (_U), (_EM) }
+#define DEFINE_REVISION(_N, _S, _SI, _E, _D, _ST, _R, _C, _G, _U, _CO, _EM) \
+    { (_N), (_S), (_SI), (_E), (_D), (_ST), (_R), (_C), (_G), (_U), (_CO), (_EM) }
 
 static XENBUS_PDO_REVISION PdoRevision[] = {
     DEFINE_REVISION_TABLE
@@ -432,6 +433,13 @@ PdoDumpRevisions(
         ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
                      Revision->UnplugInterfaceVersion == XENBUS_UNPLUG_INTERFACE_VERSION_MAX));
 
+        ASSERT(IMPLY(Revision->ConsoleInterfaceVersion != 0,
+                     Revision->ConsoleInterfaceVersion >= XENBUS_CONSOLE_INTERFACE_VERSION_MIN));
+        ASSERT(IMPLY(Revision->ConsoleInterfaceVersion != 0,
+                     Revision->ConsoleInterfaceVersion <= XENBUS_CONSOLE_INTERFACE_VERSION_MAX));
+        ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+                     Revision->ConsoleInterfaceVersion == XENBUS_CONSOLE_INTERFACE_VERSION_MAX));
+
         ASSERT3U(Revision->EmulatedInterfaceVersion, >=, XENFILT_EMULATED_INTERFACE_VERSION_MIN);
         ASSERT3U(Revision->EmulatedInterfaceVersion, <=, XENFILT_EMULATED_INTERFACE_VERSION_MAX);
         ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
@@ -447,6 +455,7 @@ PdoDumpRevisions(
              "CACHE v%u "
              "GNTTAB v%u "
              "UNPLUG v%u "
+             "CONSOLE v%u "
              "EMULATED v%u\n",
              Revision->Number,
              Revision->SuspendInterfaceVersion,
@@ -458,6 +467,7 @@ PdoDumpRevisions(
              Revision->CacheInterfaceVersion,
              Revision->GnttabInterfaceVersion,
              Revision->UnplugInterfaceVersion,
+             Revision->ConsoleInterfaceVersion,
              Revision->EmulatedInterfaceVersion);
     }
 }
@@ -1023,6 +1033,7 @@ DEFINE_PDO_QUERY_INTERFACE(RangeSet)
 DEFINE_PDO_QUERY_INTERFACE(Cache)
 DEFINE_PDO_QUERY_INTERFACE(Gnttab)
 DEFINE_PDO_QUERY_INTERFACE(Unplug)
+DEFINE_PDO_QUERY_INTERFACE(Console)
 
 struct _INTERFACE_ENTRY {
     const GUID  *Guid;
@@ -1041,6 +1052,7 @@ static struct _INTERFACE_ENTRY PdoInterfaceTable[] = {
     { &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", PdoQueryCacheInterface },
     { &GUID_XENBUS_GNTTAB_INTERFACE, "GNTTAB_INTERFACE", PdoQueryGnttabInterface },
     { &GUID_XENBUS_UNPLUG_INTERFACE, "UNPLUG_INTERFACE", PdoQueryUnplugInterface },
+    { &GUID_XENBUS_CONSOLE_INTERFACE, "CONSOLE_INTERFACE", PdoQueryConsoleInterface },
     { &GUID_XENFILT_EMULATED_INTERFACE, "EMULATED_INTERFACE", PdoDelegateIrp },
     { NULL, NULL, NULL }
 };