
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
一 调试前的准备二 内核中的bug三 内核调试配置选项1 内核配置2 调试原子操作四 引发bug并打印信息1 BUG()和BUG_ON()2 dump_stack()五 printk()1 printk函数的健壮性2 printk函数脆弱之处3 LOG等级4 记录缓冲区5 syslogd/klogd6 dmesg
一 调试前的准备二 内核中的bug三 内核调试配置选项1 内核配置2 调试原子操作四 引发bug并打印信息1 BUG()和BUG_ON()2 dump_stack()五 printk()1 printk函数的健壮性2 printk函数脆弱之处3 LOG等级4 记录缓冲区5 syslogd/klogd6 dmesg
本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HPLinux软件实验室。如果需要可以联系通过kanghua151@msn.com联系他。 摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种
一个简单的linux crackme的逆向 前言 最不喜欢的就是写破解教程,酒后一时冲动,老夫卿发少年狂,许下将写一篇linux平台逆向的文章的诺言,作此文实非颇不得已。 在此申明:本文在技术上非常初级,并没有用到什么高深的技术,本人水平亦有限,如有差错,还请见谅! 开始之前的准备 正如C语言教程从 hello world 开始,我
Oops可看成是内核级(特权级)的Segmentation Fault。一般应用程序(用户级)如进行了内存的非法访问(地址不合法、无权限访问、……)或执行了非法指令,则会得到Segfault信号,一般对应的行为是coredump,应用程序也可以自行获取Segfault信号进行处理,而内核出错则是打印出Oops信息。 内核打印Oops信息的执行流程: 1、do_page_fault
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的
U-BOOT 在启动内核时,会向内核传递一些参数.BootLoader 可以通过两种方法传递参数给内核,一种是旧的参数结构方式(parameter_struct),主要是 2.6 之前的内核使用的方式。另外一种就是现在的 2.6内核在用的参数链表 (tagged list) 方式。这些参数主要包括,系统的根设备标志,页面大小,内存的起始地址和大小,RAMDISK的起始地址和大小,压缩的RAMDIS
文件linux/arch/arm/boot/compressed/head.S是linux内核启动过程执行的第一个文件。 .alignstart: .type start,#function #function //type指定start这个符号是函数类型 .rept 8 //重复8次 mov r0, r0, mov r0, r0 //空操作,让前面所取指令得以执
http://blog.csdn.net/embededswordman/article/details/6704197uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个字节的头,让u-boot能够识别要加载内核的类型、加载地址等。
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)一个linux内核模块主要由以下几个部分组成。1、模块加载函数"用module_init()来指定"(必须) 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本







