[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCHv8 5/7] bhyve: Probe grub-bhyve for --cons-dev capability



On 08.11.2014 17:48, Conrad Meyer wrote:
---
  src/bhyve/bhyve_capabilities.c | 37 +++++++++++++++++++++++++++++++++++++
  src/bhyve/bhyve_capabilities.h |  3 +++
  2 files changed, 40 insertions(+)

diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c
index 132ce91..6e9a943 100644
--- a/src/bhyve/bhyve_capabilities.c
+++ b/src/bhyve/bhyve_capabilities.c
@@ -23,6 +23,7 @@
  #include <sys/utsname.h>

  #include "viralloc.h"
+#include "virfile.h"
  #include "virlog.h"
  #include "virstring.h"
  #include "cpu/cpu.h"
@@ -104,3 +105,39 @@ virBhyveCapsBuild(void)
      virObjectUnref(caps);
      return NULL;
  }
+
+int
+virBhyveProbeGrubCaps(unsigned *caps)
+{
+    char *binary, *help;
+    virCommandPtr cmd;
+    int ret, exit;
+
+    ret = 0;
+    *caps = 0;
+    cmd = NULL;
+    help = NULL;
+
+    binary = virFindFileInPath("grub-bhyve");
+    if (binary == NULL)
+        goto out;
+    if (!virFileIsExecutable(binary))
+        goto out;
+
+    cmd = virCommandNew(binary);
+    virCommandAddArg(cmd, "--help");
+    virCommandSetOutputBuffer(cmd, &help);
+    if (virCommandRun(cmd, &exit) < 0) {
+        ret = -1;
+        goto out;
+    }
+
+    if (strstr(help, "--cons-dev") != NULL)
+        *caps |= BHYVE_GRUB_CAP_CONSDEV;
+
+ out:
+    VIR_FREE(help);
+    virCommandFree(cmd);
+    VIR_FREE(binary);
+    return ret;
+}
diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h
index c52e0d0..f4ebd90 100644
--- a/src/bhyve/bhyve_capabilities.h
+++ b/src/bhyve/bhyve_capabilities.h
@@ -26,4 +26,7 @@

  virCapsPtr virBhyveCapsBuild(void);

+# define BHYVE_GRUB_CAP_CONSDEV 0x00000001


This should be rather an enum.

+int virBhyveProbeGrubCaps(unsigned *caps);
+
  #endif


Michal


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]