
Linux kernel
风中1匹狼
Live is fucking movie
展开
-
linux内核中likely与unlikely【转】
(转自:https://blog.youkuaiyun.com/u014470361/article/details/81193023)前言 内核版本:linux 4.13 在linux内核中,经常可以看见if( likely(x))或if( unlikely(x))语句,那么likely和unlikely是什么意思呢?本文将对likely和unlikely进行一些讨论。likely和unlikely参考/include/linux/compiler.h */# define likely(转载 2020-09-12 09:32:26 · 241 阅读 · 0 评论 -
Linux内核之pid为0和pid为1【转】
(转自:https://blog.youkuaiyun.com/jingyilin2008/article/details/7815508?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159222398219725222455913%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159222398219725222455913&biz_转载 2020-06-22 13:34:31 · 1915 阅读 · 0 评论 -
设备驱动程序简介【转】
(转自:https://www.cnblogs.com/microxiami/p/11254081.html)更多内容请参考Linux设备驱动程序学习----目录1. 简介 Linux系统的优点是,系统内部实现细节对所有人都是公开的。Linux内核由大量复杂的代码组成,设备驱动程序可以作为进入Linux内核世界大门的切入口。 设备驱动程序在Linux内核中,是一个个独立的黑盒子,在调用内部接口时某个特定硬件做出响应,这些接口隐藏了设备的工作细节。用户的操作通过独立于特定驱动程序的一组标准转载 2020-05-09 10:45:03 · 522 阅读 · 0 评论 -
详解likely和unlikely函数【转】
(转自:https://blog.youkuaiyun.com/npy_lp/article/details/7175517)内核源码:linux-2.6.38.8.tar.bz2 参考文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Other-Builtins.html#Other-Builtins 在Linux内核中likel...转载 2018-09-16 22:13:49 · 934 阅读 · 0 评论 -
Linux 设备驱动开发 —— platform设备驱动应用实例解析【转】
原文:https://blog.youkuaiyun.com/zqixiao_09/article/details/50888795转载 2018-08-04 10:47:48 · 401 阅读 · 0 评论 -
LINUX设备驱动模型之PLATFORM(平台)总线详解【转】
(转自:https://www.cnblogs.com/deng-tao/p/6026373.html)/********************************************************/内核版本:2.6.35.7运行平台:三星s5pv210/******************************************************...转载 2018-08-07 08:39:31 · 520 阅读 · 0 评论 -
linux双向链表分析之list_del中的技巧【转】
(转自:https://blog.youkuaiyun.com/z2007b/article/details/6370383)linux内核的双向链表是比较经典的东西,网上分析链表的同志基本分析了99%,就差了1%。那就是list_del函数。先给出函数原型:#ifdef CONFIG_ILLEGAL_POINTER_VALUE# define POISON_POINTER_DELTA _AC(C...转载 2018-08-02 22:29:31 · 3711 阅读 · 1 评论 -
list_for_each与list_for_each_entry【转】
(转自:https://blog.youkuaiyun.com/u011913612/article/details/45972815)分析的结果:1.list_for_each和list_for_each_entry都是遍历链表的两个宏,本质上都是for循环。2.他们做的事情本质上都一样,A.获取链表头,B.判断链表项是不是链表头,C.指向链表的下一项。3.他们的区别:list_for_each遍...转载 2018-08-02 22:23:59 · 5499 阅读 · 0 评论 -
linux内核中异步通信机制--信号处理机制【转】
(转自:https://blog.youkuaiyun.com/lu_embedded/article/details/51131663) 什么是异步通信?很简单,一旦设备准备好,就主动通知应用程序,这种情况下应用程序就不需要查询设备状态,就像硬件上常提的“中断的概念”。比较准确的说法其实应该叫做“信号驱动的异步I/O”,信号是在软件层次上对中断机制的一种模拟。阻塞I/O意味着一直等待设备可访问再访问,非...转载 2018-05-02 22:31:08 · 240 阅读 · 0 评论 -
Linux内核【链表】整理笔记(1)【转】
转自:http://blog.chinaunix.net/uid-23069658-id-4576255.html我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样。Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸如节点的插入、删除、遍历等操作了。当然,Linux也是从2.1.x内核开始才对链表...转载 2018-04-03 00:14:54 · 203 阅读 · 0 评论 -
Linux内核【链表】整理笔记(2) 【转】
转自:http://blog.chinaunix.net/uid-23069658-id-4725279.html关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型。至于链表的遍历,内核也有一组基本的接口(其实都是宏定义的)供开发者调用。 首先是list_for...转载 2018-04-03 00:13:39 · 330 阅读 · 0 评论 -
Linux内核数据结构之链表【转】
(转自:https://www.linuxidc.com/Linux/2016-12/137929.htm)Linux内核数据结构之链表1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h...转载 2018-04-01 22:52:01 · 169 阅读 · 0 评论 -
深入分析 Linux 内核链表【转】
(转自:https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/#icomments)深入分析 Linux 内核链表一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需...转载 2018-04-01 22:46:31 · 258 阅读 · 0 评论 -
linux内核之链表操作解析【转】
(转自:http://www.cnblogs.com/majiangjiang/p/5528198.html)linux内核之链表操作解析本文只是对linux内核中的链表进行分析。内核版本是linux-2.6.32.63。文件在:linux内核/linux-2.6.32.63/include/linux/list.h。本文对list.h文件进行简要分析,有必要的地方还会以图进行说...转载 2018-04-01 22:34:14 · 209 阅读 · 0 评论 -
LINUX驱动学习之什么是驱动?【转】
(转自:https://www.cnblogs.com/deng-tao/p/6165173.html)一、什么是驱动?1: 驱动一词的字面意思2: 物理上的驱动3: 硬件中的驱动4: linux内核驱动。软件层面上的驱动广义上是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序。狭义上驱动程序就是专指操作系统中用来操控硬件的逻辑方法的部分代码。而我们这里讲的驱...转载 2019-06-01 17:49:12 · 212 阅读 · 0 评论 -
Linux驱动概念扫盲篇【转】
(转自:https://blog.youkuaiyun.com/czyv587/article/details/71194325)驱动程序完全隐藏了设备工作的细节. 用户的活动通过一套标准化的调用来进行,这些调用与特别的驱动是独立的; 设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上.驱动应当做到使硬件可用, 将所有关于如何使用硬件的事情留给应用程序. 一个驱动,如果它提供了对硬件能力...转载 2019-06-08 16:12:35 · 281 阅读 · 0 评论 -
linux内核中的likely()和unlikely()宏的作用【转】
(转自:https://blog.youkuaiyun.com/jasonchen_gbd/article/details/44968395)版权声明:本文为博主原创文章,转载请附上原博链接。 https://blog.youkuaiyun.com/jasonchen_gbd/article/details/44968395在看linux内核代码的时候,经常会看到likely(x)和unlikely(x)宏的使用...转载 2018-09-16 22:15:42 · 225 阅读 · 0 评论 -
Linux 内核链表的使用及深入分析【转】
(转自:https://blog.youkuaiyun.com/BoArmy/article/details/8652776)一、重要知识点 1.内核链表和普通链表的区别 内核链表是一个双向链表,但是与普通的双向链表又有所区别。内核链表中的链表元素不与特定类型相关,具有通用性。 我们先来看一幅图kernel list展示的是内核链表的结...转载 2018-09-20 23:52:30 · 213 阅读 · 0 评论 -
Linux内核中链表的实现与应用【转】
(转自:http://blog.chinaunix.net/uid-27037833-id-3237153.html)链表(循环双向链表)是Linux内核中最简单、最常用的一种数据结构。 1、链表的定义 struct list_head { struct list_head *next, *prev;...转载 2018-09-20 23:54:30 · 201 阅读 · 0 评论 -
史上最经典的Linux内核学习方法论【转】
(转自:https://blog.youkuaiyun.com/u013951778/article/details/52749001) 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的...转载 2018-11-14 14:28:38 · 848 阅读 · 0 评论 -
一张图看尽Linux内核运行原理【转】
(转自:https://www.jb51.net/article/77381.htm)众所周知的是,几乎整个互联网都运行在 Linux 上,从网络协议,到服务器,到你平常访问的绝大多数网站,都能看到它的身影。Linux 内核就是最复杂最流行的开源项目之一。如果你希望学习内核知识,在网上可以搜到无数的资料,但是 Linux 内核还是一个非常难弄明白的项目。俗话说:一图胜千言,今天我们就...转载 2018-11-14 14:25:46 · 1909 阅读 · 0 评论 -
Linux内核结构体--kfifo 环状缓冲区【转】
(转自:https://blog.youkuaiyun.com/yusiguyuan/article/details/41985907)最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果...转载 2018-11-14 11:21:32 · 447 阅读 · 0 评论 -
理解分析 循环缓冲区的 读取和写入 的过程和特点
linux中的kfifo循环缓冲区设计得很精妙,使用循环队列的数据结构。特点使用并行无锁编程技术,即当它用于只有一个入队线程和一个出队线程的场景时,两个线程可以并发操作,而不需要任何加锁行为,就可以保证kfifo的线程安全。 将in,out 设计为为无符号整数,巧妙地利用溢出规则,保证了fifo读写正确,还可以减少很多判断处理。 缓冲区大小size要求必须是2的幂次,这样的话对kfif...原创 2018-11-13 14:16:01 · 1555 阅读 · 0 评论 -
深入理解linux内核kfifo【转】
(转自:http://blog.chinaunix.net/uid-18770639-id-4203078.html)项目中要用到ringbuffer,一直都是自己造轮子,调试中才发现经常会出问题,主要是没有加内存屏障。近期自己学习了linux kernel的kfifo,才发现原来内核对于ringbuffer,早就实现了一套,而且代码之精妙,一般人很难想到。不同于我们自己造轮子的定长ri...转载 2018-11-13 12:48:05 · 689 阅读 · 0 评论 -
循环缓冲区(参考linux内核Kfifo)【转】
(转自:https://blog.youkuaiyun.com/jnu_kinke/article/details/7274651)1循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费2都只有一个的情况下,否则也要加锁。下面就内核中提取出来,而经过修改后的fifo进3行简要的分析。45先看其只要数据结构:6structmy_fifo {7unsig...转载 2018-11-13 11:50:01 · 511 阅读 · 0 评论 -
Linux内核中的循环缓冲区【转】
(转自:https://blog.youkuaiyun.com/heanyu/article/details/6291825)循环缓冲区定义在include/linux/kfifo.h中,如下:struct kfifo { unsigned char *buffer; // buffer指向存放数据的缓冲区 unsigned int size; // size...转载 2018-11-13 11:49:41 · 288 阅读 · 0 评论 -
linux dmesg命令参数及用法详解(linux显示开机信息命令)【转】
(转自:https://blog.youkuaiyun.com/zhongyhc/article/details/8909905)扩展阅读一:dmesg命令主要用途主要应用:dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题通常非常...转载 2018-11-12 15:24:59 · 564 阅读 · 0 评论 -
dmesg七种用法【转】
(转自:https://www.cnblogs.com/zhaoxuguang/p/7810651.html)dmesg 命令的使用范例‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。‘dmesg’命令在多数基于Linux和Unix的操作系统中都可以使用。下面我们展示一些最负盛名的...转载 2018-11-12 15:08:04 · 274 阅读 · 0 评论 -
dmesg 总结【转】
(转自:https://blog.youkuaiyun.com/abcd1f2/article/details/73293533)在dmesg里我们可以查看到开机信息,printk产生的信息等。若研究内核代码,在代码中插入printk函数,然后通过dmesg观察是一个很好地方法。2.dmesg输出含义dmesg 输出的数字含义是什么,纠结了一会儿,下面给出解释终端输入dmesg,可...转载 2018-11-12 15:01:04 · 1923 阅读 · 0 评论 -
图解Linux命令之--dmesg命令【转】
(转自:https://blog.youkuaiyun.com/Jerry_1126/article/details/54643018)【dmesg命令作用】:有时候屏幕上的启动信息一闪而过,我们无法查看到具体信息,又或者服务器在电信机房,更看不到开机启动信息。这时候linux提供了dmesg这条命令。在命令行下敲入dmesg就能看到一堆的信息:1)dmesg 是一个显示内核缓冲区系统控...转载 2018-11-12 14:34:54 · 247 阅读 · 0 评论 -
Linux2.6.32内核笔记(4)内核链表使用与分析【转】
(转自:https://blog.youkuaiyun.com/Deep_l_zh/article/details/48379599)摘要:描述了普通链表、内核链表以及他们之间的区别,介绍了对链表进行创建,插入,遍历和删除的操作,使用内核链表对足球队球员信息进行操作,详细对内核链表中的各个函数进行了分析。 一、链表的概念与种类 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素...转载 2018-09-21 00:05:13 · 167 阅读 · 0 评论 -
Linux 内核通用链表学习小结【转】
(转自:https://www.jb51.net/article/127696.htm)描述在linux内核中封装了一个通用的双向链表库,这个通用的链表库有很好的扩展性和封装性,它给我们提供了一个固定的指针域结构体,我们在使用的时候,只需要在我们定义的数据域结构体中包含这个指针域结构体就可以了,具体的实现、链接并不需要我们关心,只要调用提供给我们的相关接口就可以完成了。传统的链表结构...转载 2018-09-21 00:03:21 · 244 阅读 · 0 评论 -
linux内核中链表结构及使用方法【转】
(转自:https://blog.youkuaiyun.com/wangliang888888/article/details/51213751)声明:在学习linux 内核数据结构之链表部分时参考了http://blog.chinaunix.net/uid-14114479-id-2932024.html。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。...转载 2018-09-21 00:03:13 · 285 阅读 · 0 评论 -
Linux2.6.32内核笔记(5)在应用程序中移植使用内核链表【转】
(转自:https://blog.youkuaiyun.com/Deep_l_zh/article/details/48392935)摘要:将内核链表移植到应用程序中,实现创建,添加节点,遍历,删除的操作。 首先复习一下内核链表中经常使用的几个函数,在/include/linux/list.h中。 创建链表: <span style=...转载 2018-09-21 00:02:56 · 188 阅读 · 0 评论 -
巧夺天工的kfifo(修订版)【转】
(转自:https://blog.youkuaiyun.com/linyt/article/details/53355355#commentBox)多年以前写了篇《巧夺天工的kfifo》文章,最近有好位网友发消息讨论kfifo实现细节。发现原文有些细节没有说得很清楚,甚至有点啰嗦,于是趁今晚有空修订一下。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的...转载 2018-11-14 15:16:07 · 229 阅读 · 0 评论