From cfb81f8959b67e678d01e3048a80871bbf6cc18d Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 27 May 2025 12:04:24 +0200 Subject: [PATCH] libmount: (monitor) support type-specific data Signed-off-by: Karel Zak --- libmount/src/monitor.c | 4 ++++ libmount/src/monitor.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/libmount/src/monitor.c b/libmount/src/monitor.c index 3044dcf68..55de02174 100644 --- a/libmount/src/monitor.c +++ b/libmount/src/monitor.c @@ -78,6 +78,10 @@ void free_monitor_entry(struct monitor_entry *me) { if (!me) return; + + if (me->opers->op_free_data) + me->opers->op_free_data(me); + list_del(&me->ents); if (me->fd >= 0) close(me->fd); diff --git a/libmount/src/monitor.h b/libmount/src/monitor.h index 6c6ba4450..38e3dfce8 100644 --- a/libmount/src/monitor.h +++ b/libmount/src/monitor.h @@ -14,6 +14,7 @@ struct monitor_entry { uint32_t events; /* wanted epoll events */ const struct monitor_opers *opers; + void *data; /* private type-specific data */ unsigned int enable : 1, changed : 1; @@ -33,6 +34,7 @@ struct libmnt_monitor { struct monitor_opers { int (*op_get_fd)(struct libmnt_monitor *, struct monitor_entry *); int (*op_close_fd)(struct libmnt_monitor *, struct monitor_entry *); + int (*op_free_data)(struct monitor_entry *); int (*op_event_verify)(struct libmnt_monitor *, struct monitor_entry *); }; -- 2.47.3