
kernel
文章平均质量分 85
李子
天若有情天亦老
月若无恨月长圆
展开
-
ARM 架构 dump_stack 实现分析(2.0 调用时序)
看下具体调用时序:void dump_stack(void){ dump_backtrace(NULL, NULL);} dump_stack -->dump_backtrace -->unwind_backtrace - ->dump_backtrace_entry原创 2013-11-15 22:31:13 · 5439 阅读 · 0 评论 -
kernel hexdump分析
驱动调试中,很多时候是二进制的,这个时候hexdump就是个非常有用的工具了。不要再自己去实现类似的功能,kernel代码里面就有:参考: kernel/lib/hexdump.c// 0Xxx转换成 ASCII ,实现简单巧妙const char hex_asc[] = "0123456789abcdef";#define hex_asc_lo(x) hex_asc[((x)原创 2013-12-04 22:31:33 · 5283 阅读 · 0 评论 -
ARM架构显示寄存器的详细信息
void show_regs(struct pt_regs * regs){ printk("\n"); printk("Pid: %d, comm: %20s\n", task_pid_nr(current), current->comm); __show_regs(regs); dump_stack();} void __show_regs(struct p原创 2013-11-27 22:07:29 · 2434 阅读 · 0 评论 -
linux reset 分析
遇到个系统reset的问题,简单看了下kernel reset的代码,简单记录下:简单看下log:[ 25.900749] Restarting system with command 'recovery'.[ 25.901449] arch_reset: cmd = recovery[ 25.901981] wdt_arch_reset called@Kernel原创 2013-11-27 22:02:25 · 4168 阅读 · 0 评论 -
kernel list 与普通list区别及其最牛叉的地方
参考:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/ http://blog.youkuaiyun.com/yangzhiloveyou/article/details/8758699原创 2013-11-09 12:25:35 · 1309 阅读 · 0 评论 -
linux kernel怎么编译单独某个模块
举个栗子:cd kernelmake SUBDIRS=./samples/kprobes modules SUBDIRS=./ 后面加你要编译的kernel模块的路径SUBDIRS 这个关键字一定要大写本人实际调试的时候,SUBDIRS写出小写的时候,结果是编译所有模块 随便记录下模块相关的几个命令:insmodrmmodlsmodmo原创 2013-11-06 20:09:57 · 9358 阅读 · 0 评论 -
获取kernel各个数据段,代码段的地址及范围
有的时候需要知道代码段,数据段,字符串段,已经初始话数据段等信息记得添加: #include printk("_text is %08x--%08x , \ _data is %08x--%08x , \ __bss_start is %08x--%08x , \ __init_begin is %08x--%08x ,原创 2013-11-20 22:54:28 · 5003 阅读 · 2 评论 -
fs mtd driver架构美图
翻译 2013-11-20 22:59:43 · 1610 阅读 · 0 评论 -
kernel怎么知道是user还是system空间(ARM架构实现)
有的时候,如linux kernel的负载统计任务等tick 发生的时候,需要知道系统此时是user/system空间。如kernel一下场景有应用:void account_process_tick(struct task_struct *p, int user_tick){ if (user_tick) account_user_time(p, cputime_one原创 2013-11-01 21:56:16 · 2603 阅读 · 0 评论 -
ARM 架构 dump_stack 实现分析(3.0 printk %pS选项实现)
上篇提到了函数:void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame){#ifdef CONFIG_KALLSYMS //记住%pS是关键 printk 与 普通printf最大的不同 //惭愧啊,现在才知道此选项 print原创 2013-11-15 22:43:27 · 5636 阅读 · 0 评论 -
ARM 架构 dump_stack 实现分析(1.0 具体实例)
dump_stack也就是我们平时说的backtrace对分析,对异常或crash发生的时候,具有重要的意义 每种架构会有或多或少的区别,如现在linux kernel支持如下架构:alpha avr32 c6x frv hexagon m68k mips openrisc powerpc score sparc um原创 2013-11-15 22:26:26 · 3155 阅读 · 0 评论 -
kernel hexdump分析 (2.0)
有的时候print_hex_dump_bytes循环打印很多信息的时候(大于1K)用UART串口打印的信息总是会有丢失,估计是printk缓冲区的问题把,具体原因不是太清楚于是自己写了个比较笨的dump函数,问题得到解决://每次打印128个字节(当然你也可以打印更多),只调用一次printk , // 而 print_hex_dump_bytes 则 最多32个字节 就调用一次p原创 2013-12-04 22:35:01 · 2066 阅读 · 0 评论