+struct udev_enumerate {
+ struct udev *udev;
+ int refcount;
+ struct list_node devices_list;
+};
+
+struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate)
+{
+ if (udev_enumerate == NULL)
+ return NULL;
+ udev_enumerate->refcount++;
+ return udev_enumerate;
+}
+
+void udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
+{
+ if (udev_enumerate == NULL)
+ return;
+ udev_enumerate->refcount--;
+ if (udev_enumerate->refcount > 0)
+ return;
+ list_cleanup(udev_enumerate->udev, &udev_enumerate->devices_list);
+ free(udev_enumerate);
+}
+
+struct udev_list *udev_enumerate_get_list(struct udev_enumerate *udev_enumerate)
+{
+ if (udev_enumerate == NULL)
+ return NULL;
+ return list_get_entry(&udev_enumerate->devices_list);
+}
+