发布时间:2012-12-30 15:39:38
内核Oops小结出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值。Oops如何产生的解释如下: 由于处理器使用的地址几乎都是虚拟地址,这些地址通过一个被称为“页表”的结构被映射为物理地址。当引入一个非法指针的时候,分页机制无法将该地址映射到物理地址,此时处理器就会向操作系统发出一个“页面失效(page fault)”的信号。如果地址非法“换入......【阅读全文】
发布时间:2012-12-30 15:39:38
内核Oops小结出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值。Oops如何产生的解释如下: 由于处理器使用的地址几乎都是虚拟地址,这些地址通过一个被称为“页表”的结构被映射为物理地址。当引入一个非法指针的时候,分页机制无法将该地址映射到物理地址,此时处理器就会向操作系统发出一个“页面失效(page fault)”的信号。如果地址非法“换入......【阅读全文】
发布时间:2012-12-30 09:51:58
模块就是能用命令进行加载到内核或从内核卸载的程序,它们可以使机器在不重启的情况下可以扩展内核功能,其中一种模块类型就是驱动,可以用lsmod命令来查看什么模块已经被加进内核。 当内核需要一个不是驻留在内核里的模块时,它会执行modprobe命令去把模块加载上,而传递给modprobe命令的参数有两种形式,如char-major-180-* usbcore,该种形式定义在/etc/modprobe.d/aliases中,对应的模块名为usbcore.ko,然后modprobe将去查看一下/lib/modules/version/modu......【阅读全文】
发布时间:2012-12-26 18:54:34
·Linux设备驱动程序学习(1)-字符设备驱动程序·Linux设备驱动程序学习(0)-Hello, world!模块·Linux设备驱动程序学习(2)-调试技术 ·Linux设备驱动程序学习(3)-并发和竞态·Linux设备驱动程序学习(4)-高级字符驱动程序操作[(1)ioctl and llseek]·Linux设备驱动程序学习(5)-高级字符驱动程序操作[(2)阻塞型I/O和休眠]·Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]·Linux设备驱动程序学习(7)-内核的数据类型·Linux设备驱动程序学习(9)-与硬件通信 ·L......【阅读全文】
发布时间:2012-12-26 18:39:29
在这里首先需要说明,这一系列的文章可能跨度比较大,比如按照正常的逻辑,写完怎样搭建开发环境之后,就该接着讲一个helloworld的内核模块,然后才是这一篇字符驱动的文章,但是我不想重复的去写那么多东西,至于有这方面需求的博友,可以随便google一下就能查到很多类似的文章,因为我是希望linux的博客和Mac专题的一起同时对比着写,所以理论上的东西不会太多,主要还是讲解每一个能真正运行起来的小实例,用这种方式来阐述内核开发的方方面面。而且需要重点说明的是,这一个阶段涉及的比较多的内容是关于网络方面的扩展,也就是主要介绍的内容是Netfilter,因为在M......【阅读全文】