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

LDD3的scull代码问题

    来源: 互联网  发布时间:2016-01-20

    本文导语:  struct scull_qset *scull_follow(struct scull_dev *dev, int n) ...{     struct scull_qset *qs = dev->data;         /**//* Allocate first qset explicitly if need be */     if (! qs) ...{         qs = dev->data = kmalloc(sizeof(struct sc...

struct scull_qset *scull_follow(struct scull_dev *dev, int n)
...{
    struct scull_qset *qs = dev->data;

        /**//* Allocate first qset explicitly if need be */
    if (! qs) ...{
        qs = dev->data = kmalloc(sizeof(struct scull_qset), GFP_KERNEL);
        if (qs == NULL)
            return NULL;  /**//* Never mind */
        memset(qs, 0, sizeof(struct scull_qset));
    }

    /**//* Then follow the list */
    while (n--) ...{
        if (!qs->next) ...{
            qs->next = kmalloc(sizeof(struct scull_qset), GFP_KERNEL);
            if (qs->next == NULL)
                return NULL;  /**//* Never mind */
            memset(qs->next, 0, sizeof(struct scull_qset));
        }
        qs = qs->next;
        continue;
    }
    return qs;
}

为什么qs分配了内存,没有看到有释放?

|
这个driver就是一个虚拟内存的driver。其实是先有设备接点,然后当调用write的时候如果没有内存就分配他,相应的在read/write中有。而当cleanup是会完全卸载设备接点。具体你把整个代码看完应该能看到free的地方。

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












  • 相关文章推荐
  • 关于ldd3中的例子scull中的pipe和access
  • LDD3中scull编译报错
  • LDD3中scull的例子
  • LDD3中SCULL问题 iis7站长之家
  • 寻找学习ldd3的同志
  • 请问哪有LDD3中文影印版下载呀
  • LDD3网上下的实例源码哪个是第三章的啊?
  • ldd3: 禁止了中断,是不是就没有系统滴答了?
  • LDD3中的sbull驱动make不能通过
  • ldd3中的“重定向控制台消息”,老是错误,为啥????
  • ldd3的hello world编译出错
  • ldd3中的一点疑惑
  • ldd3中的hello world驱动程序的疑问???
  • 学习ldd3时按照书上的路径很多文件都找不到,谢谢
  • 根据LDD3 编写一个简单LED控制灯的驱动
  • LDD3 分配和释放设备编号的疑惑


  • 站内导航:


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

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

    浙ICP备11055608号-3