Linux内核与驱动开发
yearn520
熟练掌握Windows机制和MFC框架,做过多年网络、界面方面的开发,曾在美国netdorm,摩托罗拉,诺基亚西门子通讯多个公司做过相关软件的架构和开发。
现在潜心研究基于Linux内核的虚拟机KVM,通过对Linux内核和虚拟机的研究,不断了解计算机操作系统更深层次的机制和原理。
展开
-
BOCHS 调式命令大全
<br />[执行控制] <br />c|cont 向下执行,相当于WinDBG的“g”。 <br />s|step|stepi [count] 单步执行,相当于WinDBG的“t”,count 默认为 1。 <br />p|n|next 单步执行,类似于WinDBG的“p”。 <br />q|quit|exit 退出调试,同时关闭虚拟机。 <br />Ctrl-C 结束执行状态,转载 2011-05-18 10:15:00 · 1519 阅读 · 0 评论 -
2.6.36 内核模块时间同步函数汇总
2.6.36 内核模块调用使用函数汇总:在linux内核模块中能用到的函数比用户空间多,但是它的函数往往被用得很少。当然在内核中叶可以调用用户空间的函数只要直接调用系统调用的封装函数就行,如下:如调用long gettimeofday(struct timeval tv, str原创 2011-07-14 14:50:50 · 2872 阅读 · 0 评论 -
close 造成标准输入输出scanf/printf 失灵
Linux IO:Linux系统可用的文件IO函数--打开文件,读取文件,写文件等。大致用到5个函数:open,read,write,lseek,close。另外不同的缓存器长度对read和write函数有影响。术语--不带缓存指的是每个read和write都调用内核中的一个系统原创 2011-07-21 10:47:16 · 3107 阅读 · 0 评论 -
神奇的memset
今天编译内核模块的时候发现一个字符串内存拷贝的问题: 当使用kzalloc(sizeof(char )*size ,GFP_KERNEL) 给一个字符串指针分配完一段空间以后,直接使用memcpy,strcpy,strcat之后,模块直接卡死,甚至系统崩溃。找了半天没有发现原因,原创 2011-07-08 20:11:04 · 2593 阅读 · 0 评论 -
Linux内核模块导出后无法调用问题解决(模块间函数调用通讯)
Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。 1. 符号导出函数EXPORT_SYMB原创 2011-07-07 12:28:00 · 6281 阅读 · 1 评论 -
APIC 中断属性详解
APIC:Intel APIC由一组中断输入信号,一个24*64bit的Programmable Redirection Table(PRT),一组register和用于从APIC BUS(FSB/QPI)上传送APIC MSG的部件组成,当南桥的IO device通过IOAPIC的interrupt lines产生interrupt,IOAPIC将根据内部的PRT table格式化成中断请求转载 2011-06-20 08:54:00 · 6016 阅读 · 0 评论 -
常见的Linux内核中内存分配函数
常见的Linux内核中内存分配函数1.原理说明 Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示。四级页表分别为: * 页全局目录(Page Global Directory) * 页上级目录(Page Upper Directory) * 页中间转载 2011-06-08 09:05:00 · 167 阅读 · 0 评论 -
SSH SCP(不同服务器间的文件拷贝)
<br /> <br />SSH提供了一些命令和shell用来登录远程服务器。<br />在默认情况下它不允许你拷贝文件,但是还是提供了一个"scp"命令。假定你想把本地计算机当前目录下的一个名为"wuyang"的文件拷贝到远程服务器192.168.0.2上你的家目录下。而且你在远程服务器上的帐号名为"root"。<br />可以用这个命令: scp wuyang root@192.168.0.2 把文件拷贝回来<br />用这个命令: scp root@192.168.0.2:cx<br />关于scp命转载 2011-06-02 15:10:00 · 5787 阅读 · 0 评论 -
Linux 2.6.36 x86 内核中断初始化过程详解
<br />随着硬件技术的发展,中断控制芯片已经不再是传统的ISA总线连着的简单PIC了,APIC,MSI,MSIX等等的词语大家已经非常的熟悉。同时,Linux内核也在不断发展,它在中断上的实现也越来越复杂,在这里我来讨论介绍一下Linux x86 架构下的中断初始化过程。<br /> <br />在start_kernel()之前的中断门初始化就不多啰嗦了,在随便的内核教科书里都能看到,这里就从start_kernel以后开始。<br /> <br />1.8259a、LAPIC相关数据结构初始化<br原创 2011-05-24 13:12:00 · 3843 阅读 · 0 评论 -
Request_irq和setup_irq的区别
Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。<br />/*<br />* Internal function to register an irqaction - typically used to<br /> * allocate special interrupts that are part of the architecture.<br />*/<br />int setup_irq(un转载 2011-05-23 09:19:00 · 906 阅读 · 0 评论 -
内核调用用户空间可执行文件以及潜在问题分析
在Linux中要在用户空间访问内核一般使用ioctl或者系统调用, 反过来从内核调用用户空间方法也非常多,有一种方法就是使用call_usermodehelper_exec 函数。1. 构造参数我们知道在调用一个函数之前需要知道函数地址,参数,环境变量等信息,所以在调用这个函数前原创 2011-07-26 09:52:16 · 5387 阅读 · 1 评论