On Wed, Mar 01, 2017 at 07:27:14PM -0500, John Ferlan wrote:
Move all the NodeDeviceObj API's into their own module
virnodedeviceobj
from the node_device_conf
Purely code motion at this point, plus adjustments to cleanly build.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
po/POTFILES.in | 1 +
src/Makefile.am | 3 +-
src/conf/node_device_conf.c | 505 --------------------------------
src/conf/node_device_conf.h | 50 ----
src/conf/virnodedeviceobj.c | 542 +++++++++++++++++++++++++++++++++++
src/conf/virnodedeviceobj.h | 78 +++++
src/libvirt_private.syms | 23 +-
src/node_device/node_device_driver.h | 2 +-
src/test/test_driver.c | 1 +
9 files changed, 638 insertions(+), 567 deletions(-)
create mode 100644 src/conf/virnodedeviceobj.c
create mode 100644 src/conf/virnodedeviceobj.h
[...]
diff --git a/src/conf/virnodedeviceobj.h
b/src/conf/virnodedeviceobj.h
new file mode 100644
index 0000000..6ad7fb1
--- /dev/null
+++ b/src/conf/virnodedeviceobj.h
@@ -0,0 +1,78 @@
+/*
+ * virnodedeviceobj.h: node device object handling for node devices
+ * (derived from node_device_conf.h)
+ *
+ * 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, see
+ * <
http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __VIRNODEDEVICEOBJ_H__
+# define __VIRNODEDEVICEOBJ_H__
+
+# include "internal.h"
+# include "virthread.h"
+
+# include "node_device_conf.h"
+# include "object_event.h"
+
+
+typedef struct _virNodeDeviceDriverState virNodeDeviceDriverState;
+typedef virNodeDeviceDriverState *virNodeDeviceDriverStatePtr;
+struct _virNodeDeviceDriverState {
+ virMutex lock;
+
+ virNodeDeviceObjList devs; /* currently-known devices */
+ void *privateData; /* driver-specific private data */
+
+ /* Immutable pointer, self-locking APIs */
+ virObjectEventStatePtr nodeDeviceEventState;
+};
+
+
Since I'm the only one that tries to change the different coding style
between header and source files this is a kind reminder that it would
be nice to use the same coding style, placing the return value on
separate line.
Thanks,
Pavel
+int virNodeDeviceHasCap(const virNodeDeviceObj *dev, const char
*cap);
+
+virNodeDeviceObjPtr virNodeDeviceFindByName(virNodeDeviceObjListPtr devs,
+ const char *name);
+virNodeDeviceObjPtr
+virNodeDeviceFindBySysfsPath(virNodeDeviceObjListPtr devs,
+ const char *sysfs_path)
+ ATTRIBUTE_NONNULL(2);
+
+virNodeDeviceObjPtr virNodeDeviceAssignDef(virNodeDeviceObjListPtr devs,
+ virNodeDeviceDefPtr def);
+
+void virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs,
+ virNodeDeviceObjPtr *dev);
+
+int virNodeDeviceGetParentHost(virNodeDeviceObjListPtr devs,
+ virNodeDeviceDefPtr def,
+ int create);
+
+void virNodeDeviceObjFree(virNodeDeviceObjPtr dev);
+
+void virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs);
+
+void virNodeDeviceObjLock(virNodeDeviceObjPtr obj);
+void virNodeDeviceObjUnlock(virNodeDeviceObjPtr obj);
+
+typedef bool (*virNodeDeviceObjListFilter)(virConnectPtr conn,
+ virNodeDeviceDefPtr def);
+
+int virNodeDeviceObjListExport(virConnectPtr conn,
+ virNodeDeviceObjList devobjs,
+ virNodeDevicePtr **devices,
+ virNodeDeviceObjListFilter filter,
+ unsigned int flags);
+
+#endif /* __VIRNODEDEVICEOBJ_H__ */
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index bce0487..8639979 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -694,23 +694,13 @@ virNetDevIPRouteParseXML;
virNodeDevCapsDefFree;
virNodeDevCapTypeFromString;
virNodeDevCapTypeToString;
-virNodeDeviceAssignDef;
virNodeDeviceDefFormat;
virNodeDeviceDefFree;
virNodeDeviceDefParseFile;
virNodeDeviceDefParseNode;
virNodeDeviceDefParseString;
-virNodeDeviceFindByName;
-virNodeDeviceFindBySysfsPath;
-virNodeDeviceGetParentHost;
virNodeDeviceGetParentName;
virNodeDeviceGetWWNs;
-virNodeDeviceHasCap;
-virNodeDeviceObjListExport;
-virNodeDeviceObjListFree;
-virNodeDeviceObjLock;
-virNodeDeviceObjRemove;
-virNodeDeviceObjUnlock;
# conf/node_device_event.h
@@ -958,6 +948,19 @@ virDomainObjListRemoveLocked;
virDomainObjListRename;
+# conf/virnodedeviceobj.h
+virNodeDeviceAssignDef;
+virNodeDeviceFindByName;
+virNodeDeviceFindBySysfsPath;
+virNodeDeviceGetParentHost;
+virNodeDeviceHasCap;
+virNodeDeviceObjListExport;
+virNodeDeviceObjListFree;
+virNodeDeviceObjLock;
+virNodeDeviceObjRemove;
+virNodeDeviceObjUnlock;
+
+
# conf/virsecretobj.h
virSecretLoadAllConfigs;
virSecretObjDeleteConfig;
diff --git a/src/node_device/node_device_driver.h b/src/node_device/node_device_driver.h
index 56f89ab..bc8af8a 100644
--- a/src/node_device/node_device_driver.h
+++ b/src/node_device/node_device_driver.h
@@ -26,7 +26,7 @@
# include "internal.h"
# include "driver.h"
-# include "node_device_conf.h"
+# include "virnodedeviceobj.h"
# define LINUX_NEW_DEVICE_WAIT_TIME 60
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 314f08c..c6214c6 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -51,6 +51,7 @@
#include "storage_conf.h"
#include "storage_event.h"
#include "node_device_conf.h"
+#include "virnodedeviceobj.h"
#include "node_device_event.h"
#include "virxml.h"
#include "virthread.h"
--
2.9.3
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list