libudev: introduce udev_monitor_receive_sd_device()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 22 Aug 2018 07:30:33 +0000 (16:30 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 22 Aug 2018 19:57:39 +0000 (04:57 +0900)
src/libudev/libudev-monitor.c
src/libudev/libudev-private.h

index 85ff7aa..f0b5081 100644 (file)
@@ -18,6 +18,7 @@
 #include "fileio.h"
 #include "format-util.h"
 #include "libudev-private.h"
+#include "libudev-device-internal.h"
 #include "missing.h"
 #include "mount-util.h"
 #include "socket-util.h"
@@ -702,6 +703,19 @@ retry:
         return udev_device;
 }
 
+int udev_monitor_receive_sd_device(struct udev_monitor *udev_monitor, sd_device **ret) {
+        _cleanup_(udev_device_unrefp) struct udev_device *udev_device = NULL;
+
+        assert(ret);
+
+        udev_device = udev_monitor_receive_device(udev_monitor);
+        if (!udev_device)
+                return -errno;
+
+        *ret = sd_device_ref(udev_device->device);
+        return 0;
+}
+
 int udev_monitor_send_device(struct udev_monitor *udev_monitor,
                              struct udev_monitor *destination, struct udev_device *udev_device)
 {
index 5260eb6..af24b7b 100644 (file)
@@ -6,6 +6,7 @@
 #include <stdint.h>
 
 #include "libudev.h"
+#include "sd-device.h"
 
 #include "macro.h"
 #include "mkdir.h"
@@ -62,6 +63,7 @@ int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct
 int udev_monitor_send_device(struct udev_monitor *udev_monitor,
                              struct udev_monitor *destination, struct udev_device *udev_device);
 struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const char *name, int fd);
+int udev_monitor_receive_sd_device(struct udev_monitor *udev_monitor, sd_device **ret);
 
 /* libudev-list.c */
 struct udev_list_node {