1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下。这个链表具备通用性,使用非常方便。只需要在结构定义一个 ...
分类:
系统相关 时间:
2016-05-11 21:52:52
阅读次数:
179
之所以要写本文,主要是当我看到Linux内核中链表的设计,让我叹为观止。Linux实现的方式与众不同,它不是将数据结构塞入链表中,而是将链表节点塞入数据结构中。在Linux源码中,链表在头文件中声明。它的节点的原型如下:struct list_head{ struct list_he...
分类:
系统相关 时间:
2015-04-04 18:15:40
阅读次数:
222
目录目录
简介
单向链表
双向链表
环形链表
Linux内核中的链表实现
offsetof
container_of
container_of 第一部分
container_of 第二部分
链表初始化
向链表中增加一个节点
删除节点
移动节点
判断链表是否为空
遍历链表
Demo测试
tlisth
mlistc
执行结果简介最近在学习Android Binder驱动程序实现的时候,发现里面的数据结构...
分类:
系统相关 时间:
2015-03-17 23:49:03
阅读次数:
662
hlist(哈希链表)可以通过相应的Hash算法,迅速找到相关的链表Head及节点.
在有些应用场景,比Go标准库提供的list(一种双向链表)更合适。
依照list.h中的源码,我实现了一个Go语言版本的hlist例子。
首先说下hlist的构成:
在hlist(哈希链表)中,
头结点使用struct hlist_head来表...
分类:
编程语言 时间:
2015-02-12 12:28:26
阅读次数:
286
本篇记录在学习Linux内核源码过程中对一些知道但不熟悉不会用的数据结构进行记录。
union
是在学习进程复制函数do_fork中遇到的:
union thread_union {
struct thread_info thread_info;
unsigned long stack[THREAD_SIZE/sizeof(long)];...
分类:
系统相关 时间:
2014-09-26 22:02:38
阅读次数:
298
本章主要是以代码的角度分析进程的定义、状态、数据结构等概念。
进程的定义
进程是一段运行的程序,他是一个动态的可执行实体。而程序是代码和数据的集合,代码是一个静态的实体,程序是可以供多个进程使用,比如相同的应用程序可以在不同的计算机上运行而产生多个进程。
进程四要素
进程四要素主要是针对代码中对线程、进程的区别而言:
l 有一段程序供其执行
l 有进程专...
分类:
系统相关 时间:
2014-09-09 12:47:28
阅读次数:
263
最近在看《Linux内核源代码情景分析》,作者毛德操。书中刚开始介绍了AT&T汇编语言与GCC内嵌汇编,以及Linux内核数据结构之链表。可惜书中介绍的不够全面。因为推荐大家阅读下面两篇文章。很不错。 AT&T汇编语言与GCC内嵌汇编:http://grid.hust.edu.cn/zyshao/Teaching_Material/OSEngineering/Chapter2.pdf...
分类:
编程语言 时间:
2014-08-27 16:45:38
阅读次数:
232
sk_buff整理笔记(一、数据结构)这一篇要讲的是内核为sk_buff结构提供的一些操作函数。...
分类:
其他好文 时间:
2014-08-21 00:16:13
阅读次数:
404
linux kernel/user mode data struct learning
分类:
系统相关 时间:
2014-08-02 12:33:23
阅读次数:
564