Re: [Xen-devel] [PATCH 4/4] libxl: move ibxl_devid_to_device_... to LIBXL_DEFINE_DEVID_TO_DEVICE

2017-10-31 Thread Wei Liu
On Thu, Oct 05, 2017 at 12:30:48PM +0300, Oleksandr Grytsov wrote:
> From: Oleksandr Grytsov 
> 
> Signed-off-by: Oleksandr Grytsov 

Acked-by: Wei Liu 

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH 4/4] libxl: move ibxl_devid_to_device_... to LIBXL_DEFINE_DEVID_TO_DEVICE

2017-10-05 Thread Oleksandr Grytsov
From: Oleksandr Grytsov 

Signed-off-by: Oleksandr Grytsov 
---
 tools/libxl/libxl_internal.h | 38 ++
 tools/libxl/libxl_nic.c  | 26 +-
 tools/libxl/libxl_vdispl.c   | 35 +--
 tools/libxl/libxl_vkb.c  | 35 +--
 tools/libxl/libxl_vsnd.c | 36 +---
 5 files changed, 42 insertions(+), 128 deletions(-)

diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index d1a8d8e..26204f0 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -3470,6 +3470,44 @@ _hidden void libxl__bootloader_run(libxl__egc*, 
libxl__bootloader_state *st);
 return 0;   \
 }
 
+#define LIBXL_DEFINE_DEVID_TO_DEVICE(name)  \
+int libxl_devid_to_device_##name(libxl_ctx *ctx, uint32_t domid,\
+ int devid, \
+ libxl_device_##name *type) \
+{   \
+GC_INIT(ctx);   \
+\
+char *device_path;  \
+const char *tmp;\
+int rc; \
+\
+libxl_device_##name##_init(type);   \
+\
+device_path = GCSPRINTF("%s/device/%s/%d",  \
+libxl__xs_libxl_path(gc, domid),\
+libxl__device_kind_to_string(   \
+libxl__##name##_devtype.type),  \
+devid); \
+\
+if (libxl__xs_read_mandatory(gc, XBT_NULL, device_path, )) {\
+rc = ERROR_NOTFOUND; goto out;  \
+}   \
+\
+if (libxl__##name##_devtype.from_xenstore) {\
+rc = libxl__##name##_devtype.from_xenstore(gc, device_path, \
+   devid, type);\
+if (rc) goto out;   \
+}   \
+\
+rc = 0; \
+\
+out:\
+\
+GC_FREE;\
+return rc;  \
+}
+
+
 #define LIBXL_DEFINE_DEVICE_REMOVE(type)\
 LIBXL_DEFINE_DEVICE_REMOVE_EXT(type, generic, remove, 0)\
 LIBXL_DEFINE_DEVICE_REMOVE_EXT(type, generic, destroy, 1)
diff --git a/tools/libxl/libxl_nic.c b/tools/libxl/libxl_nic.c
index 2d01803..b9ad262 100644
--- a/tools/libxl/libxl_nic.c
+++ b/tools/libxl/libxl_nic.c
@@ -381,31 +381,6 @@ static int libxl__nic_from_xenstore(libxl__gc *gc, const 
char *libxl_path,
 return rc;
 }
 
-int libxl_devid_to_device_nic(libxl_ctx *ctx, uint32_t domid,
-  int devid, libxl_device_nic *nic)
-{
-GC_INIT(ctx);
-char *libxl_dom_path, *libxl_path;
-int rc = ERROR_FAIL;
-
-libxl_device_nic_init(nic);
-libxl_dom_path = libxl__xs_libxl_path(gc, domid);
-if (!libxl_dom_path)
-goto out;
-
-libxl_path = GCSPRINTF("%s/device/%s/%d", libxl_dom_path,
-   
libxl__device_kind_to_string(LIBXL__DEVICE_KIND_VIF),
-   devid);
-
-rc = libxl__nic_from_xenstore(gc, libxl_path, devid, nic);
-if (rc) goto out;
-
-rc = 0;
-out:
-GC_FREE;
-return rc;
-}
-
 libxl_device_nic *libxl_device_nic_list(libxl_ctx *ctx, uint32_t domid, int 
*num)
 {
 libxl_device_nic *r;
@@ -529,6 +504,7 @@ out:
 static LIBXL_DEFINE_UPDATE_DEVID(nic)
 static LIBXL_DEFINE_DEVICE_FROM_TYPE(nic)
 
+LIBXL_DEFINE_DEVID_TO_DEVICE(nic)
 LIBXL_DEFINE_DEVICE_ADD(nic)
 LIBXL_DEFINE_DEVICES_ADD(nic)