Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | #ifndef _LINUX_SEQ_FILE_H |
2 | #define _LINUX_SEQ_FILE_H |
||
3 | #ifdef __KERNEL__ |
||
4 | |||
5 | #include <linux/types.h> |
||
6 | #include <linux/string.h> |
||
7 | #include <asm/semaphore.h> |
||
8 | |||
9 | struct seq_operations; |
||
10 | struct file; |
||
11 | struct vfsmount; |
||
12 | struct dentry; |
||
13 | struct inode; |
||
14 | |||
15 | struct seq_file { |
||
16 | char *buf; |
||
17 | size_t size; |
||
18 | size_t from; |
||
19 | size_t count; |
||
20 | loff_t index; |
||
21 | struct semaphore sem; |
||
22 | struct seq_operations *op; |
||
23 | void *private; |
||
24 | }; |
||
25 | |||
26 | struct seq_operations { |
||
27 | void * (*start) (struct seq_file *m, loff_t *pos); |
||
28 | void (*stop) (struct seq_file *m, void *v); |
||
29 | void * (*next) (struct seq_file *m, void *v, loff_t *pos); |
||
30 | int (*show) (struct seq_file *m, void *v); |
||
31 | }; |
||
32 | |||
33 | int seq_open(struct file *, struct seq_operations *); |
||
34 | ssize_t seq_read(struct file *, char __user *, size_t, loff_t *); |
||
35 | loff_t seq_lseek(struct file *, loff_t, int); |
||
36 | int seq_release(struct inode *, struct file *); |
||
37 | int seq_escape(struct seq_file *, const char *, const char *); |
||
38 | |||
39 | static inline int seq_putc(struct seq_file *m, char c) |
||
40 | { |
||
41 | if (m->count < m->size) { |
||
42 | m->buf[m->count++] = c; |
||
43 | return 0; |
||
44 | } |
||
45 | return -1; |
||
46 | } |
||
47 | |||
48 | static inline int seq_puts(struct seq_file *m, const char *s) |
||
49 | { |
||
50 | int len = strlen(s); |
||
51 | if (m->count + len < m->size) { |
||
52 | memcpy(m->buf + m->count, s, len); |
||
53 | m->count += len; |
||
54 | return 0; |
||
55 | } |
||
56 | m->count = m->size; |
||
57 | return -1; |
||
58 | } |
||
59 | |||
60 | int seq_printf(struct seq_file *, const char *, ...) |
||
61 | __attribute__ ((format (printf,2,3))); |
||
62 | |||
63 | int seq_path(struct seq_file *, struct vfsmount *, struct dentry *, char *); |
||
64 | |||
65 | int single_open(struct file *, int (*)(struct seq_file *, void *), void *); |
||
66 | int single_release(struct inode *, struct file *); |
||
67 | int seq_release_private(struct inode *, struct file *); |
||
68 | |||
69 | #define SEQ_START_TOKEN ((void *)1) |
||
70 | |||
71 | #endif |
||
72 | #endif |