Saves 3.4k from my vmlinux. Thanks to Denis Vlasenko for performing the analysis. --- 25-akpm/fs/seq_file.c | 33 +++++++++++++++++++++++---------- 25-akpm/include/linux/seq_file.h | 23 ++--------------------- 2 files changed, 25 insertions(+), 31 deletions(-) diff -puN include/linux/seq_file.h~uninline-seqfns include/linux/seq_file.h --- 25/include/linux/seq_file.h~uninline-seqfns 2004-04-11 15:53:07.915107824 -0700 +++ 25-akpm/include/linux/seq_file.h 2004-04-11 15:53:36.599747096 -0700 @@ -35,27 +35,8 @@ ssize_t seq_read(struct file *, char __u loff_t seq_lseek(struct file *, loff_t, int); int seq_release(struct inode *, struct file *); int seq_escape(struct seq_file *, const char *, const char *); - -static inline int seq_putc(struct seq_file *m, char c) -{ - if (m->count < m->size) { - m->buf[m->count++] = c; - return 0; - } - return -1; -} - -static inline int seq_puts(struct seq_file *m, const char *s) -{ - int len = strlen(s); - if (m->count + len < m->size) { - memcpy(m->buf + m->count, s, len); - m->count += len; - return 0; - } - m->count = m->size; - return -1; -} +int seq_putc(struct seq_file *m, char c); +int seq_puts(struct seq_file *m, const char *s); int seq_printf(struct seq_file *, const char *, ...) __attribute__ ((format (printf,2,3))); diff -puN fs/seq_file.c~uninline-seqfns fs/seq_file.c --- 25/fs/seq_file.c~uninline-seqfns 2004-04-11 15:53:07.931105392 -0700 +++ 25-akpm/fs/seq_file.c 2004-04-11 15:56:24.427233440 -0700 @@ -37,7 +37,6 @@ int seq_open(struct file *file, struct s file->private_data = p; return 0; } - EXPORT_SYMBOL(seq_open); /** @@ -146,7 +145,6 @@ Efault: err = -EFAULT; goto Done; } - EXPORT_SYMBOL(seq_read); static int traverse(struct seq_file *m, loff_t offset) @@ -232,7 +230,6 @@ loff_t seq_lseek(struct file *file, loff up(&m->sem); return retval; } - EXPORT_SYMBOL(seq_lseek); /** @@ -250,7 +247,6 @@ int seq_release(struct inode *inode, str kfree(m); return 0; } - EXPORT_SYMBOL(seq_release); /** @@ -287,7 +283,6 @@ int seq_escape(struct seq_file *m, const m->count = p - m->buf; return 0; } - EXPORT_SYMBOL(seq_escape); int seq_printf(struct seq_file *m, const char *f, ...) @@ -307,7 +302,6 @@ int seq_printf(struct seq_file *m, const m->count = m->size; return -1; } - EXPORT_SYMBOL(seq_printf); int seq_path(struct seq_file *m, @@ -340,7 +334,6 @@ int seq_path(struct seq_file *m, m->count = m->size; return -1; } - EXPORT_SYMBOL(seq_path); static void *single_start(struct seq_file *p, loff_t *pos) @@ -377,7 +370,6 @@ int single_open(struct file *file, int ( } return res; } - EXPORT_SYMBOL(single_open); int single_release(struct inode *inode, struct file *file) @@ -387,7 +379,6 @@ int single_release(struct inode *inode, kfree(op); return res; } - EXPORT_SYMBOL(single_release); int seq_release_private(struct inode *inode, struct file *file) @@ -398,5 +389,27 @@ int seq_release_private(struct inode *in seq->private = NULL; return seq_release(inode, file); } - EXPORT_SYMBOL(seq_release_private); + +int seq_putc(struct seq_file *m, char c) +{ + if (m->count < m->size) { + m->buf[m->count++] = c; + return 0; + } + return -1; +} +EXPORT_SYMBOL(seq_putc); + +int seq_puts(struct seq_file *m, const char *s) +{ + int len = strlen(s); + if (m->count + len < m->size) { + memcpy(m->buf + m->count, s, len); + m->count += len; + return 0; + } + m->count = m->size; + return -1; +} +EXPORT_SYMBOL(seq_puts); _