linux/include/linux/seq_file.h
<<
>>
Prefs
   1#ifndef _LINUX_SEQ_FILE_H
   2#define _LINUX_SEQ_FILE_H
   3
   4#include <linux/types.h>
   5#include <linux/string.h>
   6#include <linux/mutex.h>
   7#include <linux/cpumask.h>
   8#include <linux/nodemask.h>
   9
  10struct seq_operations;
  11struct file;
  12struct path;
  13struct inode;
  14struct dentry;
  15
  16struct seq_file {
  17        char *buf;
  18        size_t size;
  19        size_t from;
  20        size_t count;
  21        loff_t index;
  22        u64 version;
  23        struct mutex lock;
  24        const struct seq_operations *op;
  25        void *private;
  26};
  27
  28struct seq_operations {
  29        void * (*start) (struct seq_file *m, loff_t *pos);
  30        void (*stop) (struct seq_file *m, void *v);
  31        void * (*next) (struct seq_file *m, void *v, loff_t *pos);
  32        int (*show) (struct seq_file *m, void *v);
  33};
  34
  35#define SEQ_SKIP 1
  36
  37int seq_open(struct file *, const struct seq_operations *);
  38ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
  39loff_t seq_lseek(struct file *, loff_t, int);
  40int seq_release(struct inode *, struct file *);
  41int seq_escape(struct seq_file *, const char *, const char *);
  42int seq_putc(struct seq_file *m, char c);
  43int seq_puts(struct seq_file *m, const char *s);
  44
  45int seq_printf(struct seq_file *, const char *, ...)
  46        __attribute__ ((format (printf,2,3)));
  47
  48int seq_path(struct seq_file *, struct path *, char *);
  49int seq_dentry(struct seq_file *, struct dentry *, char *);
  50int seq_path_root(struct seq_file *m, struct path *path, struct path *root,
  51                  char *esc);
  52int seq_bitmap(struct seq_file *m, unsigned long *bits, unsigned int nr_bits);
  53static inline int seq_cpumask(struct seq_file *m, cpumask_t *mask)
  54{
  55        return seq_bitmap(m, mask->bits, NR_CPUS);
  56}
  57
  58static inline int seq_nodemask(struct seq_file *m, nodemask_t *mask)
  59{
  60        return seq_bitmap(m, mask->bits, MAX_NUMNODES);
  61}
  62
  63int seq_bitmap_list(struct seq_file *m, unsigned long *bits,
  64                unsigned int nr_bits);
  65
  66static inline int seq_cpumask_list(struct seq_file *m, cpumask_t *mask)
  67{
  68        return seq_bitmap_list(m, mask->bits, NR_CPUS);
  69}
  70
  71static inline int seq_nodemask_list(struct seq_file *m, nodemask_t *mask)
  72{
  73        return seq_bitmap_list(m, mask->bits, MAX_NUMNODES);
  74}
  75
  76int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
  77int single_release(struct inode *, struct file *);
  78void *__seq_open_private(struct file *, const struct seq_operations *, int);
  79int seq_open_private(struct file *, const struct seq_operations *, int);
  80int seq_release_private(struct inode *, struct file *);
  81
  82#define SEQ_START_TOKEN ((void *)1)
  83
  84/*
  85 * Helpers for iteration over list_head-s in seq_files
  86 */
  87
  88extern struct list_head *seq_list_start(struct list_head *head,
  89                loff_t pos);
  90extern struct list_head *seq_list_start_head(struct list_head *head,
  91                loff_t pos);
  92extern struct list_head *seq_list_next(void *v, struct list_head *head,
  93                loff_t *ppos);
  94
  95#endif
  96
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.