1 Star 0 Fork 101

chenjiayi/systemd

forked from src-openEuler/systemd 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
backport-udev-introduce-device_broadcast_helper_function.patch 2.78 KB
一键复制 编辑 原始数据 按行查看 历史
From c17ab900cbb47f0c136b141bb83557f112501707 Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Fri, 25 Mar 2022 02:33:55 +0900
Subject: [PATCH] udev: introduce device_broadcast() helper function
Reference:https://github.com/systemd/systemd/commit/c17ab900cbb47f0c136b141bb83557f112501707
Conflict:NA
---
src/udev/udevd.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 05397df7a429..53728c9f7971 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -344,6 +344,21 @@ static int on_kill_workers_event(sd_event_source *s, uint64_t usec, void *userda
return 1;
}
+static void device_broadcast(sd_device_monitor *monitor, sd_device *dev) {
+ int r;
+
+ assert(dev);
+
+ /* On exit, manager->monitor is already NULL. */
+ if (!monitor)
+ return;
+
+ r = device_monitor_send_device(monitor, NULL, dev);
+ if (r < 0)
+ log_device_warning_errno(dev, r,
+ "Failed to broadcast event to libudev listeners, ignoring: %m");
+}
+
static int worker_send_message(int fd) {
WorkerMessage message = {};
@@ -558,9 +573,7 @@ static int worker_device_monitor_handler(sd_device_monitor *monitor, sd_device *
log_device_warning_errno(dev, r, "Failed to process device, ignoring: %m");
/* send processed event back to libudev listeners */
- r = device_monitor_send_device(monitor, NULL, dev);
- if (r < 0)
- log_device_warning_errno(dev, r, "Failed to send device, ignoring: %m");
+ device_broadcast(monitor, dev);
}
/* send udevd the result of the event execution */
@@ -1426,13 +1439,8 @@ static int on_sigchld(sd_event_source *s, const struct signalfd_siginfo *si, voi
device_delete_db(worker->event->dev);
device_tag_index(worker->event->dev, NULL, false);
- if (manager->monitor) {
- /* Forward kernel event to libudev listeners */
- r = device_monitor_send_device(manager->monitor, NULL, worker->event->dev);
- if (r < 0)
- log_device_warning_errno(worker->event->dev, r,
- "Failed to broadcast failed event to libudev listeners, ignoring: %m");
- }
+ /* Forward kernel event to libudev listeners */
+ device_broadcast(manager->monitor, worker->event->dev);
}
worker_free(worker);
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jiayi0118/systemd.git
git@gitee.com:jiayi0118/systemd.git
jiayi0118
systemd
systemd
master

搜索帮助

371d5123 14472233 46e8bd33 14472233