自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux PageDirty定义

Linux PageDirty 系列函数定义及功能说明

2023-11-13 13:23:15 94

原创 early_initcall

1)*_initcall系列函数分为两种实现方式,一种为直接加载,一种为模块加载。2) 直接加载:根据调用函数不同,初始化的顺序不同。3) 模块加载:实现相同,初始化顺序由insmod命令顺序决定。

2022-12-15 16:37:04 383 1

原创 Linux Kernel Atomic解析

Atomic

2022-12-14 16:04:12 572

原创 Linux Kernel Complete

Linux Kernel Complete实现详细解析

2022-11-28 15:37:01 681

翻译 MSI驱动指南HOWTO

Message Signaled Interrupt 是从设备写入特殊地址,导致 CPU 接收中断。MSI 功能首先在PCI 2.2中指定,后来在PCI 3.0中得到增强,允许单独屏蔽每个中断。PCI 3.0还引入了 MSI-X 功能。与 MSI 相比,它支持每个设备更多的中断,并允许独立配置中断。设备可能同时支持 MSI 和 MSI-X,但一次只能启用一个。

2022-02-25 16:21:17 2048

原创 Linux Kernel Semaphore代码解析

目录1. Semaphore2. 核心结构体2.1 Semaphore2.2 Semaphore_waiter2.3 结构体示意图3. 代码分析3.1 Down3.2 __down3.3 __down_common3.4 Up3.5 __up4. 流程图Kernel Version: 5.16.0-rc11. Semaphore睡眠锁有count计数,允许多个task同时拿,只要count不为0即可2. 核心结构体2.1 Semaphore锁的定义:/* Please don't a

2021-11-17 16:41:50 590

原创 schedule_timeout 函数分析

schedule_timeout函数功能:将当前task调度出cpu,并在timeout1)kernel/time/timer.csigned long __sched schedule_timeout(signed long timeout){ struct process_timer timer; unsigned long expire; switch (timeout) { case MAX_SCHEDUL

2021-11-16 22:18:21 5006

原创 tasklet存储结构及调用流程

tasklet是基于softirq的,它在中断上下文执行,不屏蔽中断,在其中不能执行睡眠/等待操作。

2021-10-09 14:40:49 266

原创 Linux kernel 锁

在Linux kernel中有各种各样的锁,它们的实现原理不同,使用场景不同,本文会深入讨论Linux kernel中的锁机制。

2021-09-06 14:31:15 418

原创 中断处理时间统计 cpu_irqtime

cpu_irqtime为per-cpu变量,定义在kernel/sched/cputime.c文件中本功能的开启由config CONFIG_IRQ_TIME_ACCOUNTING控制,默认是开启状态。

2021-07-30 17:02:37 1863

原创 ldrex strex

Based on linux kernel4.14 arch/arm架构.目录问题现象说明crash现场调用栈寄存器信息问题分析ARM 文档说明问题现象说明死锁crash现场调用栈core0:PID: 0 TASK: c0e12a00 CPU: 0 COMMAND: "swapper/0" #0 [<c0a3df90>] (_raw_spin_lock) from [<c0198c04>] #1 [<c0198c04>] (handle_

2021-05-25 09:41:40 422

原创 Linux kernel patch提交

1. 下载最新kernel源码2. 配置本地git3. 填写commit message4. 生成patch5. 脚本检查patch格式问题6. 脚本获取maintainer7. 邮箱发送patch8. 成功日志9. 等待回复

2021-04-12 16:25:34 1354

原创 详解 ARM PMU (Performance Monitoring Unit)

本文会详细讲解ARM PMU模块原理及代码流程kernel version=4.14.90, arch=arm64初始化流程:arch/arm64/kernel/perf_event.cdevice_initcall(armv8_pmu_driver_init)这里使用device_initcall调用进行函数的初始化流程,关于device_initcall的定义及实现...

2021-03-12 09:50:03 1905 1

原创 内核线程创建,并使用hrtimer定时wakeup线程

内核线程创建,并使用hrtimer定时wakeup线程

2021-03-11 14:15:08 927

原创 Linux 时间子系统 - mdelay/udelay/ndelay

Linux 时间子系统 - mdelay/udelay/ndelay 实现详解

2021-03-01 19:40:23 2946

原创 Linux arm cpu topology

cpu capacity代表了一个cpu的处理能力,它与各个cpu运行在哪个频点有关,在big-LITTLE架构下的cpu,大核与小核的capacity应设置为不同值。在parse_dt_topology中,从dt获取cpu capacity,调用update_cpu_capacity更新相关变量。在每个core初始化时,都会调用到store_cpu_topology,填充本cpu的cpu_topology变量。reset_cpu_topology的逻辑比较简单,就是给per-cpu的变量一个初始值。

2020-11-25 09:28:20 790

原创 Linux 时间子系统 - timer (低精度timer)

持续更新2020.11.2

2020-11-02 09:42:57 1134

原创 Linux cpu topology

CPU topology代码结构arch/arm/kernel/topology.cinit/main.cstart_kernel rest_init kernel_init kernel_init_freeable smp_prepare_cpusarch/arm/kernel/smp.c...

2019-02-22 19:48:46 817 1

原创 CoreDump学习记录

coredump问题记录

2017-08-29 17:32:25 611

转载 Using ftrace

https://source.android.com/devices/tech/debug/ftrace#atraceUsing ftraceftrace is a debugging tool for understanding what is going on inside the Linux kernel. The following sections det

2017-08-25 15:12:49 317

转载 关于进程、线程和轻量级进程的一些笔记

转载:http://www.cnitblog.com/tarius.wu/articles/2277.html在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。线程有自己的私有数据

2017-08-25 15:02:28 217

PCI-Express-5-Update-Keys-to-Addressing-an-EvolvingSpecification

PCI-Express-5-Update-Keys-to-Addressing-an-EvolvingSpecification

2021-12-03

vim+cscope配置

vim+cscope配置

2021-09-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除