WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Added missing PBD-related C bindings.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Added missing PBD-related C bindings.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 30 Jan 2007 06:01:19 -0800
Delivery-date: Tue, 30 Jan 2007 06:05:08 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Date 1170076700 0
# Node ID 66c2a408586359f5a2c4ec9d99ce0c74ad97fb28
# Parent  049d9022653c9668f93bc8071d0abd8ddff19ea0
Added missing PBD-related C bindings.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>
---
 tools/libxen/include/xen_pbd.h      |  216 ++++++++++++++++++++++++++++++++++
 tools/libxen/include/xen_pbd_decl.h |   30 ++++
 tools/libxen/src/xen_pbd.c          |  228 ++++++++++++++++++++++++++++++++++++
 3 files changed, 474 insertions(+)

diff -r 049d9022653c -r 66c2a4085863 tools/libxen/include/xen_pbd.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxen/include/xen_pbd.h    Mon Jan 29 13:18:20 2007 +0000
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2006, XenSource Inc.
+ *
+ * This library 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; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+ */
+
+#ifndef XEN_PBD_H
+#define XEN_PBD_H
+
+#include "xen_common.h"
+#include "xen_host_decl.h"
+#include "xen_pbd_decl.h"
+#include "xen_sr_decl.h"
+#include "xen_string_string_map.h"
+
+
+/*
+ * The PBD class.
+ * 
+ * The physical block devices through which hosts access SRs.
+ */
+
+
+/**
+ * Free the given xen_pbd.  The given handle must have been allocated
+ * by this library.
+ */
+extern void
+xen_pbd_free(xen_pbd pbd);
+
+
+typedef struct xen_pbd_set
+{
+    size_t size;
+    xen_pbd *contents[];
+} xen_pbd_set;
+
+/**
+ * Allocate a xen_pbd_set of the given size.
+ */
+extern xen_pbd_set *
+xen_pbd_set_alloc(size_t size);
+
+/**
+ * Free the given xen_pbd_set.  The given set must have been allocated
+ * by this library.
+ */
+extern void
+xen_pbd_set_free(xen_pbd_set *set);
+
+
+typedef struct xen_pbd_record
+{
+    xen_pbd handle;
+    char *uuid;
+    struct xen_host_record_opt *host;
+    struct xen_sr_record_opt *sr;
+    xen_string_string_map *device_config;
+    bool currently_attached;
+} xen_pbd_record;
+
+/**
+ * Allocate a xen_pbd_record.
+ */
+extern xen_pbd_record *
+xen_pbd_record_alloc(void);
+
+/**
+ * Free the given xen_pbd_record, and all referenced values.  The given
+ * record must have been allocated by this library.
+ */
+extern void
+xen_pbd_record_free(xen_pbd_record *record);
+
+
+typedef struct xen_pbd_record_opt
+{
+    bool is_record;
+    union
+    {
+        xen_pbd handle;
+        xen_pbd_record *record;
+    } u;
+} xen_pbd_record_opt;
+
+/**
+ * Allocate a xen_pbd_record_opt.
+ */
+extern xen_pbd_record_opt *
+xen_pbd_record_opt_alloc(void);
+
+/**
+ * Free the given xen_pbd_record_opt, and all referenced values.  The
+ * given record_opt must have been allocated by this library.
+ */
+extern void
+xen_pbd_record_opt_free(xen_pbd_record_opt *record_opt);
+
+
+typedef struct xen_pbd_record_set
+{
+    size_t size;
+    xen_pbd_record *contents[];
+} xen_pbd_record_set;
+
+/**
+ * Allocate a xen_pbd_record_set of the given size.
+ */
+extern xen_pbd_record_set *
+xen_pbd_record_set_alloc(size_t size);
+
+/**
+ * Free the given xen_pbd_record_set, and all referenced values.  The
+ * given set must have been allocated by this library.
+ */
+extern void
+xen_pbd_record_set_free(xen_pbd_record_set *set);
+
+
+
+typedef struct xen_pbd_record_opt_set
+{
+    size_t size;
+    xen_pbd_record_opt *contents[];
+} xen_pbd_record_opt_set;
+
+/**
+ * Allocate a xen_pbd_record_opt_set of the given size.
+ */
+extern xen_pbd_record_opt_set *
+xen_pbd_record_opt_set_alloc(size_t size);
+
+/**
+ * Free the given xen_pbd_record_opt_set, and all referenced values. 
+ * The given set must have been allocated by this library.
+ */
+extern void
+xen_pbd_record_opt_set_free(xen_pbd_record_opt_set *set);
+
+
+/**
+ * Get a record containing the current state of the given PBD.
+ */
+extern bool
+xen_pbd_get_record(xen_session *session, xen_pbd_record **result, xen_pbd pbd);
+
+
+/**
+ * Get a reference to the PBD instance with the specified UUID.
+ */
+extern bool
+xen_pbd_get_by_uuid(xen_session *session, xen_pbd *result, char *uuid);
+
+
+/**
+ * Create a new PBD instance, and return its handle.
+ */
+extern bool
+xen_pbd_create(xen_session *session, xen_pbd *result, xen_pbd_record *record);
+
+
+/**
+ * Destroy the specified PBD instance.
+ */
+extern bool
+xen_pbd_destroy(xen_session *session, xen_pbd pbd);
+
+
+/**
+ * Get the uuid field of the given PBD.
+ */
+extern bool
+xen_pbd_get_uuid(xen_session *session, char **result, xen_pbd pbd);
+
+
+/**
+ * Get the host field of the given PBD.
+ */
+extern bool
+xen_pbd_get_host(xen_session *session, xen_host *result, xen_pbd pbd);
+
+
+/**
+ * Get the SR field of the given PBD.
+ */
+extern bool
+xen_pbd_get_sr(xen_session *session, xen_sr *result, xen_pbd pbd);
+
+
+/**
+ * Get the device_config field of the given PBD.
+ */
+extern bool
+xen_pbd_get_device_config(xen_session *session, xen_string_string_map 
**result, xen_pbd pbd);
+
+
+/**
+ * Get the currently_attached field of the given PBD.
+ */
+extern bool
+xen_pbd_get_currently_attached(xen_session *session, bool *result, xen_pbd 
pbd);
+
+
+#endif
diff -r 049d9022653c -r 66c2a4085863 tools/libxen/include/xen_pbd_decl.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxen/include/xen_pbd_decl.h       Mon Jan 29 13:18:20 2007 +0000
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2006, XenSource Inc.
+ *
+ * This library 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; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+ */
+
+#ifndef XEN_PBD_DECL_H
+#define XEN_PBD_DECL_H
+
+typedef void *xen_pbd;
+
+struct xen_pbd_set;
+struct xen_pbd_record;
+struct xen_pbd_record_set;
+struct xen_pbd_record_opt;
+struct xen_pbd_record_opt_set;
+
+#endif
diff -r 049d9022653c -r 66c2a4085863 tools/libxen/src/xen_pbd.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxen/src/xen_pbd.c        Mon Jan 29 13:18:20 2007 +0000
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2006, XenSource Inc.
+ *
+ * This library 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; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+ */
+
+
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "xen_common.h"
+#include "xen_host.h"
+#include "xen_internal.h"
+#include "xen_pbd.h"
+#include "xen_sr.h"
+#include "xen_string_string_map.h"
+
+
+XEN_FREE(xen_pbd)
+XEN_SET_ALLOC_FREE(xen_pbd)
+XEN_ALLOC(xen_pbd_record)
+XEN_SET_ALLOC_FREE(xen_pbd_record)
+XEN_ALLOC(xen_pbd_record_opt)
+XEN_RECORD_OPT_FREE(xen_pbd)
+XEN_SET_ALLOC_FREE(xen_pbd_record_opt)
+
+
+static const struct_member xen_pbd_record_struct_members[] =
+    {
+        { .key = "uuid",
+          .type = &abstract_type_string,
+          .offset = offsetof(xen_pbd_record, uuid) },
+        { .key = "host",
+          .type = &abstract_type_ref,
+          .offset = offsetof(xen_pbd_record, host) },
+        { .key = "SR",
+          .type = &abstract_type_ref,
+          .offset = offsetof(xen_pbd_record, sr) },
+        { .key = "device_config",
+          .type = &abstract_type_string_string_map,
+          .offset = offsetof(xen_pbd_record, device_config) },
+        { .key = "currently_attached",
+          .type = &abstract_type_bool,
+          .offset = offsetof(xen_pbd_record, currently_attached) }
+    };
+
+const abstract_type xen_pbd_record_abstract_type_ =
+    {
+       .typename = STRUCT,
+       .struct_size = sizeof(xen_pbd_record),
+       .member_count =
+           sizeof(xen_pbd_record_struct_members) / sizeof(struct_member),
+       .members = xen_pbd_record_struct_members
+    };
+
+
+void
+xen_pbd_record_free(xen_pbd_record *record)
+{
+    if (record == NULL)
+    {
+        return;
+    }
+    free(record->handle);
+    free(record->uuid);
+    xen_host_record_opt_free(record->host);
+    xen_sr_record_opt_free(record->sr);
+    xen_string_string_map_free(record->device_config);
+    free(record);
+}
+
+
+bool
+xen_pbd_get_record(xen_session *session, xen_pbd_record **result, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    abstract_type result_type = xen_pbd_record_abstract_type_;
+
+    *result = NULL;
+    XEN_CALL_("PBD.get_record");
+
+    if (session->ok)
+    {
+       (*result)->handle = xen_strdup_((*result)->uuid);
+    }
+
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_by_uuid(xen_session *session, xen_pbd *result, char *uuid)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = uuid }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("PBD.get_by_uuid");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_create(xen_session *session, xen_pbd *result, xen_pbd_record *record)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &xen_pbd_record_abstract_type_,
+              .u.struct_val = record }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("PBD.create");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_destroy(xen_session *session, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    xen_call_(session, "PBD.destroy", param_values, 1, NULL, NULL);
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_host(xen_session *session, xen_host *result, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("PBD.get_host");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_sr(xen_session *session, xen_sr *result, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("PBD.get_SR");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_device_config(xen_session *session, xen_string_string_map 
**result, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    abstract_type result_type = abstract_type_string_string_map;
+
+    *result = NULL;
+    XEN_CALL_("PBD.get_device_config");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_currently_attached(xen_session *session, bool *result, xen_pbd pbd)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = pbd }
+        };
+
+    abstract_type result_type = abstract_type_bool;
+
+    XEN_CALL_("PBD.get_currently_attached");
+    return session->ok;
+}
+
+
+bool
+xen_pbd_get_uuid(xen_session *session, char **result, xen_pbd pbd)
+{
+    *result = session->ok ? xen_strdup_((char *)pbd) : NULL;
+    return session->ok;
+}

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Added missing PBD-related C bindings., Xen patchbot-unstable <=