深入浅出Linux之内核数据结构

转载 2015年11月18日 22:18:34
内核使用的数据结构有双向链表,单向链表和hash链表。另外,基树和红黑树也是内核使用的数据结构。实际上,这也是程序代码中通常使用的数据结构,一些偏僻难的数据结构并不常见。

1. container

  container是linux很重要的一个概念。有了container方法,才能实现对对象的封装。

  分析一下container方法。

======================================================================

#define container_of(ptr, type, member) ({               \

        const typeof( ((type *)0)->member ) *__mptr = (ptr);      \

        (type *)( (char *)__mptr - offsetof(type,member) );})

  这个方法巧妙的实现了通过结构的一个成员及成员指针找到整个结构的地址。有了container方法,list才

成为了一个通用的数据结构,通过container方法,还可以实现内核的封装,程序之间不暴露

内部的数据。

相关文章推荐

linux内核数据结构之链表

转载自:http://www.cnblogs.com/Anker/archive/2013/12/15/3475643.html 1、前言    最近写代码需用到链表结构,正好...

Linux内核中的FILE文件数据结构和dup,dup2函数

内核中的数据结构和dup,dup2函数首先介绍一下内核数据结构:一个打开的文件在内核中使用三种数据结构表示: 文件描述符表 文件描述符标识 文件表项指针 ...

linux内核数据结构之kfifo

1、前言  最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A...

Linux内核中的一些基本数据结构操作

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn:yfydz_no1@hotmail.com来源:http://yf...

linux内核数据结构之等待队列

Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。 在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t...

linux内核数据结构

内容来源于网络!struct list_head { struct list_head *next, *prev; }; 这里的list_head没有数据域,在...

Linux内核源码学习之 数据结构

本篇记录在学习Linux内核源码过程中对一些知道但不熟悉不会用的数据结构进行记录。 union 是在学习进程复制函数do_fork中遇到的:   union thread_union {       ...

Linux内核数据结构(2.6.32.27)链表

Linux内核双向链表的实现不是将结构嵌入链表,而是将链表节点嵌入结构 /* * Simple doubly linked list implementation. * * Some of ...

linux内核数据结构之双向循环链表struct list_head(一)

链表对每位写过程序的同学都再熟悉不过了,无非是对链表的创建、初始化、插入、删除、遍历等操作。但您是否想过如果针对每一种数据结构都实现一套对链表操作的服务原语是否太浪费时间和精力了,实际上在linux内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)