Blackfin: convert /proc/sram to seq_file
authorAlexey Dobriyan <adobriyan@gmail.com>
Sat, 14 May 2011 16:51:54 +0000 (19:51 +0300)
committerMike Frysinger <vapier@gentoo.org>
Wed, 25 May 2011 12:24:13 +0000 (08:24 -0400)
->read_proc interface is going away, switch to seq_file.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/mm/sram-alloc.c

index dfd304a..29d98fa 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/init.h>
 #include <linux/poll.h>
 #include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 #include <linux/spinlock.h>
 #include <linux/rtc.h>
 #include <linux/slab.h>
@@ -764,7 +765,7 @@ EXPORT_SYMBOL(sram_alloc_with_lsl);
 /* Need to keep line of output the same.  Currently, that is 44 bytes
  * (including newline).
  */
-static int _sram_proc_read(char *buf, int *len, int count, const char *desc,
+static int _sram_proc_show(struct seq_file *m, const char *desc,
                struct sram_piece *pfree_head,
                struct sram_piece *pused_head)
 {
@@ -773,13 +774,13 @@ static int _sram_proc_read(char *buf, int *len, int count, const char *desc,
        if (!pfree_head || !pused_head)
                return -1;
 
-       *len += sprintf(&buf[*len], "--- SRAM %-14s Size   PID State     \n", desc);
+       seq_printf(m, "--- SRAM %-14s Size   PID State     \n", desc);
 
        /* search the relevant memory slot */
        pslot = pused_head->next;
 
        while (pslot != NULL) {
-               *len += sprintf(&buf[*len], "%p-%p %10i %5i %-10s\n",
+               seq_printf(m, "%p-%p %10i %5i %-10s\n",
                        pslot->paddr, pslot->paddr + pslot->size,
                        pslot->size, pslot->pid, "ALLOCATED");
 
@@ -789,7 +790,7 @@ static int _sram_proc_read(char *buf, int *len, int count, const char *desc,
        pslot = pfree_head->next;
 
        while (pslot != NULL) {
-               *len += sprintf(&buf[*len], "%p-%p %10i %5i %-10s\n",
+               seq_printf(m, "%p-%p %10i %5i %-10s\n",
                        pslot->paddr, pslot->paddr + pslot->size,
                        pslot->size, pslot->pid, "FREE");
 
@@ -798,54 +799,62 @@ static int _sram_proc_read(char *buf, int *len, int count, const char *desc,
 
        return 0;
 }
-static int sram_proc_read(char *buf, char **start, off_t offset, int count,
-               int *eof, void *data)
+static int sram_proc_show(struct seq_file *m, void *v)
 {
-       int len = 0;
        unsigned int cpu;
 
        for (cpu = 0; cpu < num_possible_cpus(); ++cpu) {
-               if (_sram_proc_read(buf, &len, count, "Scratchpad",
+               if (_sram_proc_show(m, "Scratchpad",
                        &per_cpu(free_l1_ssram_head, cpu), &per_cpu(used_l1_ssram_head, cpu)))
                        goto not_done;
 #if L1_DATA_A_LENGTH != 0
-               if (_sram_proc_read(buf, &len, count, "L1 Data A",
+               if (_sram_proc_show(m, "L1 Data A",
                        &per_cpu(free_l1_data_A_sram_head, cpu),
                        &per_cpu(used_l1_data_A_sram_head, cpu)))
                        goto not_done;
 #endif
 #if L1_DATA_B_LENGTH != 0
-               if (_sram_proc_read(buf, &len, count, "L1 Data B",
+               if (_sram_proc_show(m, "L1 Data B",
                        &per_cpu(free_l1_data_B_sram_head, cpu),
                        &per_cpu(used_l1_data_B_sram_head, cpu)))
                        goto not_done;
 #endif
 #if L1_CODE_LENGTH != 0
-               if (_sram_proc_read(buf, &len, count, "L1 Instruction",
+               if (_sram_proc_show(m, "L1 Instruction",
                        &per_cpu(free_l1_inst_sram_head, cpu),
                        &per_cpu(used_l1_inst_sram_head, cpu)))
                        goto not_done;
 #endif
        }
 #if L2_LENGTH != 0
-       if (_sram_proc_read(buf, &len, count, "L2", &free_l2_sram_head,
-               &used_l2_sram_head))
+       if (_sram_proc_show(m, "L2", &free_l2_sram_head, &used_l2_sram_head))
                goto not_done;
 #endif
-       *eof = 1;
  not_done:
-       return len;
+       return 0;
+}
+
+static int sram_proc_open(struct inode *inode, struct file *file)
+{
+       return single_open(file, sram_proc_show, NULL);
 }
 
+static const struct file_operations sram_proc_ops = {
+       .open           = sram_proc_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+       .release        = single_release,
+};
+
 static int __init sram_proc_init(void)
 {
        struct proc_dir_entry *ptr;
-       ptr = create_proc_entry("sram", S_IFREG | S_IRUGO, NULL);
+
+       ptr = proc_create("sram", S_IRUGO, NULL, &sram_proc_ops);
        if (!ptr) {
                printk(KERN_WARNING "unable to create /proc/sram\n");
                return -1;
        }
-       ptr->read_proc = sram_proc_read;
        return 0;
 }
 late_initcall(sram_proc_init);