linux内核
文章平均质量分 81
phenix_lord
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux内核地址有效性判断方法
如果只是需要大致地判断范围,可以参考内核\linux-3.4.104\Documentation\x86\x86_64\mm.txt中的对各个段的分配的描述。但是如果需要更加精确地判断,就需要根据内核页表,一级一级地查找,查看是否存在对应的物理地址(内核态的地址不存在SWAP的问题),下面是内核代码段(针对X86-64,有修改)int kern_addr_valid(unsigned lo原创 2014-11-30 16:23:48 · 4042 阅读 · 0 评论 -
如何获取内核指定线程的调用栈
方法一:可以通过/proc/线程ID/stack来获取指定线程当前的调用栈,但是该方案存在限制:可能不能准确获取出问题的时候该线程的调用栈方法二:通过内核接口save_stack_trace_tsk和%pS,在程序检测到异常的时候打印出对应的调用栈用于问题定位,具体的方法(从内核/proc文件系统处理打印调用栈的proc_pid_stack中简单修改而来):static int kprin原创 2014-11-30 17:12:35 · 2849 阅读 · 1 评论 -
内核模块踩内存问题定位利器- hardware breakpoint
static void sample_hbp_handler(struct perf_event *bp,struct perf_sample_data *data,struct pt_regs *regs){printk(KERN_INFO "%s value is changed\n", ksym_name);dump_stack();printk(KERN_I原创 2014-11-23 20:26:22 · 8539 阅读 · 0 评论 -
Linux中断机制之二:初始化
相关概念和关键数据结构1、 irq号:在当前系统中全局唯一,对应内核数据结构struct irq_desc,每个外设的中断有一个irq号(体系结构预留的中断,是没有对应的irq_desc结构和irq号的),该irq在该中断的生命周期内都不会改变,且和该中断的中断处理函数关联;内核使用一个bitmap allocated_irqs来标识当前系统已经分配的irq;irq号的管理与底层中断设备和配置无关原创 2015-04-18 21:13:52 · 5533 阅读 · 0 评论 -
Linux中断机制之三:中断的执行
在内核代码中,对X86平台中断执行的基本过程是: 1、 通过IDT中的中断描述符,调用common_interrupt; 2、 通过common_interrupt,调用do_IRQ,完成vector到irq_desc的转换,进入Generic interrupt layer(调用处理函数generic_handle_irq_desc); 3、 调用在中断初始化的时候,按照中断特性(le原创 2015-04-18 21:25:14 · 3753 阅读 · 0 评论 -
Linux中断机制之一:硬件处理
最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。不同的外部设备、不同的体系结构、不同的OS其中断实现机制都有差别,本文对应的OS为linux3.4版本,外部设备为PCI设备、系统为X86。概览中断让外设能够通知CPU他需要获得服务(让CPU执行指定的中断服务例程ISR)。为了达到这个目的,首先要为中断执行做好准备,完成初始化相关的操作。包括: 1、 初始化中断控制器等相关器原创 2015-04-18 20:44:23 · 6470 阅读 · 0 评论 -
内核的static-key机制
内核的static-key原创 2015-10-18 22:33:15 · 4541 阅读 · 0 评论 -
关于memory barrier/memory ordering的笔记和总结(1)
本文是ARM和INTEL官方手册、LINUX内核文档的笔记。 谁需要关心memory ordering以下情况下,不需要关心memoryordering:如果不涉及内存的并发访问;代码完全利用信号量、自旋锁等内核原语或者高级语言提供互斥手段完成并发访问控制。典型的需要关心memoryordering原创 2016-01-19 22:28:36 · 2883 阅读 · 1 评论 -
关于memory barrier/memory ordering 的笔记和总结(2)
Memory orderingMemory ordering用来描述系统中的processor对内存的操作如何对其它processor可见(可见的定义见前面的描述)。同时需要说明的是,大多数文献都采用reorder这个表达方式,是从执行等价的角度来描述的:比如P1上执行两个写操作WRITE(A)和WRITE(B),如果对于观察者P2来说P1|WRI原创 2016-01-19 22:35:35 · 5140 阅读 · 3 评论
分享