diff options
| author | Chia-I Wu <olv@lunarg.com> | 2015-02-20 13:41:57 -0700 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-03-05 14:20:31 -0700 |
| commit | 11f80679380827743250df7d24addb776359b64f (patch) | |
| tree | 4608cd557f1b26b59e0053ac39b46f895ffa7508 | |
| parent | bb222008085e3d190d29115c94b555813648025d (diff) | |
| download | usermoji-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.c | 23 | ||||
| -rw-r--r-- | icd/common/icd-enumerate-drm.h | 8 |
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); |
