目录 1. 前言 2 2. 通用宏 2 2.1. typeof 2 2.1.1. 定义 3 2.1.2. 用途 3 2.1.3. 示例 3 2.2. offset_of 3 2.2.1. 定义 3 2.2.2. 作用 3 2.2.3. 原理 3 2.2.4. 示例 3 2.3. container_of 4 2.3.1. 定义 4 2.3.2. 作用 4 2.3.
原创 2012-04-04 23:16:00
654阅读
结构体有hlist_head和hlist_node,hlist指向hlist_node。linux内核中哈希表使用链接法实现哈希表,为什么要使用二级指针?
原创 2024-08-22 15:02:28
71阅读
这里只列出目录,全文请下载附件    目录 1. 前言 2 2. 通用宏 2 2.1. typeof 2 2.1.1. 定义 3 2.1.2. 用途 3 2.1.3. 示例 3 2.2. offset_of 3 2.2.1. 定义 3 2.2.2. 作用 3 2.2.3. 原理 3 2.2.4. 示例 3 2.3. container_of 4 2
原创 2012-04-04 23:18:42
822阅读
内核编程中哈希链表hlist使用非常多,比方在openvswitch中流表的存储中就使用了(见[1])。hlist的表头仅有一个指向首节点的指针。而没有指向尾节点的指针,这样在有非常多个buckets的HASH表中存储的表头就能降低一半的空间消耗。 和hlist相关的数据结构例如以下,桶中存储的
转载 2016-04-15 11:25:00
161阅读
Linux 内核学习笔记: hlist 的理解
原创 精选 2024-01-04 10:50:18
387阅读
   在linux内核中经常会看到这几个结构体:                           &nbs
原创 2014-10-17 10:43:50
9596阅读
1点赞
hlist(哈希链表)可以通过相应的Hash算法,迅速找到相关的链表Head及节点.在有些应用场景,比Go标准库提供的list(一种常见的双向链表)更合适。    依照list.h中的源码,我实现了一个Go语言版本的hlist例子。首先说下hlist的构成:            在hlist(哈希链表)中,            头结点使用struct hlist_head来表
原创 2023-01-31 09:48:15
108阅读
在上一篇中,我们详细介绍了list_head,这篇文我们介绍hlist_head、hlist_node
原创 2022-07-04 09:12:16
180阅读
1.哈希链表的定义 与普通双向链表struct list_head不同,哈希链表将头结点和普通节点分开定义 // 普通双向链表 struct list_head { struct list_head *next, *prev; }; // 哈希链表 struct hlist_head { struct hlist_node *first; }; struct hlist_node { s
Linux内核的特点: 结合了unix操作系统的一些基础概念Linux内核的任务: 1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。 2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。 3.内核是一个资源管理程序。负责将可用的
hlist原本是定义在内核list.h里面的结构体,主要用在解决哈希表冲突时使用链接(chaining)方法时候用到的结构体。结构体定义简单、相关的接口也比较丰富,可以直接拿到用户层使用。最常见的一种使用场景如下图:htable是hash数组,每个数组元素是一个hlist_head结构体。当多个结点的hash key值相同时,直接添加在对应的结点链表里就可以了。下面介绍相关数据结构和操作接口使用。...
原创 2021-09-02 16:57:38
2207阅读
1点赞
一:内核编译前准备 (一)查看使用的操作系统版本 hostnamectl (二)下载Linux内核源码包(含疑惑) 原本打算使用低版本的Linux内核进行实验,但是编译完成了几个3.X版本以后发现总是出现CPU死机或者无法开机情况,所以这里还是先用与原系统内核的版本相近的进行编译(占了近20G空间)
转载 2020-09-10 19:10:00
828阅读
1点赞
2评论
01Linux的基础一、Linux内核的特征1、linux内核组织形式为整体式结构2、进程调度方式简单有效3、支持内核线程(或称为守护进程)4、支持多种平台的虚拟内存管理5、虚拟文件系统6、模块机制(使内核之间相互独立,方便模块的移植)7、增加了系统调用1.Linux内核在系统中的位置2.Linux内核子系统之间的管理主要由五部分组成3.系统数据结构task_struct、mm_struct、in
线程分类:内核线程、用户线程(指不需要内核支持而完全建立在用户空间的线程库,这种线程效率高,由于Linux内核没有轻量级进程(线程)的概念,因此不能独立的对用户线程进行调度,而是由一个线程运行库来组织线程的调度)和轻量级线程(内核线程的高级抽象,大多数操作涉及到系统调用,效率不高)。 传统的Unix系统把一些重要的任务委托给周期性的执行进程,这些任务包括刷新磁盘高速缓存,交换出不用的页框,维护网络连接等。这些线程只运行在内核态(普通进程既可以运行在内核态,也可以运行在用户态),内核线程只运行在内核态,所以只使用大于PAGE_OFFSET的线性地址空间。现代操作系统把它们的函数委托...
转载 2013-07-05 22:18:00
1052阅读
2评论
1:关于Linux内核的问题,首先我们要理解什么是Linux内核?所谓Linux内核内核是指的提供硬件抽象层,磁盘和文件系统控制、多任务等功能的系统软件。一个内核并不是一个完整的操作系统。一个基于Linux内核的完整操作系统才叫做Linux操作系统,or GUN/Linux。<从上面的定义上来说,内核其实也就是一个系统软件,它能够提供硬件抽象、磁盘和文件控制等功能的软件。>2:关于L
转载 2024-05-10 11:24:39
100阅读
使用 Linux 系统调用的内核命令探究 SCI 并添加自己的调用级别: 中级M. Tim Jones (mtj@mtjones.com ), 顾问工程师, Emulex2007 年 4 月 17 日Linux® 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux 系统调用接口(SCI),学习如
红帽公司是一家专注于开源技术的公司,其成立于1993年,总部位于美国北卡罗来纳州罗利。红帽公司以其广泛采用的操作系统 Red Hat Enterprise Linux(RHEL)而闻名,该操作系统基于开源的 Linux 内核Linux 内核在移动设备领域也有着重要的地位,其中的 Android 内核就是基于 Linux 内核开发的。因此,我们不妨深入探讨一下 Android 内核Linux
原创 2024-03-19 09:14:43
209阅读
文章目录​​一、下载 Linux 内核源码​​​​二、使用 VSCode 阅读 Linux 内核源码​​ 一、下载 Linux 内核源码参考 ​​【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )​​ 博客 , 下载 Linux 5.6.18 版本的内核源码 ;​5.x
原创 2022-03-30 11:08:42
2458阅读
在接口总线领域的最新的一项是外部总线的整个类. 这包括 USB, 固件, 和 IEEE1284(基 于并口的外部总线). 这些接口有些类似于老的非外部的技术, 例如 PCMCIA/CardBus 和 甚至 SCSI. 概念上, 这些总线既不是全特性的接口总线(象 PCI 就是)也不是哑通讯通道(例如
转载 2019-07-07 18:42:00
166阅读
2评论
linux内核相关视频解析:5个方面分析linux内核架构,让你对内核不再陌生90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理手把手带你实现一个Linux内核文件系统 https://blog.csdn.net/qq_40989769/article/detail ...
转载 2021-07-24 10:37:00
310阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5