lkml.org 
[lkml]   [2003]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] add seq file helpers from 2.5 (fwd)

    Viro,

    I think you are the right person to review that.

    Would you do me the favour?

    ---------- Forwarded message ----------
    Date: Wed, 09 Jul 2003 20:16:54 -0400
    From: Jeff Muizelaar <kernel@infidigm.net>
    To: Marcelo Tosatti <marcelo@conectiva.com.br>
    Subject: [PATCH] add seq file helpers from 2.5

    Marcelo,

    The attached patch adds the single_* helpers that have been in 2.5 since
    May 2002, it also adds some missing includes that are in 2.5.

    -Jeffdiff -urN linux-2.4.21-bk1/fs/seq_file.c linux-2.4.21-bk1-seq-file-single/fs/seq_file.c
    --- linux-2.4.21-bk1/fs/seq_file.c 2003-06-13 10:51:37.000000000 -0400
    +++ linux-2.4.21-bk1-seq-file-single/fs/seq_file.c 2003-07-09 20:06:25.000000000 -0400
    @@ -295,3 +295,45 @@
    m->count = m->size;
    return -1;
    }
    +
    +static void *single_start(struct seq_file *p, loff_t *pos)
    +{
    + return NULL + (*pos == 0);
    +}
    +
    +static void *single_next(struct seq_file *p, void *v, loff_t *pos)
    +{
    + ++*pos;
    + return NULL;
    +}
    +
    +static void single_stop(struct seq_file *p, void *v)
    +{
    +}
    +
    +int single_open(struct file *file, int (*show)(struct seq_file *, void*), void *data)
    +{
    + struct seq_operations *op = kmalloc(sizeof(*op), GFP_KERNEL);
    + int res = -ENOMEM;
    +
    + if (op) {
    + op->start = single_start;
    + op->next = single_next;
    + op->stop = single_stop;
    + op->show = show;
    + res = seq_open(file, op);
    + if (!res)
    + ((struct seq_file *)file->private_data)->private = data;
    + else
    + kfree(op);
    + }
    + return res;
    +}
    +
    +int single_release(struct inode *inode, struct file *file)
    +{
    + struct seq_operations *op = ((struct seq_file *)file->private_data)->op;
    + int res = seq_release(inode, file);
    + kfree(op);
    + return res;
    +}
    diff -urN linux-2.4.21-bk1/include/linux/seq_file.h linux-2.4.21-bk1-seq-file-single/include/linux/seq_file.h
    --- linux-2.4.21-bk1/include/linux/seq_file.h 2002-08-02 20:39:45.000000000 -0400
    +++ linux-2.4.21-bk1-seq-file-single/include/linux/seq_file.h 2003-07-06 08:57:25.000000000 -0400
    @@ -2,7 +2,13 @@
    #define _LINUX_SEQ_FILE_H
    #ifdef __KERNEL__

    +#include <linux/types.h>
    +#include <linux/string.h>
    +#include <asm/semaphore.h>
    +
    struct seq_operations;
    +struct file;
    +struct inode;

    struct seq_file {
    char *buf;
    @@ -52,5 +58,8 @@
    int seq_printf(struct seq_file *, const char *, ...)
    __attribute__ ((format (printf,2,3)));

    +
    +int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
    +int single_release(struct inode *, struct file *);
    #endif
    #endif
    \
     
     \ /
      Last update: 2005-03-22 13:46    [W:0.036 / U:4.368 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site