]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device-monitor: introduce sd_device_monitor_is_running()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 1 Aug 2024 03:26:44 +0000 (12:26 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Aug 2024 02:16:33 +0000 (11:16 +0900)
src/libsystemd/libsystemd.sym
src/libsystemd/sd-device/device-monitor.c
src/libsystemd/sd-device/test-sd-device-monitor.c
src/systemd/sd-device.h

index af2ea430f5a55581fb7cb8c9952663bc00b120bd..fa3c0e9933fea63f10c91f9714fb20e1b7cdbdc0 100644 (file)
@@ -1044,4 +1044,5 @@ global:
         sd_varlink_take_fd;
         sd_varlink_unref;
         sd_varlink_wait;
+        sd_device_monitor_is_running;
 } LIBSYSTEMD_256;
index 69d6864f0058f473032807bfc4c155c8b252b277..5881d02540d723e76e9819da318582993f304263 100644 (file)
@@ -246,6 +246,13 @@ _public_ int sd_device_monitor_new(sd_device_monitor **ret) {
         return device_monitor_new_full(ret, MONITOR_GROUP_UDEV, -EBADF);
 }
 
+_public_ int sd_device_monitor_is_running(sd_device_monitor *m) {
+        if (!m)
+                return 0;
+
+        return sd_event_source_get_enabled(m->event_source, NULL);
+}
+
 _public_ int sd_device_monitor_stop(sd_device_monitor *m) {
         assert_return(m, -EINVAL);
 
index 613e17a68ac04345094a45d882ce7c38fd9b0e8c..50505a5b121fcaaa26e6161757047cc1250ce38a 100644 (file)
@@ -99,6 +99,19 @@ static void send_by_enumerator(
         }
 }
 
+TEST(sd_device_monitor_is_running) {
+        _cleanup_(sd_device_monitor_unrefp) sd_device_monitor *m = NULL;
+
+        ASSERT_EQ(sd_device_monitor_is_running(NULL), 0);
+
+        ASSERT_OK(device_monitor_new_full(&m, MONITOR_GROUP_NONE, -1));
+        ASSERT_EQ(sd_device_monitor_is_running(m), 0);
+        ASSERT_OK(sd_device_monitor_start(m, NULL, NULL));
+        ASSERT_EQ(sd_device_monitor_is_running(m), 1);
+        ASSERT_OK(sd_device_monitor_stop(m));
+        ASSERT_EQ(sd_device_monitor_is_running(m), 0);
+}
+
 TEST(refuse_invalid_device) {
         _cleanup_(sd_device_monitor_unrefp) sd_device_monitor *monitor_server = NULL, *monitor_client = NULL;
         _cleanup_(sd_device_unrefp) sd_device *loopback = NULL;
index 4a14c39457399ee5e2efd4ca0fa99d438f180b42..40786fc1cdccb7d71fe03ed54b61ce37d4762db6 100644 (file)
@@ -149,6 +149,7 @@ sd_event *sd_device_monitor_get_event(sd_device_monitor *m);
 sd_event_source *sd_device_monitor_get_event_source(sd_device_monitor *m);
 int sd_device_monitor_set_description(sd_device_monitor *m, const char *description);
 int sd_device_monitor_get_description(sd_device_monitor *m, const char **ret);
+int sd_device_monitor_is_running(sd_device_monitor *m);
 int sd_device_monitor_start(sd_device_monitor *m, sd_device_monitor_handler_t callback, void *userdata);
 int sd_device_monitor_stop(sd_device_monitor *m);