![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核驱动
文章平均质量分 87
叶之香
闲看繁花似锦
展开
-
原子操作
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。 原子操作主要用于实现资源计原创 2009-03-30 11:02:00 · 599 阅读 · 0 评论 -
关于likely()与unlikely函数
分支声明对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。例如,下面是一个条件选择语句:if (foo) { /* .. */}如果想要把这个选择标记成绝少发生的分支:/* 我们认为foo绝大多数时间都会为0..转载 2009-03-30 09:45:00 · 3015 阅读 · 0 评论 -
Linux2.6内核镜像的构建过程
make menuconfig:修改、添加内核配置选项,最后生成.config配置文件。make all:首先编译.config得到没有压缩的内核核心vmlinux,然后将其压缩生成引导过程使用的内核镜像bzImage,最后编译内核选项中相关的module。 压缩过程:首先对vmlinux瘦身(即用objcopy命令删除注释得到vmlinux.bin)并压缩(即用gzip命令原创 2009-02-27 23:16:00 · 1538 阅读 · 0 评论 -
Vmware+CentOS+KGDB内核双机调试
其中一台作为调试机,另一台则作为被调试机。如下图,CentOS7.9x64为被调试机,CentOS7.9x64-Debugger为调试机。原创 2023-07-20 15:38:49 · 770 阅读 · 0 评论 -
Hook Linux内核系统调用
百度搜索到Hook Linux内核系统调用的方式,通过修改系统调用表syscall_table相应的地址,查找syscall_table的方式主要有3种:通过查看/boot/System.map.*文件,从sys_close遍历到loops_per_jiffy来查找到syscall_table,代码如下: unsigned long **find_sys_call_table(void)...原创 2020-04-09 20:26:24 · 621 阅读 · 0 评论