From 4230e09ffc207ef3369c98994400800410767165 Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Thu, 6 May 2021 23:51:00 +0900 Subject: [PATCH] lsfd: add the way to initialize and finalize classes Signed-off-by: Masatake YAMATO --- misc-utils/lsfd.c | 34 ++++++++++++++++++++++++++++++++++ misc-utils/lsfd.h | 2 ++ 2 files changed, 36 insertions(+) diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c index 42528a2089..dea7b32306 100644 --- a/misc-utils/lsfd.c +++ b/misc-utils/lsfd.c @@ -871,6 +871,36 @@ static void __attribute__((__noreturn__)) usage(void) exit(EXIT_SUCCESS); } +static void initialize_class(const struct file_class *class) +{ + if (class->initialize_class) + class->initialize_class(); +} + +static void initialize_classes(void) +{ + initialize_class(&file_class); + initialize_class(&cdev_class); + initialize_class(&bdev_class); + initialize_class(&sock_class); + initialize_class(&unkn_class); +} + +static void finalize_class(const struct file_class *class) +{ + if (class->finalize_class) + class->finalize_class(); +} + +static void finalize_classes(void) +{ + finalize_class(&file_class); + finalize_class(&cdev_class); + finalize_class(&bdev_class); + finalize_class(&sock_class); + finalize_class(&unkn_class); +} + int main(int argc, char *argv[]) { int c; @@ -964,6 +994,8 @@ int main(int argc, char *argv[]) scols_column_set_json_type(cl, col->json_type); } + initialize_classes(); + INIT_LIST_HEAD(&procs); collect(&procs, &ctl); @@ -973,6 +1005,8 @@ int main(int argc, char *argv[]) free_idcache(username_cache); + finalize_classes(); + return 0; } diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h index c7a81df960..754df17126 100644 --- a/misc-utils/lsfd.h +++ b/misc-utils/lsfd.h @@ -123,6 +123,8 @@ struct file { struct file_class { const struct file_class *super; size_t size; + void (*initialize_class)(void); + void (*finalize_class)(void); bool (*fill_column)(struct proc *proc, struct file *file, struct libscols_line *ln, -- 2.47.2