
kernel
文章平均质量分 54
wowRicky
其实我是代码滴搬用工;
C4 Picasso, my favorite car.
展开
-
list_for_each_safe
list_for_each_safeBidirect-list list_for_each_safe().https://biscuitos.github.io/blog/LIST_list_for_each_safe/转载 2022-02-22 09:59:32 · 1410 阅读 · 0 评论 -
linux kernel list_head
链表 list_head转载 2021-12-20 11:35:39 · 336 阅读 · 0 评论 -
GDB调试技巧
1. GDB 调试程序1.Run a program without any argument. gdb program2. Run a program with arguments gdb --args program arg1 arg2 ... argN or gdb program (gdb) r arg1 arg2 ... argN3. start with both an executable program and a c...原创 2020-11-20 15:28:23 · 1238 阅读 · 0 评论 -
slub object 内存布局
我在 https://blog.youkuaiyun.com/wowricky/article/details/83218126 介绍了一种内存池,它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入slub_debug=PZU) 时slub 对象池。首...原创 2018-11-02 00:40:52 · 963 阅读 · 1 评论 -
uboot引导kernel - 3 ->uboot给内核传参详解
uboot中执行theKernel函数后,kernel正式启动。如下函数,我们发现有3个参数。1. 参数 0;2. 参数machid;如下code 中获取machid, gd是个全局变量.2.1 bi_arch_number是board_info中的一个元素,含义是:开发板的机器码。所谓机器码就是uboot给这个开发板定义的一个唯一编号。2.2 机器码的主要作用就是在uboot和...原创 2018-10-21 00:20:23 · 6106 阅读 · 1 评论 -
uboot引导kernel - 2-> uboot/kernel需要放在DDR什么位置的问题
uboot启动Linux内核过程分为4大步骤:问题2: uboot阶段DDR的分区的问题上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢?分清楚这两个概念:链接地址:链接时指定的地址(指定方式为:Makefile中用-Ttext,或者链接脚本)运行地址:程序实际运行时地址(指定方式:由实际运行时被加载到内存的哪个位置说了算)此问题中...原创 2018-10-21 00:02:16 · 3121 阅读 · 1 评论 -
uboot引导kernel - 1 - >Flash的分区
uboot启动Linux内核过程分为4大步骤:问题1:Flash的分区相关问题在 上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那么具体从启动介质的什么位置分别读取呢? 步骤1中,iROM的code是SoC出厂内置的,因此这个位置要参考SoC的数据手册。摘抄数据手册如下:SD/MMC/eSSD作为存储介质时,BL...原创 2018-10-20 23:46:20 · 2637 阅读 · 1 评论 -
一种内存池管理技术
本文介绍一种内存池管理技术。在m公司工作了4年多,一直负责内存池模块问题的处理,比如内存越界,data abort 系统异常的处理,本文加以总结,以便后续参考。读本文之前,先有个约定,本文中提到的pool指的就是内存池,buffer就是内存池中的一个存储单元,一个pool包含多个buffer。1. 内存池整体规划首先介绍下内存池的布局,pool共12个,pool[0]包含930个buffe...原创 2018-10-20 23:29:14 · 740 阅读 · 0 评论 -
uboot引导kernel - 4 ->gd bd详解
gd 定义定义了一个全局变量名字叫gd,这个全局变量是一个指针类型,占4字节。用volatile修饰表示可变的,用register修饰表示这个变量要尽量放到寄存器中,后面的asm(“r8”)是gcc支持的一种语法,意思就是要把gd放到寄存器r8中。为什么要定义为register?因为这个全局变量gd(global data的简称)是uboot中很重要的一个全局变量,这个gd在程序中经常被访...原创 2018-10-23 00:01:52 · 2080 阅读 · 0 评论 -
基于i2c子系统的驱动分析
https://blog.youkuaiyun.com/qq_28992301/article/details/52467766转载 2018-07-22 00:44:52 · 293 阅读 · 0 评论 -
ARM32页表-虚拟地址到物理地址的转换
ARM32的页表 页表就是用于将虚拟地址转换为物理地址的转换关系表。访问虚拟地址时,计算机通过页表找到对应的实际物理地址访问。 我们在上一节介绍了内存管理模块概图, 怎么完成从pgd 到 page的转化呢? linux 内核code是通过follow_page来完成的,原型如下:static inline struct page *follow_page(struct vm_a...原创 2018-07-15 17:50:18 · 4468 阅读 · 0 评论 -
《LINUX3.0内核源代码分析》第一章:内存寻址
https://blog.youkuaiyun.com/ekenlinbing/article/details/7613334 摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page函数进行注释,以帮助读者大致了解ARM A9的页表组织。 读者需要理解一些基本概念:虚拟地址、物理地址、MPU、MMU、ARM中的二级页表、cache、TLB。法律声明:《LINUX3.0内核...转载 2018-07-15 16:02:05 · 1882 阅读 · 0 评论 -
linux内核 -内存管理模块概图
1.从进程(task)的角度来看内存管理每个进程对应一个task_struct;每个task_struct 里面包含mm_struct 的指针 mm_struct 里面的主要成员: a. 指向vma链表的头指针:mmap b. 指向vma红黑树的根节点: mm_rb c. 指向进程列表的指针pgb;vma(vm_area_struct)结构体的主要成员: a. vm...原创 2018-07-15 13:10:07 · 3057 阅读 · 0 评论 -
二维指针删除单向链表
Linus slashdot: https://meta.slashdot.org/story/12/10/11/0030249原文: https://coolshell.cn/articles/8990.htmlLinus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-...转载 2018-06-26 00:16:31 · 306 阅读 · 0 评论 -
Linux地址映射--线性映射与非线性映射
一,线性映射与非线性映射1. 内存管理物理内存管理:Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为每个物理内存也建立一个page的管理结构,操作物理内存时实际上就是操作page页。某些设备会映射在物理内存地址外,这些地址会在使用时建立page结构。 进程内存管理:Linux进程通过vma进行管理,每个进程都有一个task_struct结构体进行维护...转载 2018-06-10 11:18:15 · 3463 阅读 · 0 评论 -
linux内存管理 之 内存节点和内存分区(Zone)
https://www.cnblogs.com/youngerchina/p/5624516.htmlLinux支持多种硬件体系结构,因此Linux必须采用通用的方法来描述内存,以方便对内存进行管理。为此,Linux有了内存节点、内存区、页框的概念,这些概念也是一目了然的。内存节点(Node):主要依据CPU访问代价的不同而划分。多CPU下环境下,本地内存和远端内存就是不同的节点。即使在单CPU环...转载 2018-06-09 16:18:20 · 4568 阅读 · 0 评论 -
linux kernel内存回收机制
http://www.wowotech.net/linux_kenrel/233.html无论计算机上有多少内存都是不够的,因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式:如果一个很少使用的页的后备存储器是一个块设备(例如文件映射),则可以将内存直接同步到块设备,腾出的页面可以被重用;如果页面没有后备存储器,则可以...转载 2018-06-08 22:52:09 · 2112 阅读 · 0 评论 -
Linux 的内存管理工具和调优参数
1. free2. top3. vmstat4. slabtop;5. pmap6. dmesg7. /proc/meminfo8. /proc/sys/vm 目录下的文件9. sync10./proc/zoneinfo 11./proc/pagetypeinfo查看内存工具:1.freefree - Display amount of free and used memory in the sy...原创 2018-06-23 00:17:24 · 2365 阅读 · 0 评论