From 6a65ca35dd606eaa5f89691cd45c4ac329e25dda Mon Sep 17 00:00:00 2001 From: Johannes Lundberg Date: Thu, 16 May 2019 21:17:18 +0000 Subject: [PATCH] LinuxKPI: Finalize import of seq_file. seq_file.h and linux_seq_file.c was imported form ports earlier but linux_seq_file.c was never compiled in with the module. With this commit base seq_file will replace ports seq_file and it required a few modifications to not break functionality and build. Reviewed by: hps Approved by: imp (mentor), hps MFC after: 1 week --- .../linuxkpi/common/include/linux/seq_file.h | 23 ++++++++++++++++--- sys/modules/linuxkpi/Makefile | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/seq_file.h b/sys/compat/linuxkpi/common/include/linux/seq_file.h index 67e2ce0797e..dab8020a033 100644 --- a/sys/compat/linuxkpi/common/include/linux/seq_file.h +++ b/sys/compat/linuxkpi/common/include/linux/seq_file.h @@ -30,13 +30,29 @@ #ifndef _LINUX_SEQ_FILE_H_ #define _LINUX_SEQ_FILE_H_ +#include +#include #include -struct seq_operations; -struct linux_file; - +#undef file #define inode vnode +#define DEFINE_SHOW_ATTRIBUTE(__name) \ +static int __name ## _open(struct inode *inode, struct linux_file *file) \ +{ \ + return single_open(file, __name ## _show, inode->i_private); \ +} \ + \ +static const struct file_operations __name ## _fops = { \ + .owner = THIS_MODULE, \ + .open = __name ## _open, \ + .read = seq_read, \ + .llseek = seq_lseek, \ + .release = single_release, \ +} + +struct seq_operations; + struct seq_file { struct sbuf *buf; @@ -67,5 +83,6 @@ int single_release(struct inode *, struct linux_file *); #define seq_puts(m, str) sbuf_printf((m)->buf, str) #define seq_putc(m, str) sbuf_putc((m)->buf, str) +#define file linux_file #endif /* _LINUX_SEQ_FILE_H_ */ diff --git a/sys/modules/linuxkpi/Makefile b/sys/modules/linuxkpi/Makefile index 4a7e7544ae5..7eac41ab927 100644 --- a/sys/modules/linuxkpi/Makefile +++ b/sys/modules/linuxkpi/Makefile @@ -13,6 +13,7 @@ SRCS= linux_compat.c \ linux_pci.c \ linux_radix.c \ linux_rcu.c \ + linux_seq_file.c \ linux_schedule.c \ linux_slab.c \ linux_tasklet.c \