diff options
-rw-r--r-- | osinfo/osinfo_common.c | 56 | ||||
-rw-r--r-- | osinfo/osinfo_common.h | 52 | ||||
-rw-r--r-- | osinfo/osinfo_db.c | 6 | ||||
-rw-r--r-- | osinfo/osinfo_entity.c | 17 | ||||
-rw-r--r-- | osinfo/osinfo_filter.c | 17 | ||||
-rw-r--r-- | osinfo/osinfo_hypervisor.c | 20 | ||||
-rw-r--r-- | osinfo/osinfo_os.c | 49 |
7 files changed, 83 insertions, 134 deletions
diff --git a/osinfo/osinfo_common.c b/osinfo/osinfo_common.c index 1e3e3b3..c1c1612 100644 --- a/osinfo/osinfo_common.c +++ b/osinfo/osinfo_common.c @@ -1,21 +1,5 @@ #include <osinfo/osinfo.h> -void __osinfoFreeDeviceLink(gpointer ptr) -{ - if (!ptr) - return; - struct __osinfoDeviceLink *devLink = (struct __osinfoDeviceLink *) ptr; - g_free(devLink->driver); - g_free(devLink); -} - -void __osinfoFreeDeviceSection(gpointer tree) -{ - if (!tree) - return; - g_tree_destroy((GTree *)tree); -} - gint __osinfoStringCompare(gconstpointer a, gconstpointer b, gpointer data) @@ -26,23 +10,6 @@ gint __osinfoStringCompare(gconstpointer a, return g_strcmp0(str1, str2); } -gint __osinfoStringCompareBase(gconstpointer a, - gconstpointer b) -{ - // a and b are each gchar *, data is ignored - gchar *str1 = (gchar *) a; - gchar *str2 = (gchar *) b; - return g_strcmp0(str1, str2); -} - -gint __osinfoIntCompareBase(gconstpointer a, - gconstpointer b) -{ - // a and b are each gchar *, data is ignored - unsigned long int1 = (unsigned long) a; - unsigned long int2 = (unsigned long) b; - return a - b; -} gint __osinfoIntCompare(gconstpointer a, gconstpointer b, @@ -54,29 +21,8 @@ gint __osinfoIntCompare(gconstpointer a, return a - b; } + void __osinfoFreePtrArray(gpointer ptrarray) { g_ptr_array_free(ptrarray, TRUE); } - -void __osinfoFreeRelationship(gpointer ptrarray) -{ - if (!ptrarray) - return; - __osinfoFreePtrArray(ptrarray); -} - -void __osinfoFreeParamVals(gpointer ptrarray) -{ - if (!ptrarray) - return; - __osinfoFreePtrArray(ptrarray); -} - -void __osinfoFreeOsLink(gpointer ptr) -{ - if (!ptr) - return; - struct __osinfoOsLink *osLink = (struct __osinfoOsLink *) ptr; - g_free(osLink); -} diff --git a/osinfo/osinfo_common.h b/osinfo/osinfo_common.h index 9ea70f7..309a1b0 100644 --- a/osinfo/osinfo_common.h +++ b/osinfo/osinfo_common.h @@ -36,76 +36,24 @@ typedef enum OSI_RELATIONSHIP { * Internal data structures ******************************************************************************/ -struct __osinfoDeviceLink { - OsinfoDevice *dev; - gchar *driver; -}; - -struct __osinfoOsLink { - /* <self> 'verbs' <other_os> - * fedora11 upgrades fedora10 - * centos clones rhel - * scientificlinux derives from rhel - */ - osinfoRelationship relshp; - OsinfoOs *otherOs; -}; - -struct __osinfoOsCheckRelationshipArgs { - OsinfoList *list; - osinfoRelationship relshp; -}; - /** **************************************************************************** * Convenience methods ******************************************************************************/ -gint __osinfoIntCompareBase(gconstpointer a, - gconstpointer b); gint __osinfoIntCompare(gconstpointer a, gconstpointer b, gpointer data); -gint __osinfoStringCompareBase(gconstpointer a, - gconstpointer b); gint __osinfoStringCompare(gconstpointer a, gconstpointer b, gpointer data); void __osinfoFreePtrArray(gpointer ptrarray); -void __osinfoFreeRelationship(gpointer ptrarray); -void __osinfoFreeParamVals(gpointer ptrarray); -void __osinfoFreeDeviceSection(gpointer tree); -void __osinfoFreeDeviceLink(gpointer ptr); -void __osinfoFreeOsLink(gpointer ptr); - -gboolean osinfo_get_keys(gpointer key, gpointer value, gpointer data); -void osinfo_dup_array(gpointer data, gpointer user_data); /** **************************************************************************** * Private structures for objects ******************************************************************************/ -struct _OsinfoHypervisorPrivate -{ - // Value: List of device_link structs - GList *deviceLinks; -}; - -struct _OsinfoOsPrivate -{ - // OS-Hypervisor specific information - // Key: gchar* (hypervisor id) - // Value: GList: Element Value: List of device_link structs - GHashTable *hypervisors; - - // Value: List of device_link structs - GList *deviceLinks; - - // Value: Array of os_link structs - GList *osLinks; -}; - #endif /* __OSINFO_OBJECTS_H__ */ diff --git a/osinfo/osinfo_db.c b/osinfo/osinfo_db.c index 5a39025..eb547dd 100644 --- a/osinfo/osinfo_db.c +++ b/osinfo/osinfo_db.c @@ -279,6 +279,12 @@ GList *osinfo_db_unique_values_for_property_in_dev(OsinfoDb *self, gchar *propNa return osinfo_db_unique_values_for_property_in_entity(OSINFO_LIST(self->priv->devices), propName); } +struct __osinfoOsCheckRelationshipArgs { + OsinfoList *list; + osinfoRelationship relshp; +}; + + static gboolean __osinfoAddOsIfRelationship(OsinfoList *list, OsinfoEntity *entity, gpointer data) { struct __osinfoOsCheckRelationshipArgs *args = data; diff --git a/osinfo/osinfo_entity.c b/osinfo/osinfo_entity.c index 2bec761..15d4ab4 100644 --- a/osinfo/osinfo_entity.c +++ b/osinfo/osinfo_entity.c @@ -148,23 +148,6 @@ void osinfo_entity_clear_param(OsinfoEntity *self, gchar *key) g_hash_table_remove(self->priv->params, key); } -gboolean osinfo_get_keys(gpointer key, gpointer value, gpointer data) -{ - GPtrArray *results = data; - gchar *keyDup = g_strdup(key); - - g_ptr_array_add(results, keyDup); - return FALSE; // Continue iterating -} - -void osinfo_dup_array(gpointer data, gpointer user_data) -{ - GPtrArray *results = data; - gchar *valueDup = g_strdup(data); - - g_ptr_array_add(results, valueDup); -} - gchar *osinfo_entity_get_id(OsinfoEntity *self) { g_return_val_if_fail(OSINFO_IS_ENTITY(self), NULL); diff --git a/osinfo/osinfo_filter.c b/osinfo/osinfo_filter.c index 2d826ef..59a9c82 100644 --- a/osinfo/osinfo_filter.c +++ b/osinfo/osinfo_filter.c @@ -16,6 +16,23 @@ struct _OsinfoFilterPrivate GTree *relationshipConstraints; }; +gboolean osinfo_get_keys(gpointer key, gpointer value, gpointer data) +{ + GPtrArray *results = data; + gchar *keyDup = g_strdup(key); + + g_ptr_array_add(results, keyDup); + return FALSE; // Continue iterating +} + +void osinfo_dup_array(gpointer data, gpointer user_data) +{ + GPtrArray *results = data; + gchar *valueDup = g_strdup(data); + + g_ptr_array_add(results, valueDup); +} + static void osinfo_filter_finalize (GObject *object); diff --git a/osinfo/osinfo_hypervisor.c b/osinfo/osinfo_hypervisor.c index 3f20b56..911edca 100644 --- a/osinfo/osinfo_hypervisor.c +++ b/osinfo/osinfo_hypervisor.c @@ -4,11 +4,25 @@ G_DEFINE_TYPE (OsinfoHypervisor, osinfo_hypervisor, OSINFO_TYPE_ENTITY); #define OSINFO_HYPERVISOR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), OSINFO_TYPE_HYPERVISOR, OsinfoHypervisorPrivate)) +struct _OsinfoHypervisorPrivate +{ + // Value: List of device_link structs + GList *deviceLinks; +}; + +struct _OsinfoHypervisorDeviceLink { + OsinfoDevice *dev; + gchar *driver; +}; + static void osinfo_hypervisor_finalize (GObject *object); static void osinfo_device_link_free(gpointer data, gpointer opaque G_GNUC_UNUSED) { - __osinfoFreeDeviceLink(data); + struct _OsinfoHypervisorDeviceLink *link = data; + g_object_unref(link->dev); + g_free(link->driver); + g_free(link); } static void @@ -59,7 +73,7 @@ OsinfoDeviceList *osinfo_hypervisor_get_devices(OsinfoHypervisor *self, OsinfoFi GList *tmp = self->priv->deviceLinks; while (tmp) { - struct __osinfoDeviceLink *link = tmp->data; + struct _OsinfoHypervisorDeviceLink *link = tmp->data; if (osinfo_entity_matches_filter(OSINFO_ENTITY(link->dev), filter)) osinfo_list_add(OSINFO_LIST(newList), OSINFO_ENTITY(link->dev)); @@ -76,7 +90,7 @@ void osinfo_hypervisor_add_device(OsinfoHypervisor *self, OsinfoDevice *dev, con g_return_if_fail(OSINFO_IS_DEVICE(dev)); g_return_if_fail(driver != NULL); - struct __osinfoDeviceLink *link = g_new0(struct __osinfoDeviceLink, 1); + struct _OsinfoHypervisorDeviceLink *link = g_new0(struct _OsinfoHypervisorDeviceLink, 1); g_object_ref(dev); link->dev = dev; diff --git a/osinfo/osinfo_os.c b/osinfo/osinfo_os.c index 5842a12..d023888 100644 --- a/osinfo/osinfo_os.c +++ b/osinfo/osinfo_os.c @@ -4,16 +4,51 @@ G_DEFINE_TYPE (OsinfoOs, osinfo_os, OSINFO_TYPE_ENTITY); #define OSINFO_OS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), OSINFO_TYPE_OS, OsinfoOsPrivate)) +struct _OsinfoOsPrivate +{ + // OS-Hypervisor specific information + // Key: gchar* (hypervisor id) + // Value: GList: Element Value: List of device_link structs + GHashTable *hypervisors; + + // Value: List of device_link structs + GList *deviceLinks; + + // Value: Array of os_link structs + GList *osLinks; +}; + +struct _OsinfoOsOsLink { + /* <self> 'verbs' <other_os> + * fedora11 upgrades fedora10 + * centos clones rhel + * scientificlinux derives from rhel + */ + osinfoRelationship relshp; + OsinfoOs *otherOs; +}; + +struct _OsinfoOsDeviceLink { + OsinfoDevice *dev; + gchar *driver; +}; + + static void osinfo_os_finalize (GObject *object); static void osinfo_device_link_free(gpointer data, gpointer opaque G_GNUC_UNUSED) { - __osinfoFreeDeviceLink(data); + struct _OsinfoOsDeviceLink *link = data; + g_object_unref(link->dev); + g_free(link->driver); + g_free(link); } static void osinfo_os_link_free(gpointer data, gpointer opaque G_GNUC_UNUSED) { - __osinfoFreeOsLink(data); + struct _OsinfoOsOsLink *link = data; + g_object_unref(link->otherOs); + g_free(link); } @@ -92,7 +127,7 @@ OsinfoDevice *osinfo_os_get_preferred_device(OsinfoOs *self, OsinfoHypervisor *h // For each device in section list, apply filter. If filter passes, return device. while (tmp) { - struct __osinfoDeviceLink *link = tmp->data; + struct _OsinfoOsDeviceLink *link = tmp->data; if (osinfo_entity_matches_filter(OSINFO_ENTITY(link->dev), filter)) { *driver = link->driver; @@ -114,7 +149,7 @@ OsinfoOsList *osinfo_os_get_related(OsinfoOs *self, osinfoRelationship relshp) GList *tmp = self->priv->osLinks; while (tmp) { - struct __osinfoOsLink *link = tmp->data; + struct _OsinfoOsOsLink *link = tmp->data; if (link->relshp == relshp) osinfo_list_add(OSINFO_LIST(newList), OSINFO_ENTITY(link->otherOs)); @@ -141,7 +176,7 @@ OsinfoDeviceList *osinfo_os_get_devices(OsinfoOs *self, OsinfoHypervisor *hv, Os tmp = self->priv->deviceLinks; while (tmp) { - struct __osinfoDeviceLink *link = tmp->data; + struct _OsinfoOsDeviceLink *link = tmp->data; if (osinfo_entity_matches_filter(OSINFO_ENTITY(link->dev), filter)) osinfo_list_add(OSINFO_LIST(newList), OSINFO_ENTITY(link->dev)); @@ -159,7 +194,7 @@ void osinfo_os_add_device(OsinfoOs *self, OsinfoHypervisor *hv, OsinfoDevice *de g_return_if_fail(OSINFO_IS_DEVICE(dev)); g_return_if_fail(driver != NULL); - struct __osinfoDeviceLink *link = g_new0(struct __osinfoDeviceLink, 1); + struct _OsinfoOsDeviceLink *link = g_new0(struct _OsinfoOsDeviceLink, 1); g_object_ref(dev); link->dev = dev; @@ -184,7 +219,7 @@ void osinfo_os_add_related_os(OsinfoOs *self, osinfoRelationship relshp, OsinfoO g_return_if_fail(OSINFO_IS_OS(self)); g_return_if_fail(OSINFO_IS_OS(otheros)); - struct __osinfoOsLink *osLink = g_new0(struct __osinfoOsLink, 1); + struct _OsinfoOsOsLink *osLink = g_new0(struct _OsinfoOsOsLink, 1); g_object_ref(otheros); osLink->otherOs = otheros; |