udev: merge manager_clear_for_worker() with manager_free()

The function manager_clear_for_worker() is now not called by workers,
and only called from manager_free(). Let's merge them.

This also drops unused Manager.rtnl, and outdated comment in
event_free().
This commit is contained in:
Yu Watanabe
2023-07-31 23:23:00 +09:00
parent 987b90f93f
commit 8ebc7314e8
+9 -28
View File
@@ -51,7 +51,6 @@
#include "list.h"
#include "main-func.h"
#include "mkdir.h"
#include "netlink-util.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
@@ -104,8 +103,6 @@ typedef struct Manager {
UdevRules *rules;
Hashmap *properties;
sd_netlink *rtnl;
sd_device_monitor *monitor;
UdevCtrl *ctrl;
int worker_watch[2];
@@ -184,8 +181,6 @@ static Event *event_free(Event *event) {
LIST_REMOVE(event, event->manager->events, event);
sd_device_unref(event->dev);
/* Do not use sd_event_source_disable_unref() here, as this is called by both workers and the
* main process. */
sd_event_source_unref(event->retry_event_source);
sd_event_source_unref(event->timeout_warning_event);
sd_event_source_unref(event->timeout_event);
@@ -222,43 +217,29 @@ static Worker *worker_free(Worker *worker) {
DEFINE_TRIVIAL_CLEANUP_FUNC(Worker*, worker_free);
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(worker_hash_op, void, trivial_hash_func, trivial_compare_func, Worker, worker_free);
static void manager_clear_for_worker(Manager *manager) {
assert(manager);
/* Do not use sd_event_source_disable_unref() here, as this is called by both workers and the
* main process. */
manager->inotify_event = sd_event_source_unref(manager->inotify_event);
manager->kill_workers_event = sd_event_source_unref(manager->kill_workers_event);
manager->event = sd_event_unref(manager->event);
manager->workers = hashmap_free(manager->workers);
event_queue_cleanup(manager, EVENT_UNDEF);
manager->monitor = sd_device_monitor_unref(manager->monitor);
manager->ctrl = udev_ctrl_unref(manager->ctrl);
manager->worker_watch[READ_END] = safe_close(manager->worker_watch[READ_END]);
}
static Manager* manager_free(Manager *manager) {
if (!manager)
return NULL;
udev_builtin_exit();
manager_clear_for_worker(manager);
sd_netlink_unref(manager->rtnl);
hashmap_free_free_free(manager->properties);
udev_rules_free(manager->rules);
hashmap_free(manager->workers);
event_queue_cleanup(manager, EVENT_UNDEF);
safe_close(manager->inotify_fd);
safe_close_pair(manager->worker_watch);
sd_device_monitor_unref(manager->monitor);
udev_ctrl_unref(manager->ctrl);
sd_event_source_unref(manager->inotify_event);
sd_event_source_unref(manager->kill_workers_event);
sd_event_source_unref(manager->memory_pressure_event_source);
sd_event_source_unref(manager->sigrtmin18_event_source);
sd_event_unref(manager->event);
free(manager->cgroup);
return mfree(manager);