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

函数中的函数?

    来源: 互联网  发布时间:2016-04-11

    本文导语:  static struct scull_dev *scull_c_lookfor_device(uid_t key) { struct scull_listitem *lptr; list_for_each_entry(lptr, &scull_c_list, list) { if (lptr->key == key) return &(lptr->device); } /* not found */ lptr = kmalloc(sizeof(struct scull_listitem), GFP_KERNEL); if...


static struct scull_dev *scull_c_lookfor_device(uid_t key)
{
struct scull_listitem *lptr;

list_for_each_entry(lptr, &scull_c_list, list) {
if (lptr->key == key)
return &(lptr->device);
}

/* not found */
lptr = kmalloc(sizeof(struct scull_listitem), GFP_KERNEL);
if (!lptr)
return NULL;

/* initialize the device */
memset(lptr, 0, sizeof(struct scull_listitem));
lptr->key = key;
scull_trim(&(lptr->device)); /* initialize it */
init_MUTEX(&(lptr->device.sem));

/* place it in the list */
list_add(&lptr->list, &scull_c_list);

return &(lptr->device);
}
/*
这个是 设备驱动开发 第三版 其中 实现 虚拟设备拷贝的其中一段代码~~
list_for_each_entry 这一句怎么理解 ? 
函数?宏?

|
直接看这本书(LDD3)的 " 11.5. Linked Lists "

Linux的链表有它的巧妙之处,你可以看到list_head结构里没有包含任何私有数据类型。

而是通过在某个用户的struct里包含 struct list_head变量,然后通过container_of
来找到list上的用户的struct。

#define list_entry(ptr, type, member) 
        container_of(ptr, type, member)

而container_of的实现利用编译器的特性。

你可以参考这里。
http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html


    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • cityhash 32位,64位和128位介绍及函数列表
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


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

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

    浙ICP备11055608号-3