Linux内核原理及其接口函数分析
文章平均质量分 93
Leon_George
一只始终飞翔在嵌入式Linux ARM开发中的黑鸟,对bootloader、跟文件系统和Linux内核裁剪,以及对Linux底层应用和驱动开发也有些许心得。有志同道合的同学请关注我哦。
展开
-
Linux中与“系统内存”相关的内核数据结构
【摘要】本文讲述了在Linux中与系统内存相关的内核数据结构,通过逐行分析源代码讲述了内存数据结构之间的关联。原创 2023-05-13 20:00:00 · 832 阅读 · 1 评论 -
Linux中与“内核安全”相关的数据结构
【摘要】本文详细描述了Linux中与安全相关的内核数据结构。原创 2023-05-11 20:00:00 · 502 阅读 · 0 评论 -
Linux中与“内核模块”相关的数据结构
【摘要】本文详细解释了linux中与模块相关的内核数据结构,便于大家在学习理解内核源码或驱动编程中理解相应代码和思想。原创 2023-05-09 20:00:00 · 803 阅读 · 0 评论 -
Linux中与“进程相关”的数据结构分析
/进程内核栈,进程通过alloc_thread_info函数分配它的内核栈, //通过free_thread_info函数释放所分配的内核栈 atomic_t usage;//进程描述符使用计数,被置为2时,表示进程描述符正在被使用而且其相应的进程处于活动状态 unsigned int flags;//成员ptrace被设置为0时表示不需要被跟踪 unsigned long ptrace_message;原创 2023-05-07 10:24:41 · 728 阅读 · 0 评论 -
current宏及Linux进程栈的底层实现
本文介绍了current宏及Linux进程栈的底层实现原创 2023-05-06 22:26:25 · 819 阅读 · 0 评论 -
超长文全面解析设备树
本文从设备树的起源、概念、架构、语法、编译、常见接口及具体应用全面细致分析了设备树的种种,全文5万多字,写作过程中借鉴了不少优秀文章和博文并在文后予以了标注,若涉及侵权还请联系删除或授权。原创 2022-12-20 12:12:37 · 2983 阅读 · 0 评论 -
一文了解GCC(GNU C)语法
要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。原创 2022-11-06 17:32:34 · 1142 阅读 · 0 评论 -
Linux设备模型剖析系列文章之七(kobj、kset)
【摘要】本文是Linux设备模型系列文章的最后一篇,补充讲解了kobj和kset的一些内容,主要阐述kobj/kset作为统一设备模型的基础,到底提供了哪些功能,在具体应用过程中,如device、bus甚至platform_device等是如何使用kobj/kset的。原创 2022-10-29 15:27:16 · 433 阅读 · 0 评论 -
Linux设备模型系列文章之六(设备资源管理)
【摘要】本文是Linux设备模型剖析系列文章之六,主要讲述了如何避免在内核驱动编程中解决繁琐的资源管理难题。相信每一个写过Linux driver的工程师,都在probe函数中遇到过上面的困惑:要顺序申请多种资源(IRQ、clock、memory、regions、ioremap、dma、等等),只要任意一种资源申请失败,就要回滚释放之前申请的所有资源。而设备资源管理帮我们解决了这个问题,本文就是围绕它来展开。原创 2022-10-29 15:24:12 · 306 阅读 · 0 评论 -
Linux设备模型剖析系列之五(class)
【摘要】本文是Linux设备模型剖析系列文章之五,讲述了class相关的概念及其在驱动编程中的应用。在设备模型中,Bus、device、device driver等等,都比较好理解,因为它们对应了实实在在的东西,所有的逻辑都是围绕着这些实体展开的。而本文所要描述的class就有些不同了,因为它是虚拟出来的,只是为了抽象设备的共性。原创 2022-10-29 15:16:23 · 513 阅读 · 1 评论 -
Linux设备模型剖析系列之四(BUS)
【摘要】本文是Linux设备模型剖析系列文章之四,主要讲述了BUS总线在Linux设备模型中的地位,BUS是一类特殊的设备,它是连接处理器和其它设备之间的通道(channel)。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者platform Bus。内核通过struct bus_type结构抽象Bus。下文会围绕该结构,描述Linux内核中Bus的功能,以及相关的实现逻辑。最后,会简单的介绍一些标准的Bus(如platform)。原创 2022-10-29 15:10:35 · 695 阅读 · 0 评论 -
Linux设备模型剖析系列之三(device和device driver)
【摘要】device和device driver是Linux驱动开发的基本概念。Linux kernel的思路很简单:驱动开发,就是要为指定的设备(device)开发指定的软件(device_driver),所以kernel就为设备和驱动定义了两个数据结构,分别是device和device_driver。下文将会围绕这两个数据结构,介绍Linux设备模型的核心逻辑,包括:设备及设备驱动在kernel中的抽象、使用和维护;设备及设备驱动的注册、加载、初始化原理;设备模型在实际驱动开发过程中的使用方法。原创 2022-10-29 15:01:53 · 524 阅读 · 0 评论 -
Linux设备模型剖析系列之二(uevent、sysfs)
【摘要】本文为Linux设备模型剖析系列文章之二,主要内容为对kobject中的uevent进行了讲解,包括其在内核中的位置(地位)和内部逻辑;而后还讲述了sysfs和kobjet之间的关系、attrbute的概念等问题。原创 2022-10-29 14:55:50 · 1287 阅读 · 0 评论 -
Linux设备模型剖析系列一(基本概念、kobject、kset、kobj_type)
【摘要】本文是linux设备模型剖析系列文章之一,主要内容包括了Linux内核中设备模型的核心思想,讲述了Bus, class, device和device_driver等的概念,特别是对kobject、kset、kobj_type作为Linux设备模型的基本单元,同时也是设备模型中最难理解的一部分,进行了源码级的较为清楚的分析。原创 2022-10-29 14:42:25 · 977 阅读 · 0 评论 -
uart驱动框架及编程方法
【摘要】本文讲述了UART串口的驱动框架,其与tty架构的联系及相互关系,描述了常见的数据结构及一般串口驱动编程的一般步骤和方法,最后引用LDD3文章中的一个串口实例讲述了串口驱动源码全貌原创 2022-10-28 23:39:18 · 2176 阅读 · 0 评论 -
一文彻底讲清Linux tty子系统架构及编程实例
本文详细解读了linux系统下的tty子系统的深层次原理和架构,并参考了LDD3中的代码实例讲述了无硬件下实现一个简单的tty设备驱动模块的编写。对了解tty子系统及下部串口驱动模块的学习有较好的参考价值。原创 2022-10-23 00:16:11 · 4443 阅读 · 0 评论 -
一文讲透Linux网络设备驱动框架及编写步骤
本文阐述了网络架构模型,特别是Linux系统中网络子设备框架4层结构,反别阐述了各层的作用。重点讲解了sk_buff及net_device数据结构及其常用操作接口,最后以实际代码讲述了特定网卡的驱动编写步骤、流程和移植方法。原创 2022-10-18 13:02:08 · 4148 阅读 · 3 评论 -
一文彻底搞清Linux中块设备驱动的深层次原理和编写方法
本文主要讲述了在Linux环境下的块设备驱动的常见数据结构和内核接口,并以一个实际例子讲述了块设备驱动的编写方法。文章参考LDD3。原创 2022-10-12 18:11:08 · 2026 阅读 · 0 评论 -
linux内存管理和映射
【摘要】本文主要讲述linux内核中内存管理及映射的相关理论。原创 2022-10-09 21:57:47 · 1308 阅读 · 0 评论 -
详解高速缓存存储器的3种映射方式
开始的计算机系统中存储器层次包括CPU寄存器、主存(DRAM)和硬盘,后来为了缓解寄存器与主存间速度的差异,系统设计者在它们之间增加了高速缓存(SRAM),它的访问速度几乎可以和寄存器一样快。随着CPU和主存的性能差距逐渐拉大,后来在原高速缓存(L1高速缓存)和内存之间有增加了L2和L3级高速缓存。一般访问寄存器需要1个时钟周期,访问L1级高速缓存需要4个时钟周期,访问L2级高速缓存需要10个...原创 2020-03-25 13:42:50 · 5057 阅读 · 1 评论 -
详解linux内核链表list_head及其接口应用
摘要:本文介绍了内核代码中经常使用的list_head链表的原理,及其它的各种接口函数(宏函数)的使用方法和技巧,对理解Linux内核数据结构和代码有较好参考意义。原创 2022-09-14 23:23:33 · 697 阅读 · 3 评论