environment:ubuntu 10.04
tools: gcc
platform: i386 machine
//===============================分割线==============================
int globalmem_read_procmem(char *buf, char**start, off_t offset,
int count, int *eof, void*data){
//inti, j, len = 0;
//intlimit = count - 80; /* Don't print more than this */
//structglobalmem_dev *d = globalmem_devp;
//*eof= 1;
return0;
}
//=================================分割线==============================
/*
*Here are our sequence iteration methods. Our "position" is
*simply the device number.
*/
staticvoid *globalmem_seq_start(struct seq_file *s, loff_t *pos){
if (*pos >= globalmem_nr_devs)
return NULL;/*No more to read */
return globalmem_devp + *pos;
}
//=================================分割线==============================
staticvoid *globalmem_seq_next(struct seq_file *s, void *v, loff_t *pos){
(*pos)++;
if(*pos >= globalmem_nr_devs)
returnNULL;
returnglobalmem_devp + *pos;
}
//=================================分割线==============================
static void globalmem_seq_stop(structseq_file *s, void *v){
/*Actually, there's nothing to do here */
}
//=================================分割线==============================
static int globalmem_seq_show(struct seq_file*s, void *v){
structglobalmem_dev *dev = (struct globalmem_dev *) v;
//structglobalmem_qset *d;
//inti;
//随便打印一些信息到/proc/globalmem文件中
seq_printf(s,"\nDevice %i: qset %i, q %i, sz %li\n",
(int)(dev - globalmem_devp), 800,
120,110);
return0;
}
//=================================分割线==============================
/*
*Tie the sequence operators up.
*/
staticstruct seq_operations globalmem_seq_ops = {
.start = globalmem_seq_start,
.next = globalmem_seq_next,
.stop = globalmem_seq_stop,
.show = globalmem_seq_show
};
//=================================分割线==============================
static int globalmem_proc_open(struct inode *inode, struct file *file) {
return seq_open(file, &globalmem_seq_ops);
}
/*
* Create a set of file operations for ourproc file.
*/
static struct file_operationsglobalmem_proc_ops = {
.owner = THIS_MODULE,
.open = globalmem_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = seq_release
};
//===========Createproc file ==================
staticvoid globalmem_create_proc(void){
struct proc_dir_entry *entry;
entry =create_proc_read_entry("globalmem", 0 /* default mode */,
NULL /* parent dir*/, globalmem_read_procmem,
NULL /* client data*/);
if (entry)
entry->proc_fops =&globalmem_proc_ops;
}
//省略代码是globalmem的代码
int globalmem_init(void){
//此处省略globalmem代码
globalmem_setup_cdev(globalmem_devp,0);
globalmem_create_proc();
return 0;
}
================================分割线=====================
如下: