sd-device-monitor: introduce sd_device_monitor_is_running()

This commit is contained in:
Yu Watanabe
2024-08-01 12:26:44 +09:00
parent f49faf0562
commit ece1e280ee
4 changed files with 22 additions and 0 deletions

View File

@@ -1044,4 +1044,5 @@ global:
sd_varlink_take_fd;
sd_varlink_unref;
sd_varlink_wait;
sd_device_monitor_is_running;
} LIBSYSTEMD_256;

View 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);

View 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;

View 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);