From: Masatake YAMATO Date: Sat, 4 Mar 2023 04:37:20 +0000 (+0900) Subject: lsfd: add a helper function, new_ipc X-Git-Tag: v2.40-rc1~458^2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=79ec864eaa70bf49687183fb17daeae543ceaa1b;p=thirdparty%2Futil-linux.git lsfd: add a helper function, new_ipc Signed-off-by: Masatake YAMATO --- diff --git a/misc-utils/lsfd-fifo.c b/misc-utils/lsfd-fifo.c index aea143c7e5..704bc06da4 100644 --- a/misc-utils/lsfd-fifo.c +++ b/misc-utils/lsfd-fifo.c @@ -107,6 +107,7 @@ static bool fifo_is_suitable_ipc(struct ipc *ipc, struct file *file) static const struct ipc_class *fifo_get_ipc_class(struct file *file __attribute__((__unused__))) { static const struct ipc_class fifo_ipc_class = { + .size = sizeof(struct fifo_ipc), .get_hash = fifo_get_hash, .is_suitable_ipc = fifo_is_suitable_ipc, .free = NULL, @@ -125,10 +126,7 @@ static void fifo_initialize_content(struct file *file) if (ipc) goto link; - ipc = xmalloc(sizeof(struct fifo_ipc)); - ipc->class = fifo_get_ipc_class(file); - INIT_LIST_HEAD(&ipc->endpoints); - INIT_LIST_HEAD(&ipc->ipcs); + ipc = new_ipc(fifo_get_ipc_class(file)); ((struct fifo_ipc *)ipc)->ino = file->stat.st_ino; hash = fifo_get_hash(file); diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c index 6d7fd13f3c..cdfe311b9d 100644 --- a/misc-utils/lsfd.c +++ b/misc-utils/lsfd.c @@ -1062,6 +1062,15 @@ static void finalize_ipc_table(void) list_free(&ipc_table.tables[i], struct ipc, ipcs, free_ipc); } +struct ipc *new_ipc(const struct ipc_class *class) +{ + struct ipc *ipc = xcalloc(1, class->size); + ipc->class = class; + INIT_LIST_HEAD(&ipc->endpoints); + INIT_LIST_HEAD(&ipc->ipcs); + return ipc; +} + struct ipc *get_ipc(struct file *file) { int slot; diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h index aec2c7a57e..5a1cc9891b 100644 --- a/misc-utils/lsfd.h +++ b/misc-utils/lsfd.h @@ -203,11 +203,13 @@ struct ipc_endpoint { }; struct ipc_class { + size_t size; unsigned int (*get_hash)(struct file *file); bool (*is_suitable_ipc)(struct ipc *ipc, struct file *file); void (*free)(struct ipc *ipc); }; +struct ipc *new_ipc(const struct ipc_class *class); struct ipc *get_ipc(struct file *file); void add_ipc(struct ipc *ipc, unsigned int hash);