不能再简化
1 #include<linux/module.h>
2 #include<linux/init.h>
3
4 #include<linux/seq_file.h>
5 #include<linux/fs.h>
6 #include <linux/proc_fs.h>
7 void * meng_seq_start(struct seq_file*s,loff_t*pos)
8 {
9 if(*pos>1)
10 return NULL;
11 return pos;
12 }
13
14 void * meng_seq_next(struct seq_file*s,void *v,loff_t*pos)
15 {
16 (*pos)++;
17 if(*pos>1)
18 return NULL;
19 return pos;
20 }
21
22 void meng_seq_stop(struct seq_file*s,void *v)
23 {
24 }
25 char *meng_seq_data[2]={"Hello.\n","This meng seq proc file.\n"};
26
27 int meng_seq_show(struct seq_file*s,void *v)
28 {
29 seq_printf(s,meng_seq_data[*((int*)v)]);
30 return 0;
31 }
32 struct seq_operations meng_seq_ops={
33 .start=meng_seq_start,
34 .next=meng_seq_next,
35 .stop=meng_seq_stop,
36 .show=meng_seq_show
37 };
38 int meng_seq_proc_seq_open(struct inode*inode,struct file*file)
39 {
40 return seq_open(file,&meng_seq_ops);
41 }
42
43 struct file_operations meng_seq_proc_ops=
44 {
45 .owner=THIS_MODULE,
46 .open=meng_seq_proc_seq_open,
47 .read=seq_read,
48 .llseek=seq_lseek,
49 .release=seq_release
50 };
51
52
53
54 int meng_seq_proc_init(void)
55 {
56 struct proc_dir_entry *entry=create_proc_entry("mengprocseq",0,NULL);
57 if(entry)
58 entry->proc_fops=&meng_seq_proc_ops;
59 return 0;
60 }
61
62
63 void meng_seq_proc_exit(void)
64 {
65 remove_proc_entry("mengprocseq",NULL);
66 }
67
68 module_init(meng_seq_proc_init);
69 module_exit(meng_seq_proc_exit);
时间: 2024-10-06 16:12:55