Linux内核
文章平均质量分 78
虚极静笃13
这个作者很懒,什么都没留下…
展开
-
linux 内核module_platform_driver解析
该函数实际是一个宏,module_platform_driver在include/linux/platform_device.h中定义如下:/* module_platform_driver() - Helper macro for drivers that don't do* anything special in module init/exit. This eliminates a lot of* boilerplate. Each module may only use this...原创 2021-02-24 15:41:57 · 533 阅读 · 0 评论 -
arm linux4.9内核内存布局
ARM32 linux内核启动打印Linux内核在启动时会打印出内核内存空间的布局图,下面是ARM Vexpress平台打印出来的内存空间布局图:Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xf0800000 - 0xff800000 ( 240 MB)原创 2020-07-31 08:24:08 · 875 阅读 · 0 评论 -
arm linux内核建立临时页表(head.S文件分析)
简介linux内核是通过MMU来管理内存的,MMU其中的一个功能就是把虚拟地址转换为物理地址,但是linux在启动过程中,MMU未打开之前,代码的执行都是在物理地址空间的,那么怎么才能实现物理地址到虚拟地址空间的切换是本文的重点。swapper_pg_dir定义#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)#if (KERNEL_RAM_VADDR & 0xffff) != 0x8000#error KERNEL_RAM_VADDR原创 2020-07-12 18:04:14 · 543 阅读 · 0 评论 -
Linux spinlock自旋锁原理深度剖析(基于ARM32/64 )
自旋锁的概念自旋锁(spin lock)是一种典型的对临界资源进行互斥访问的手段,自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图获得一个被已经持有(争用)的自旋锁,那么该线程就会一直进行忙循环-旋转-等待锁重新可用,要是锁未被争用,请求锁的执行线程就可以立即得到它,继续执行。自旋锁相关操作定义自旋锁spinlock_t lock;初始化自旋锁spin_lock_init(lock);获得自旋锁spin_lock(lock);该宏用于获得自旋锁lock,如果能够立即获得锁,它就马原创 2020-06-21 16:15:26 · 2180 阅读 · 3 评论 -
linux 并发与静态
概念并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(Race Conditions)。发生条件主要的竞态发生在以下条件:图中每一种颜色代表一种竞态情况,主要归结为三类:进程与进程之间:单核上的抢占,多核上的SMP;进程与中断之间:中断又包含了上半部与下半部,以及硬中断、软中断、Tasklet,中断总是能打断进程的执行流;中断与中断之间:外设的中断可以路由到不同的CPU上,它们之间也原创 2020-06-14 22:13:27 · 107 阅读 · 0 评论