summaryrefslogtreecommitdiff
path: root/libusb/hotplug.c
diff options
context:
space:
mode:
authorgudenau <gudenaua@gmail.com>2018-01-21 21:21:46 -0600
committerChris Dickens <christopher.a.dickens@gmail.com>2020-01-13 13:19:44 -0800
commit19e763e135f8ac6cd6206f3f800d2ad40ad72a54 (patch)
tree92d8013b1c907506bbe4956e5b77fd4a2994bfab /libusb/hotplug.c
parent25855c083bc8989c5a8bab981fcfe4e1a9f9ec07 (diff)
downloadlibusb-19e763e135f8ac6cd6206f3f800d2ad40ad72a54.tar.gz
hotplug: Added libusb_hotplug_get_user_data()
Closes #380 [dickens] Fixed up API version in doxygen, whitespace issues, function visibility annotation (can't use API_EXPORTED for pointer values) and added new function to libusb-1.0.defs Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
Diffstat (limited to 'libusb/hotplug.c')
-rw-r--r--libusb/hotplug.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/libusb/hotplug.c b/libusb/hotplug.c
index a4320bc..3ccdc2f 100644
--- a/libusb/hotplug.c
+++ b/libusb/hotplug.c
@@ -356,6 +356,33 @@ void API_EXPORTED libusb_hotplug_deregister_callback(struct libusb_context *ctx,
}
}
+DEFAULT_VISIBILITY
+void * LIBUSB_CALL libusb_hotplug_get_user_data(struct libusb_context *ctx,
+ libusb_hotplug_callback_handle callback_handle)
+{
+ struct libusb_hotplug_callback *hotplug_cb;
+ void *user_data = NULL;
+
+ /* check for hotplug support */
+ if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) {
+ return NULL;
+ }
+
+ USBI_GET_CONTEXT(ctx);
+
+ usbi_dbg("get hotplug user data %d", callback_handle);
+
+ usbi_mutex_lock(&ctx->hotplug_cbs_lock);
+ list_for_each_entry(hotplug_cb, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) {
+ if (callback_handle == hotplug_cb->handle) {
+ user_data = hotplug_cb->user_data;
+ }
+ }
+ usbi_mutex_unlock(&ctx->hotplug_cbs_lock);
+
+ return user_data;
+}
+
void usbi_hotplug_deregister(struct libusb_context *ctx, int forced)
{
struct libusb_hotplug_callback *hotplug_cb, *next;