给globalmem驱动添加proc调试输出

本文详细介绍了在Ubuntu 10.04系统下,使用GCC编译器进行globalmem设备的读取操作实现过程,包括设备驱动的初始化、序列操作设置及与/proc目录交互的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



         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;
          }

================================分割线=====================

如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

john_liqinghan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值