
内核
Shawn.Hu
1
展开
-
怎么查看编译的Linux内核源代码的版本信息
http://blog.youkuaiyun.com/supenman_mwg/article/details/38999989查看Linux内核源代码的顶层MakefileVERSION = 3PATCHLEVEL = 14SUBLEVEL = 17EXTRAVERSION =NAME = Remembering Coco转载 2016-02-29 16:11:58 · 3411 阅读 · 0 评论 -
Driver porting: supporting mmap()
http://lwn.net/Articles/28746/Occasionally, a device driver will need to map an address range into a userprocess's space. This mapping can be done to give the process directaccess to a device's转载 2013-04-12 11:05:27 · 841 阅读 · 0 评论 -
remap_pfn_range、vm_pgoff、pfn
http://linux.chinaunix.net/bbs/archiver/tid-900802-page-2.htmlhttp://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=651015&page=0&view=collapsed&sb=5&o=7&fpart=1. vma->vm_pgoff 是转载 2013-04-11 17:40:12 · 4351 阅读 · 0 评论 -
Linux设备驱动之I/O端口与I/O内存
http://www.cnblogs.com/geneil/archive/2011/12/08/2281367.html一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。 从CPU连出来一把线:数据总线、地址总线、控制总线,这把转载 2013-03-27 11:05:10 · 743 阅读 · 0 评论 -
Linux设备驱动程序学习(14)-Linux设备模型(各环节的整合)
http://blog.chinaunix.net/uid-20543672-id-94314.html通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟转载 2013-04-07 21:27:14 · 733 阅读 · 0 评论 -
总线设备驱动框架程序 及 struct device中消失的bus_id的取代方法
装载自http://blog.youkuaiyun.com/sjwangjinbao/article/details/6077225编写总线设备驱动程序的时候,发现2.6.33.2内核中的struct device已经没有bus_id的成员了,发现了const char *init_name成员。但是,这个成员是不能直接用来设置和读取设备名的。 对内核操作的方法为dev_name和de转载 2013-04-07 16:05:52 · 1070 阅读 · 0 评论 -
udev详解
2008年06月26日 09:27 来源:ChinaUnix博客 作者:新华网 编辑:周荣茂 http://os.chinaunix.net/a2008/0626/982/000000982085.shtml 如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由m转载 2013-04-07 14:45:19 · 855 阅读 · 0 评论 -
关于内核模块挂载出现“no symbol version for”问题的研究
http://blog.chinaunix.net/uid-20543672-id-3023148.html前几天一个同事问我:如果一个模块要调用另一个模块的函数,要不要做什么特别的处理?我当时只是知道需要将被调用的函数EXPORT_SYMBOL();。但是由于具体的模块实验自己还没有做过,我就立马做了一个给他看,自己也验证一下。这实验一做,问题就来了:虽然在编译通过了(有警告:转载 2013-04-07 19:05:57 · 13090 阅读 · 0 评论 -
嵌入式Linux之我行——S3C2440上看门狗(Watchdog)驱动开发实例讲解
http://blog.chinaunix.net/uid-22174347-id-1786939.html嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主转载 2013-03-24 16:52:01 · 1306 阅读 · 1 评论 -
Linux设备驱动之内存映射
http://blog.youkuaiyun.com/chenjin_zhong/article/details/63142131. 内存映射所谓的内存映射就是把物理内存映射到进程的地址空间之内,这些应用程序就可以直接使用输入输出的地址空间,从而提高读写的效率。Linux提供了mmap()函数,用来映射物理内存。在驱动程序中,应用程序以设备文件为对象,调用mmap()函数,内核进行内存转载 2013-04-11 18:02:04 · 892 阅读 · 0 评论 -
Anatomy of the Linux SCSI subsystem
http://www.ibm.com/developerworks/linux/library/l-scsi-subsystem/GNU/Linux and SCSI are a natural pair because they both have similar characteristics in their respective environments. GNU/Linux is转载 2013-04-22 19:26:48 · 1669 阅读 · 0 评论 -
Linux 内核引导参数简介
http://www.jinbuguo.com/kernel/boot_parameters.html概述内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drive转载 2015-07-27 11:05:57 · 7917 阅读 · 0 评论 -
8259a 的地址 0x21 和 0xA1 的作用
0.12完全剖析讲的有点出入,下面的是正解:转自:http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH17/CH17-3.html另外这个系列文章貌似不错,收藏以后慢慢看:The Art of Assembly Language Programminghttp://cs.smith.edu/~thiebaut/ArtOfA转载 2013-07-22 22:01:33 · 4320 阅读 · 1 评论 -
int 13h 参数大全
http://blog.sina.com.cn/s/blog_5028978101008wk2.html直接磁盘服务(Direct Disk Service——INT 13H) 00H —磁盘系统复位 01H —读取磁盘系统状态 02H —读扇区 03H —写扇区 04H —检验扇区 05H —格式化磁道 06H —格式化坏磁道 07H —格式转载 2013-06-06 17:47:02 · 1171 阅读 · 0 评论 -
哪些指令会改变汇编的标志位
http://nannan408.iteye.com/blog/970585这些书上都没有现成的答案,需要自己总结,感谢BEYOND0769,做出这么出色的总结。以下是会改变标志位的指令。(1)加法指令:ADD、ADC、INC、XADD除了INC不影响CF标志位外,都影响条件标志位。 CF、ZF、SF、OF转载 2013-06-06 17:48:59 · 7842 阅读 · 0 评论 -
Intel 8086
http://zh.wikipedia.org/wiki/8086转载 2013-06-06 11:01:09 · 631 阅读 · 0 评论 -
i386段描述符中的可执行位(Executable位,非Expansion Direction位)
http://books.google.com/books?id=e0CVWk7TL0oC&pg=PA373&lpg=PA373&dq=segment+descriptor+executable&source=bl&ots=wXHERYDJvQ&sig=xegdQNGwwf90HJlrYdIUlTwBDoY&hl=en&sa=X&ei=RVy0UePbEJTi4APZ7IDgCg&ved=0CEg转载 2013-06-09 19:05:52 · 918 阅读 · 0 评论 -
The MSI Driver Guide HOWTO
http://www.mjmwired.net/kernel/Documentation/MSI-HOWTO.txt1 The MSI Driver Guide HOWTO2 Tom L Nguyen tom.l.nguyen[AT]intel[DOT]com3 10/03/20034 Revised Feb 12, 2004 by Martine Silbermann转载 2013-05-06 14:25:14 · 1556 阅读 · 0 评论 -
e820与kernel物理内存映射
http://deltamaster.is-programmer.com/posts/37297.html我们都对操作系统如何管理内存有一定的了解,然而,在操作系统开始管理内存之前,首先要获取物理内存的信息,比如一共有多少物理地址是可用的,有哪些物理地址是被ACPI(Advanced Configuration and Power Interface)数据使用,这些信息从何而来呢?e8转载 2013-05-19 08:59:12 · 2122 阅读 · 0 评论 -
Linux设备驱动模型学习笔记(kobject,kset,subsystem子系统)
1. sysyfs展示了linux设备模型,sysfs中显示的每一个对象都对应一个kobject,但反过来不成立,每一个kobject并不一定出现在sysfs中,但kset会。使用了kobject_add函数添加某个kset中的kobject会在sysfs中显示为一个目录,其属性为目录中的文件。2. kobject的作用为嵌入其他对象(如设备等)的结构体中,将其链接到设备模型中,并原创 2013-04-05 13:23:23 · 1716 阅读 · 0 评论 -
透过 Linux 内核看无锁编程
非阻塞型同步 (Non-blocking Synchronization) 简介如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步可分为阻塞型同步(Blocking Synchronization)和非阻塞型同步( Non-blocking Synchronization)。阻塞型同步是指当一个线程到达临界区时,因另外一个线程已经持有访问该共享数据的锁,从转载 2013-03-28 16:01:36 · 655 阅读 · 0 评论 -
工作队列的初始化(INIT_WORK的参数问题)
http://blog.youkuaiyun.com/laichao1112/article/details/6313175在编写工作队列的小例子时,遇到error: macro "INIT_WORK" passed 3 arguments, but takes just 2 从2.6.20的内核开始,INIT_WORK宏做了改变,原来是三个参数,后来改成了两个参数转载 2013-03-30 14:28:35 · 924 阅读 · 0 评论 -
一致性代码段和非一致性代码段
一致代码段:非一致代码段.之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?于是os将内核程序开辟一些可以供用用户程序访问的段.但是不允许用户程序写入数据.1.内核不用知道用户程序的数据.内核不用调用用户程序的数据.内核不用转移到用户程序中来.2.用户程序只能访问到内核的某些转载 2009-11-27 11:07:00 · 5980 阅读 · 2 评论 -
gentoo环境下裁剪、安装内核
http://blog.youkuaiyun.com/hmsiwtv/article/details/7542060硬件平台:TOSHIBA M600-02S软件平台 :主机 Fedora 16 x86_64 虚拟机 VMware WorkStation 8.0.3 主机Lspci结果:[plain] view plaincopy00:00.0 Ho转载 2013-01-22 13:31:26 · 1347 阅读 · 0 评论 -
内核中的 define DEFINE(sym, val) 宏 以及 asm offset .[csh]问题
#define DEFINE(sym, val) \ asm volatile("\n->" #sym " %0 " #val : : "i" (val))那个宏定义在asm-offsets.c中,这个.c文件根本就不是用来编译运行的,只是在编译内核的时候,用它生成一个asm-offsets.s文件,然后使用一个脚本将这个asm-offsets.s再转换为asm-of转载 2013-01-30 16:50:11 · 1979 阅读 · 0 评论 -
how to add syscall on x86_64
http://blog.zhangsen.org/2008/12/how-to-add-syscall-on-x8664.htmlThere is little documentation about how to add a system call to Linux kernel on x86_64. This is how I do it.Of course addin转载 2011-11-09 21:14:07 · 1649 阅读 · 0 评论 -
request_irq() | 注册中断服务
request_irq() | 注册中断服务在 2.4 内核和 2.6内核中都使用 request_irq() 函数来注册中断服务函数。在 2.4 内核中,需要包含的头文件是 #include ,2.6 内核中需要包含的头文件则是 #include 。函数原型如下:2.4 内核int request_irq (unsigned int irq,void转载 2010-09-28 20:19:00 · 605 阅读 · 0 评论 -
LINUX程序的虚拟内存映射机制
1)虚拟内存的解释:虚拟内存的核心概念是指代码所用的内存地址与物理地址没有关系.在用户空间中,一个进程的虚拟地址A指向不同的物理内存,而不是另一个进程的地址A.任何时候CPU发送指令向内存存取数据时,通过软件将虚拟地址的数据变为物理地址.将虚拟地址变为物理地址变为物理地址的工作是由内存管理单元(MMU)完成的.虚拟内存地址也可以称为逻辑地址.2)内存管理单元:内存管理单转载 2010-08-09 19:25:00 · 4356 阅读 · 0 评论 -
Linux内核高端内存管理
原先一直都对Linux高端内存的管理认识模模糊糊的,可能主要是初次接触Linux kernel 是0.11版吧,当初的内存设计是16M,Linus对拥有32M的内存都是觊觎万分,1G内存恐怕是天方夜谭了。16M内存哪里还顾得上高端内存,脑子就一直没有这种概念。先我们还是来看看为什么要有高端内存? 80386的线性寻址空间是4G,内核空间从3G开始,如果全部采用"线性映射"(物理地址和逻辑地转载 2010-08-09 14:03:00 · 839 阅读 · 0 评论 -
Linux 内存管理 -- 高端内存的映射方式
解释一:高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射空间” 最多映射转载 2010-08-09 13:53:00 · 760 阅读 · 0 评论 -
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
http://www.ibm.com/developerworks/cn/linux/l-module26/转载 2010-05-18 18:51:00 · 444 阅读 · 0 评论 -
Linux 2.6 对新型 CPU 快速系统调用的支持
http://www.ibm.com/developerworks/cn/linux/kernel/l-k26ncpu/index.html转载 2011-11-12 14:19:06 · 677 阅读 · 0 评论 -
kbuild: Documentation - how to build external modules
From: Sam Ravnborg To: linux-kernel@vger.kernel.orgSubject: [RFC] kbuild: Documentation - how to build external modulesDate: Tue, 20 Apr 2004 23:51:31 +0200转载 2013-03-20 15:41:01 · 768 阅读 · 0 评论 -
搭建内核开发调试环境
闲来无事, 总结一下内核开发调试环境的搭建过程, 希望能对和我一样的内核新手们有所帮助.方案我的测试系统在QEMU中运行, Host和Guest的架构都是x86_64, 用Busybox生成的initrd做为根文件系统, KGDB做为调试器.生成内核内核中需要打开的选项是CONFIG_EXPERIMENTAL, CONFIG_DEBUG_INFO, CONFIG_KGDB和CO转载 2013-03-15 22:43:57 · 2180 阅读 · 0 评论 -
使用KGDB调试Linux内核
Author : ZC Miao Date : Sunday, July 20 2008 * 简介 从 2.6.25 开始,Linux 主干内核开始内置了代码级调试器 kgdb。通过 kgdb,开发者就可以在内核代码中设置断点,单步调试和观察变量。为了使用 kgdb,你需要有两个系统。一个作为开发系统,一个作为测试系统嗯。两台机器通过串口线连接。转载 2013-03-15 22:38:09 · 2323 阅读 · 0 评论 -
使用KGDB调试内核 on QEMU
http://www.kgdb.info/kgdb/use_kgdb/using_kgdb_base_qemu/1: 编译Linux + KGDB1.1: 安装编译工具请参考其他相关教程,推荐在安装系统的时候就选择上编译器及支持库1.2: 下载最新内核代码在lmkl.org下载最新的内核源码, 可以直接使用浏览器下载代码,当然也可以使用命令wget来下载,下载后需使用tar转载 2013-03-14 15:32:48 · 1447 阅读 · 0 评论 -
Qemu compatible kernel configuration
http://www.gnuwakes.org/documentation/0.1/html/ch12s07.htmlFirst, create the allno.config file. This file will be used to compile a Qemu compatible kernel.cat allno.config# allno.config转载 2013-03-14 22:34:43 · 1092 阅读 · 0 评论 -
利用proc 实现内核和用户态交换数据
http://www.cnblogs.com/ziziwu/archive/2011/10/20/2218975.html最近写程序需要内核得到用户态的参数,比较苦逼幸福的是虽然ioctrl 用不了,可以用proc实现,proc文件系统提供了一种内核和用户态交互的方法。proc文件系统的详细接口看主要需要关注的是这几个函数:struct proc_dir_entry转载 2013-03-11 17:17:44 · 972 阅读 · 0 评论 -
内核中的likely()和unlikely()
最近在看内核代码时,在条件判断中出现了likely和unlike,比如在seq_read中有如下代码片段:1 if (err 0)2 break;3 if (unlikely(err))4 m->count = 0;5 if (unlikely(!m->count)) {6转载 2013-02-01 17:13:44 · 560 阅读 · 0 评论 -
linux内核添加系统调用
内核层:1. 内核arch/x86/kernel/syscall_table_32.S.long sys_mysyscall /* 285 */ /* available */2. arch/x86/include/asm/unistd_32.h#define __NR_mysyscall 2853. 添加函数代码asmlinkage int sy原创 2013-01-31 21:26:21 · 917 阅读 · 0 评论