当前位置:  技术问答>linux和unix

ldd 3rd 程序代码疑问

    来源: 互联网  发布时间:2016-09-24

    本文导语:  hi all: 在看ldd(3rd)的时候有一段代码: int scull_trim(struct scull_dev *dev) {     struct scull_qset *next, *dptr;     int qset = dev->qset;     /* "dev" is not-null */     int i;     for (dptr = dev->data; dptr; dptr = next) { /*...

hi all:
在看ldd(3rd)的时候有一段代码:

int scull_trim(struct scull_dev *dev)
{
    struct scull_qset *next, *dptr;
    int qset = dev->qset;
    /* "dev" is not-null */
    int i;

    for (dptr = dev->data; dptr; dptr = next) { /* all the list items */
    if (dptr->data) {
        for (i = 0; i data[i]);
        kfree(dptr->data);
        dptr->data = NULL;
    }
    next = dptr->next;
    kfree(dptr);
    }
    dev->size = 0;
    dev->quantum = scull_quantum;
    dev->qset = scull_qset;
    dev->data = NULL;
    return 0;
}

疑问:next初始化为空,怎么还放在for循环里呢?
本来怀疑是不是源码代也的有误,但是看到网上更新的代码也是一样的。估计这么写还是有原因的
请大家指示啊。。。

|
  for (dptr = dev->data; dptr; dptr = next) { /* all the list items */
  if (dptr->data) {
  for (i = 0; i data[i]);
  kfree(dptr->data);
  dptr->data = NULL;
  }
  next = dptr->next;  //这里还有一句啊,dptr = next在循环的最后运行



整个代码就是遍历所有链表,并且释放链表的空间的吧,你看人家函数名字就知道了scull_trim



|


正解

|
没错的,功能是遍历所有链表并释放空间

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有关ldd中字符驱动程序的scull_devices
  • ldd3中的scull驱动程序应该如何测试?
  • 为什么在cygwin 中使用 ldd 出现conmand not found 的提示呢?
  • 请问哪有LDD3中文影印版下载呀
  • 寻找学习ldd3的同志
  • 请教ldd3的驱动挂载问题!
  • ldd3书中的一个问题
  • 关于ldd3中的例子scull中的pipe和access iis7站长之家
  • 有没有那位大虾在redhat9.0下测试过ldd2里面的例子?!
  • 有关LDD3中的faulty.c的问题
  • LDD3网上下的实例源码哪个是第三章的啊?
  • 关于ldd命令
  • 请问LDD3中的 simple_nopage_mmap 函数的一些问题
  • so共享库与ldd的简单问题(我不会)
  • 关于ldd3中的例子scull中的pipe和access
  • lkd,ulk,ldd,《完全注释(剖析)》,《情景分析》这几本书该按什么顺序看?
  • ldd3: 禁止了中断,是不是就没有系统滴答了?
  • LDD3 阅读理解问题
  • ldd2中scull设备例子中makefile文件的问题
  • LDD3中的sbull驱动make不能通过
  • 在rh9.0编译ldd2中例子scull文件成功的帮忙看一下!
  • LDD3中scull编译报错


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3