From: Masatake YAMATO Date: Thu, 6 May 2021 14:51:00 +0000 (+0900) Subject: lsfd: add the way to initialize and finalize classes X-Git-Tag: v2.38-rc1~144^2~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4230e09ffc207ef3369c98994400800410767165;p=thirdparty%2Futil-linux.git lsfd: add the way to initialize and finalize classes Signed-off-by: Masatake YAMATO --- 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,