diff options
author | Christoph Egger <Christoph.Egger@amd.com> | 2010-08-16 17:04:31 +0100 |
---|---|---|
committer | Christoph Egger <Christoph.Egger@amd.com> | 2010-08-16 17:04:31 +0100 |
commit | 6b9f18cdce05d81336a3dac2b66e090b029170c8 (patch) | |
tree | ef91ca9be5acd1093abc8f0def579557ceff11d2 /tools/libxl/libxl_blktap2.c | |
parent | 8eb8ac72924e430b89497995be61ccb2a2402919 (diff) | |
download | xen-6b9f18cdce05d81336a3dac2b66e090b029170c8.tar.gz xen-6b9f18cdce05d81336a3dac2b66e090b029170c8.tar.bz2 xen-6b9f18cdce05d81336a3dac2b66e090b029170c8.zip |
Make blktap support optional.
Enable it by default on Linux, disable it on non-Linux.
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_blktap2.c')
-rw-r--r-- | tools/libxl/libxl_blktap2.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/libxl/libxl_blktap2.c b/tools/libxl/libxl_blktap2.c new file mode 100644 index 0000000000..17c18fbfdf --- /dev/null +++ b/tools/libxl/libxl_blktap2.c @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2010 Advanced Micro Devices + * Author Christoph Egger <Christoph.Egger@amd.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; version 2.1 only. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + */ + +#include "libxl.h" +#include "libxl_osdeps.h" +#include "libxl_internal.h" + +#include "tap-ctl.h" + +int libxl_blktap_enabled(libxl_gc *gc) +{ + const char *msg; + return !tap_ctl_check(&msg); +} + +const char *libxl_blktap_devpath(libxl_gc *gc, + const char *disk, + libxl_disk_phystype phystype) +{ + const char *type; + char *params, *devname; + int minor, err; + + type = device_disk_string_of_phystype(phystype); + minor = tap_ctl_find_minor(type, disk); + if (minor >= 0) { + devname = libxl_sprintf(gc, "/dev/xen/blktap-2/tapdev%d", minor); + if (devname) + return devname; + } + + params = libxl_sprintf(gc, "%s:%s", type, disk); + err = tap_ctl_create(params, &devname); + if (!err) { + libxl_ptr_add(gc, devname); + return devname; + } + + return NULL; +} |