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

Michal Privoznik mprivozn at redhat.com
Wed Nov 12 09:07:30 UTC 2014


On 11.11.2014 16:35, Conrad Meyer wrote:
> ---
>   src/bhyve/bhyve_capabilities.c | 37 +++++++++++++++++++++++++++++++++++++
>   src/bhyve/bhyve_capabilities.h |  6 ++++++
>   2 files changed, 43 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..a559d2a 100644
> --- a/src/bhyve/bhyve_capabilities.h
> +++ b/src/bhyve/bhyve_capabilities.h
> @@ -26,4 +26,10 @@
>
>   virCapsPtr virBhyveCapsBuild(void);
>
> +/* These are bit flags: */
> +enum {
> +    BHYVE_GRUB_CAP_CONSDEV = 0x00000001,
> +};

I think this should be rather typedef enum {...} virBhyveGrubCapsFlags;

> +int virBhyveProbeGrubCaps(unsigned *caps);

And hence s/unsigned/virBhyveGrubCapsFlags/

> +
>   #endif
>

I'm fixing this and pushing. ACK.




More information about the libvir-list mailing list