索引 | 博客文章目录

爱技术 | 爱分享 | 爱生活 目前研究操作系统内核相关 不喜勿喷,欢迎交流 Linux源码剖析 Linux源码 | Thermal框架源码剖析 Linux内核设计 Linux内核 | 进程管理 Linux内核 | 进程调度 Linux内核 | 系统调用 Linux内核 | 中断机制 Linux内核 | 内核同步 Linux设备驱动 Linux设备驱动 | 简述内核模块 Linux设备驱

- 阅读全文 -

Linux源码 | Thermal框架源码剖析

1. 框架结构 thermal core:thermal主要的程序,驱动初始化程序,维系thermal zone、governor、cooling device三者的关系。 thermal zone device:创建thermal zone节点和连接thermal sensor,在/sys/class/thermal/目录下的thermal_zone*,通过dtsi文件进行配置生成。therma

- 阅读全文 -

Linux内核 | 内核同步

1. 定义 临界区和竞争条件 临界区:访问和操作共享数据的代码段 竞争条件:多个执行线程在一个临界区同时执行 死锁:每个线程都在互相等待,但它们永远也不会释放占用的资源。 自死锁:一个执行线程试图去获取一个自己已经持有的锁,它不得不等待锁释放,但因为它忙于等待这个锁,所以自己永远也不会有机会释放释放锁。 2. 设计规则 以下简单规则避免死锁 按顺序加锁 防止发生饥饿 不要重复请求一个锁 设计

- 阅读全文 -

Linux内核 | 中断机制

1. 中断 中断是一种硬件信号,由具体的硬件设备产生的。不同的硬件设备对应唯一的中断号,处理器是通过中断号(IRQ n)识别不同的硬件设备,并执行对应的中断处理程序或中断服务例程(ISR)。 2. 中断处理机制 中断处理系统在Linux中是非常依赖体系结构的,硬件设备产生中断,通过总线把电信号发送到中断控制器,如果中断线是激活状态(中断线是允许被屏蔽的),中断处理器会将中断信号发往处理器,处理器会

- 阅读全文 -

Native程序中引入Binder库

目前最新的ndk环境中,不包含binder库。 下载安卓源码,将下面两句加入Android.mk文件,在源码中利用mm命令作为子模块进行单独编译,优点:简单,缺点:编译速度慢,需要依赖安卓源码,不利于协同开发 LOCAL_SHARED_LIBRARIES := libutils libcutils libbinder liblog LOCAL_C_INCLUDES += frameworks/

- 阅读全文 -

搞机吧 | 利用Magisk刷LSPosed框架

1.前期准备 一部解锁的手机(a/b分区【注意】,如米11) 当前机型的线刷包(保持版本一致) 梯子(没有梯子,上酷安找@秋时白露提供的通道,Magisk中设置的自定义通道) Magisk下载地址 LSPosed下载地址 2.步骤 1.下载解压,安装Magisk,打开如下图 解压线刷包,进入image文件夹下找到boot.img(这个是内核),移动到手机目录。 进入Magisk,选择<安

- 阅读全文 -

Git和Repo详细使用教程

1.用户配置 git config --global user.name "hqber" git config --global user.email hqber@qq.com --local>--global>--system //查看配置 git config -l 2.Git三棵树 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在

- 阅读全文 -

Linux设备驱动 | 构造和运行内核模块

1. 将模块链接到内核 ​ 内核具有非常小的栈,可能和一个4096字节大小的页那样小。 在内核API中,函数名称中(__)通常表示接口底层组件,谨慎使用。 内核代码不能实现浮点数运算,如果打开浮点支持,在某些架构上,需要在进入和退出内核空间时保存和恢复浮点处理器的状态。这种额外的开销没有任何价值,内核代码中也不需要浮点运算。 ​ 2. 装载和卸载模块 insmod:将模块的代码和

- 阅读全文 -

Linux设备驱动 | 简述内核模块

1. 内核功能模块 ​ ​ 2. 设备和模块的分类 字符设备:可通过字节流(类似文件)进行访问的设备,字符设备驱动程序通常至少要实现open、close、read和write系统调用。 块设备:进行IO操作,可进行传输若干个完整的块的设备。 网络接口:任何网络事务都经过一个网络接口形成,网络接口由内核中的网络子系统驱动,负责发送和接收数据包,不需要了

- 阅读全文 -

Linux内核 | 系统调用

1. 系统调用 内核提供的用户空间和内核进行交互的一组接口,应用程序受限地访问硬件设备,提供创建新线程并与已有的进程进行通信,也提供了申请操作系统其他资源的能力。 1.2 系统调用形式 asmlinkage long sys_getpid(void) asmlinkage限定词是一个编译指令,通知编译器仅从栈中提取该函数的参数,每个系统调用都需要这个限定词。 为了兼容32位和64位系统,函数返回l

- 阅读全文 -