aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2015-02-20 13:41:57 -0700
committerChia-I Wu <olv@lunarg.com>2015-03-05 14:20:31 -0700
commit11f80679380827743250df7d24addb776359b64f (patch)
tree4608cd557f1b26b59e0053ac39b46f895ffa7508
parentbb222008085e3d190d29115c94b555813648025d (diff)
downloadusermoji-11f80679380827743250df7d24addb776359b64f.tar.xz
icd: add support for per-instance DRM enumeration
Add icd_instance to DRM enumeration functions, and use it for memory allocation or logging.
-rw-r--r--icd/common/icd-enumerate-drm.c23
-rw-r--r--icd/common/icd-enumerate-drm.h8
2 files changed, 19 insertions, 12 deletions
diff --git a/icd/common/icd-enumerate-drm.c b/icd/common/icd-enumerate-drm.c
index fbb00d73..d09f3b8c 100644
--- a/icd/common/icd-enumerate-drm.c
+++ b/icd/common/icd-enumerate-drm.c
@@ -30,8 +30,7 @@
#include <string.h>
#include <libudev.h>
-#include "icd-alloc.h"
-#include "icd-log.h"
+#include "icd-instance.h"
#include "icd-utils.h"
#include "icd-enumerate-drm.h"
@@ -78,7 +77,8 @@ static struct icd_drm_device *find_dev(struct icd_drm_device *devices,
return dev;
}
-static struct icd_drm_device *probe_syspath(struct icd_drm_device *devices,
+static struct icd_drm_device *probe_syspath(const struct icd_instance *instance,
+ struct icd_drm_device *devices,
struct udev *udev, const char *syspath,
int vendor_id_match)
{
@@ -124,7 +124,8 @@ static struct icd_drm_device *probe_syspath(struct icd_drm_device *devices,
return devices;
} else {
- dev = icd_alloc(sizeof(*dev), 0, XGL_SYSTEM_ALLOC_INTERNAL_TEMP);
+ dev = icd_instance_alloc(instance, sizeof(*dev), 0,
+ XGL_SYSTEM_ALLOC_INTERNAL_TEMP);
if (!dev)
return devices;
@@ -140,7 +141,8 @@ static struct icd_drm_device *probe_syspath(struct icd_drm_device *devices,
}
}
-struct icd_drm_device *icd_drm_enumerate(int vendor_id)
+struct icd_drm_device *icd_drm_enumerate(const struct icd_instance *instance,
+ int vendor_id)
{
struct icd_drm_device *devices = NULL;
struct udev *udev;
@@ -149,7 +151,7 @@ struct icd_drm_device *icd_drm_enumerate(int vendor_id)
udev = udev_new();
if (udev == NULL) {
- icd_log(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0,
+ icd_instance_log(instance, XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0,
XGL_NULL_HANDLE, 0, 0, "failed to initialize udev context");
return NULL;
@@ -157,7 +159,7 @@ struct icd_drm_device *icd_drm_enumerate(int vendor_id)
e = udev_enumerate_new(udev);
if (e == NULL) {
- icd_log(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0,
+ icd_instance_log(instance, XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0,
XGL_NULL_HANDLE, 0, 0,
"failed to initialize udev enumerate context");
udev_unref(udev);
@@ -171,7 +173,7 @@ struct icd_drm_device *icd_drm_enumerate(int vendor_id)
udev_enumerate_scan_devices(e);
udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(e)) {
- devices = probe_syspath(devices, udev,
+ devices = probe_syspath(instance, devices, udev,
udev_list_entry_get_name(entry), vendor_id);
}
@@ -180,7 +182,8 @@ struct icd_drm_device *icd_drm_enumerate(int vendor_id)
return devices;
}
-void icd_drm_release(struct icd_drm_device *devices)
+void icd_drm_release(const struct icd_instance *instance,
+ struct icd_drm_device *devices)
{
struct icd_drm_device *dev = devices;
@@ -191,7 +194,7 @@ void icd_drm_release(struct icd_drm_device *devices)
for (i = 0; i < ARRAY_SIZE(dev->minors); i++)
udev_device_unref((struct udev_device *) dev->minors[i]);
- icd_free(dev);
+ icd_instance_free(instance, dev);
dev = next;
}
}
diff --git a/icd/common/icd-enumerate-drm.h b/icd/common/icd-enumerate-drm.h
index 45883f85..71b20e8f 100644
--- a/icd/common/icd-enumerate-drm.h
+++ b/icd/common/icd-enumerate-drm.h
@@ -45,8 +45,12 @@ struct icd_drm_device {
struct icd_drm_device *next;
};
-struct icd_drm_device *icd_drm_enumerate(int vendor_id);
-void icd_drm_release(struct icd_drm_device *devices);
+struct icd_instance;
+
+struct icd_drm_device *icd_drm_enumerate(const struct icd_instance *instance,
+ int vendor_id);
+void icd_drm_release(const struct icd_instance *instance,
+ struct icd_drm_device *devices);
const char *icd_drm_get_devnode(struct icd_drm_device *dev,
enum icd_drm_minor_type minor);