Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Unified Diff: third_party/libusb/linux-udev.patch

Issue 674703002: Linux: Dynamically load libudev. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scoped_udev
Patch Set: rebase to head, which includes third_party/libudev already Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/libusb/libusb.gyp ('k') | third_party/libusb/src/libusb/os/linux_udev.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/libusb/linux-udev.patch
diff --git a/third_party/libusb/linux-udev.patch b/third_party/libusb/linux-udev.patch
new file mode 100644
index 0000000000000000000000000000000000000000..93249c04d12723a584f7792c1231c709474d7a00
--- /dev/null
+++ b/third_party/libusb/linux-udev.patch
@@ -0,0 +1,209 @@
+Index: third_party/libusb/src/libusb/os/linux_udev.cc
+diff --git a/third_party/libusb/src/libusb/os/linux_udev.c b/third_party/libusb/src/libusb/os/linux_udev.cc
+similarity index 83%
+rename from third_party/libusb/src/libusb/os/linux_udev.c
+rename to third_party/libusb/src/libusb/os/linux_udev.cc
+index 99ac943410557de1a5cdd54082932db972040c2c..1b51ce44f4973c39b906d472b2a0cab51f987d3c 100644
+--- a/third_party/libusb/src/libusb/os/linux_udev.c
++++ b/third_party/libusb/src/libusb/os/linux_udev.cc
+@@ -37,11 +37,14 @@
+ #include <sys/utsname.h>
+ #include <sys/socket.h>
+ #include <unistd.h>
+-#include <libudev.h>
+
++extern "C" {
+ #include "libusb.h"
+ #include "libusbi.h"
+ #include "linux_usbfs.h"
++}
++
++#include "device/udev_linux/udev.h"
+
+ /* udev context */
+ static struct udev *udev_ctx = NULL;
+@@ -58,30 +61,30 @@ int linux_udev_start_event_monitor(void)
+ int r;
+
+ assert(udev_ctx == NULL);
+- udev_ctx = udev_new();
++ udev_ctx = device::udev_new();
+ if (!udev_ctx) {
+ usbi_err(NULL, "could not create udev context");
+ return LIBUSB_ERROR_OTHER;
+ }
+
+- udev_monitor = udev_monitor_new_from_netlink(udev_ctx, "udev");
++ udev_monitor = device::udev_monitor_new_from_netlink(udev_ctx, "udev");
+ if (!udev_monitor) {
+ usbi_err(NULL, "could not initialize udev monitor");
+ goto err_free_ctx;
+ }
+
+- r = udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "usb", 0);
++ r = device::udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "usb", 0);
+ if (r) {
+ usbi_err(NULL, "could not initialize udev monitor filter for \"usb\" subsystem");
+ goto err_free_monitor;
+ }
+
+- if (udev_monitor_enable_receiving(udev_monitor)) {
++ if (device::udev_monitor_enable_receiving(udev_monitor)) {
+ usbi_err(NULL, "failed to enable the udev monitor");
+ goto err_free_monitor;
+ }
+
+- udev_monitor_fd = udev_monitor_get_fd(udev_monitor);
++ udev_monitor_fd = device::udev_monitor_get_fd(udev_monitor);
+
+ /* Some older versions of udev are not non-blocking by default,
+ * so make sure this is set */
+@@ -114,11 +117,11 @@ err_close_pipe:
+ close(udev_control_pipe[0]);
+ close(udev_control_pipe[1]);
+ err_free_monitor:
+- udev_monitor_unref(udev_monitor);
++ device::udev_monitor_unref(udev_monitor);
+ udev_monitor = NULL;
+ udev_monitor_fd = -1;
+ err_free_ctx:
+- udev_unref(udev_ctx);
++ device::udev_unref(udev_ctx);
+ udev_ctx = NULL;
+ return LIBUSB_ERROR_OTHER;
+ }
+@@ -141,12 +144,12 @@ int linux_udev_stop_event_monitor(void)
+ pthread_join(linux_event_thread, NULL);
+
+ /* Release the udev monitor */
+- udev_monitor_unref(udev_monitor);
++ device::udev_monitor_unref(udev_monitor);
+ udev_monitor = NULL;
+ udev_monitor_fd = -1;
+
+ /* Clean up the udev context */
+- udev_unref(udev_ctx);
++ device::udev_unref(udev_ctx);
+ udev_ctx = NULL;
+
+ /* close and reset control pipe */
+@@ -183,7 +186,7 @@ static void *linux_udev_event_thread_main(void *arg)
+ }
+ if (fds[1].revents & POLLIN) {
+ usbi_mutex_static_lock(&linux_hotplug_lock);
+- udev_dev = udev_monitor_receive_device(udev_monitor);
++ udev_dev = device::udev_monitor_receive_device(udev_monitor);
+ if (udev_dev)
+ udev_hotplug_event(udev_dev);
+ usbi_mutex_static_unlock(&linux_hotplug_lock);
+@@ -200,12 +203,12 @@ static int udev_device_info(struct libusb_context *ctx, int detached,
+ uint8_t *devaddr, const char **sys_name) {
+ const char *dev_node;
+
+- dev_node = udev_device_get_devnode(udev_dev);
++ dev_node = device::udev_device_get_devnode(udev_dev);
+ if (!dev_node) {
+ return LIBUSB_ERROR_OTHER;
+ }
+
+- *sys_name = udev_device_get_sysname(udev_dev);
++ *sys_name = device::udev_device_get_sysname(udev_dev);
+ if (!*sys_name) {
+ return LIBUSB_ERROR_OTHER;
+ }
+@@ -223,7 +226,7 @@ static void udev_hotplug_event(struct udev_device* udev_dev)
+ int r;
+
+ do {
+- udev_action = udev_device_get_action(udev_dev);
++ udev_action = device::udev_device_get_action(udev_dev);
+ if (!udev_action) {
+ break;
+ }
+@@ -246,7 +249,7 @@ static void udev_hotplug_event(struct udev_device* udev_dev)
+ }
+ } while (0);
+
+- udev_device_unref(udev_dev);
++ device::udev_device_unref(udev_dev);
+ }
+
+ int linux_udev_scan_devices(struct libusb_context *ctx)
+@@ -259,33 +262,33 @@ int linux_udev_scan_devices(struct libusb_context *ctx)
+
+ assert(udev_ctx != NULL);
+
+- enumerator = udev_enumerate_new(udev_ctx);
++ enumerator = device::udev_enumerate_new(udev_ctx);
+ if (NULL == enumerator) {
+ usbi_err(ctx, "error creating udev enumerator");
+ return LIBUSB_ERROR_OTHER;
+ }
+
+- udev_enumerate_add_match_subsystem(enumerator, "usb");
+- udev_enumerate_scan_devices(enumerator);
+- devices = udev_enumerate_get_list_entry(enumerator);
++ device::udev_enumerate_add_match_subsystem(enumerator, "usb");
++ device::udev_enumerate_scan_devices(enumerator);
++ devices = device::udev_enumerate_get_list_entry(enumerator);
+
+ udev_list_entry_foreach(entry, devices) {
+- const char *path = udev_list_entry_get_name(entry);
++ const char *path = device::udev_list_entry_get_name(entry);
+ uint8_t busnum = 0, devaddr = 0;
+
+- udev_dev = udev_device_new_from_syspath(udev_ctx, path);
++ udev_dev = device::udev_device_new_from_syspath(udev_ctx, path);
+
+ r = udev_device_info(ctx, 0, udev_dev, &busnum, &devaddr, &sys_name);
+ if (r) {
+- udev_device_unref(udev_dev);
++ device::udev_device_unref(udev_dev);
+ continue;
+ }
+
+ linux_enumerate_device(ctx, busnum, devaddr, sys_name);
+- udev_device_unref(udev_dev);
++ device::udev_device_unref(udev_dev);
+ }
+
+- udev_enumerate_unref(enumerator);
++ device::udev_enumerate_unref(enumerator);
+
+ return LIBUSB_SUCCESS;
+ }
+@@ -296,7 +299,7 @@ void linux_udev_hotplug_poll(void)
+
+ usbi_mutex_static_lock(&linux_hotplug_lock);
+ do {
+- udev_dev = udev_monitor_receive_device(udev_monitor);
++ udev_dev = device::udev_monitor_receive_device(udev_monitor);
+ if (udev_dev) {
+ usbi_dbg("Handling hotplug event from hotplug_poll");
+ udev_hotplug_event(udev_dev);
+Index: third_party/libusb/src/libusb/os/linux_usbfs.h
+diff --git a/third_party/libusb/src/libusb/os/linux_usbfs.h b/third_party/libusb/src/libusb/os/linux_usbfs.h
+index 1f5b191f4a745937efe52695d7dbaa949a15df08..eedeaaf3654f22ecaac9fd1332d32b2855450bce 100644
+--- a/third_party/libusb/src/libusb/os/linux_usbfs.h
++++ b/third_party/libusb/src/libusb/os/linux_usbfs.h
+@@ -159,10 +159,20 @@ struct usbfs_disconnect_claim {
+ extern usbi_mutex_static_t linux_hotplug_lock;
+
+ #if defined(HAVE_LIBUDEV)
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ int linux_udev_start_event_monitor(void);
+ int linux_udev_stop_event_monitor(void);
+ int linux_udev_scan_devices(struct libusb_context *ctx);
+ void linux_udev_hotplug_poll(void);
++
++#ifdef __cplusplus
++}
++#endif
++
+ #else
+ int linux_netlink_start_event_monitor(void);
+ int linux_netlink_stop_event_monitor(void);
« no previous file with comments | « third_party/libusb/libusb.gyp ('k') | third_party/libusb/src/libusb/os/linux_udev.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698