Linux内核架构
蔡宁远
心简单,code就简单
展开
-
矩阵XY轴翻转
buf = [ -1, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 600, 890, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1080, 1200, 860, ..原创 2022-05-14 21:00:49 · 345 阅读 · 0 评论 -
PDE_DATA定义说明
1. 找到原型,文件路径kernel/fs/proc/generic.cvoid *PDE_DATA(const struct inode *inode){ return __PDE_DATA(inode);}EXPORT_SYMBOL(PDE_DATA);2. 按calltrace最终找到调用container_of,到这里大家都熟悉了吧! 通过结构体中的一个成员变量的地址获得该结构体的首地址。文件路径:kernel/fs/proc/internal.hstati...原创 2021-09-13 14:52:40 · 1074 阅读 · 2 评论 -
Linux内核中断子系统学习笔记
一直想写一篇关于Linux 中断子系统文章,终于有时间可以静下心来写一些,前后预计花费15天左右的时间来完成这个文章,希望能帮助到有需要的人,先写一部分内容,后面再补充进来。目录中断1.中断类型a.同步中断和异常 b.异步中断2.硬件IRQ3.处理中断 a.进入和退出任务b.中断处理程序4.数据结构 a.IRQ控制器抽象 b.处理程序函数的表示5.中断电流处理 a.设置控制器硬件 b.电流处理6.初始...原创 2020-08-28 22:40:14 · 343 阅读 · 0 评论 -
proc文件系统下创建节点的两种方法
##创建只读节点文件###第一种static ssize_t vendor_read(struct file *file, char *buf, size_t len, loff_t *pos){ ssize_t ret = 0; if (!PROC_SEND_FLAG) { ret += snprintf(buf_tmp + ret, sizeof(buf_tmp) - ret, "FW_VER = 0x%2.2X\n", ic_data->vendor_fw_原创 2020-08-01 10:42:28 · 1031 阅读 · 0 评论 -
linux通过改变系统属性值来触发行为
1. 找到system/core/init/stable_properties.h文件,添加only_for_test属性 static const std::set<std::string> kExportedActionableProperties = { "dev.bootcomplete", "init.svc.console", "init.svc.mediadrm", "init.svc.surfaceflinger", "in.原创 2020-06-24 16:38:47 · 1521 阅读 · 0 评论 -
创建linux可执行程序
背景有些时候我们需要定制一些功能来debug,而/system/bin下没有我们想要的可执行程序,这个时候就需要我们自己来封装一个此demo主要功能是循环读取proc/目录下某个文件,然后在控制台show出来环境编译环境(ubuntu),开发板源码(我自己的qcom,mtk都可)步骤1.在vendor/rockchip目录下创建工程目录himax2.目录结构如下: |--himax.mk |--sepolicy/ |--file_contexts |--hima原创 2020-06-24 10:44:52 · 763 阅读 · 0 评论 -
Linux内存泄漏调试
背景循环压力测试驱动某个模块功能时,会出现alloc不到memory情况工具利用Linux自带的工具(kmemleak),进行调试怎样编译出工具配置config,默认配置如下:CONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=4000CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y修改后:CONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARL原创 2020-06-23 17:54:09 · 624 阅读 · 0 评论