
linux内核
文章平均质量分 91
bytxl
归零。
得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。
不怕死,不找死。
展开
-
几个make config的作用
最近编译一小工具源码时,需要用到内核源码的支持。编译内核源码时,用到了一条命令make oldconfig,查阅了一些资料,弄清了它的作用。如下:1、如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。2.如果.config存在,运行make config/menuconfig时的缺省设置即是原创 2015-12-22 09:24:04 · 9224 阅读 · 0 评论 -
linux Oops和Panic关系
常在河边走,哪能不湿鞋。用Linux,总有死机的时候,如果运气好,会看到一些所谓"Oops"信息(在屏幕上或系统日志中),比如:Unable to handle kernel paging request at virtual address f899b670printing eip:c01de48c*pde = 00737067Oops: 0002 [#1]Modul转载 2015-05-05 17:31:26 · 1243 阅读 · 0 评论 -
使用Crash工具分析 Linux dump文件
前言Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气特性,机器重启后,上次错误发生时的现场会遭到破坏,这使得查找 内核的错误变得异常困难。内核社区和一些商业公司为此开发了很多种调试技术和工具,转载 2015-04-13 14:21:20 · 11367 阅读 · 0 评论 -
printk与内核日志打印优先级设置
1. 控制台的日志优先级#define KERN_EMERG "" /* 致命级:紧急事件消息,系统崩溃之前提示,表示系统不可用 */#define KERN_ALERT "" /* 警戒级:报告消息,表示必须采取措施转载 2015-03-30 16:45:22 · 2065 阅读 · 0 评论 -
uImage、zImage、bzImage、vlinzx区别
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根 据特定的硬件及需求重新编译Linux内核。编译Linux 内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件 . 编译过RedHat Linux内核的人对其中的System.map、vmlinuz、initrd转载 2014-07-02 17:07:30 · 742 阅读 · 0 评论 -
修改内核来定位系统僵死问题
在系统空间可能会发生这样一种情况:系统僵死!此时系统处于僵死状态,进程不再运行!那么有没有办法找到这个僵死的进程呢?答案是肯定的!这里要引入的就是系统时钟中断的概念:即便是在系统将死的情况下,系统时钟中断依然在以固定的频率发生,那么我们就可以进入系统时钟中断的处理函数中去将当前僵死的进程的一些信息打印出来!我们在命令行输入:# cat /proc/interrupts转载 2014-07-30 08:55:41 · 946 阅读 · 0 评论 -
Linux内核目录结构
arch目录arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。| --x86 /* 英特尔cpu及与之相兼容体系结构的子目录*/| |--boot /*引导程序*/| | |--compressed /*转载 2014-12-18 17:57:31 · 600 阅读 · 0 评论 -
linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间
linux驱动程序一般工作在内核空间,但也可以工作在用户空间。下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们。 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为"内核空间".而将较转载 2014-12-18 14:57:16 · 1008 阅读 · 0 评论 -
Linux内核驱动学习
本人在学驱动时一不小心按照国嵌内核驱动课件整理出的学习资料,现在分享给大家。其中基础知识讲解很全面,实例非常丰富,在博文中都上传了源代码。免得Linux驱动初学者在网上到处找相关的学习资料。 1.·Source Insight代码阅读器2.·Linux内核简介3.·Linux内核目录结构4.·开发环境配置之内核升级5.·Linux内核模块开发转载 2014-12-18 14:32:29 · 569 阅读 · 0 评论 -
Linux内核简介
Linux体系结构Linux由用户空间和内核空间两部分组成。为什么Linux系统会被划分为用户空间与内核空间?现代CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式(usr)、快速中断(fiq)、外部中断(irq)、管理模式(svc)、数据访问中止(abt)、系统模式(sys)、未定义指令异常(und)Linux系统利用了CPU的这一转载 2014-12-18 14:34:42 · 693 阅读 · 0 评论 -
Linux内核——cli()和sti()——标志寄存器的中断标志
cli()和sti()有点类似于汇编指令中的CLI和STL,当某个任务在执行的过程中不想被中断,则可以在任务的开始出执行cli(),在任务的结束处执行sti(),恢复中断的执行。 个人理解,CLI/STI和cli()/sti()工作的机制是相同的,都是对标志寄存器中的中断标志进行操作。一般在汇编指令中,CLI 和STL往往是成对出现的;但是cli()和sti()不一定是成对出现转载 2014-10-13 09:13:30 · 4995 阅读 · 0 评论 -
理解GRUB2工作原理及配置选项与方法
http://zpz.name/1625/转载 2014-09-16 18:39:12 · 11620 阅读 · 0 评论 -
linux内核——list_for_each_entry
http://blog.youkuaiyun.com/orzlzro/article/details/6343415转载 2014-09-05 08:51:26 · 786 阅读 · 0 评论 -
Grub命令
http://www.cnblogs.com/uptownBoy/articles/2041631.html转载 2014-07-03 15:23:35 · 1240 阅读 · 0 评论 -
linux启动过程详解
介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)一、简单介绍RHEL开机时的先后顺序BIOS —> MBR —> Kernel —> init1、当电脑一打开电源时电脑就会进入BIOS(BIOS的工作主要是检测一些硬件设备);2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就转载 2014-07-03 14:25:46 · 771 阅读 · 0 评论 -
驱动程序调试方法之printk——自制proc文件(一)
首先我们需要弄清楚proc机制,来看看fs/proc/proc_misc.c这个文件,从入口函数开始看:proc_misc_init(void) #ifdef CONFIG_PRINTK{struct proc_dir_entry *entry;entry = create_proc_entry("kmsg", S_IRUSR, &proc_root);/转载 2014-07-30 08:49:42 · 1124 阅读 · 0 评论 -
oops的解读方法-----怎么通过oops查找源码行
-----------------------------------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://blog.youkuaiyun.com/android_huber交流邮箱:dp.shao@gmail.com--------------------------------------------转载 2015-05-06 16:41:21 · 968 阅读 · 0 评论 -
Linux内核Backlog笔记
一。listen方法传入的backlog参数,net.core.somaxconn这个参数具体意义,先看看Linux Socket的listen解释man listen #include int listen(int sockfd, int backlog);int类型的backlog参数,listen方法的backlog意义为,已经完成三次握手、已原创 2015-06-08 09:19:31 · 3946 阅读 · 0 评论 -
关于linux内核学习的误区以及相关书籍介绍
第一篇先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?linus torvalds本人是这样回答的:你必须使用过linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 1转载 2015-12-18 09:23:13 · 905 阅读 · 0 评论 -
Linux slab 分配器剖析
http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/转载 2014-04-28 16:37:59 · 604 阅读 · 0 评论 -
Linux内核--网络栈实现分析(一)--网络栈初始化
http://www.360doc.com/content/07/0530/11/26398_528813.shtml转载 2014-10-09 13:35:39 · 645 阅读 · 0 评论 -
Linux网络代码导读
http://www.360doc.com/content/07/0530/11/26398_528859.shtml转载 2014-10-09 13:45:05 · 610 阅读 · 0 评论 -
struct iphdr IP头部与tcphdr tcp头部与linux中的struct IP IP头部
struct iphdr IP头部 sk_buff->iphdr/usr/src/linux-2.6.19/include/linux/ip.hstruct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:4, version:4;#elif转载 2015-05-04 11:53:38 · 5064 阅读 · 0 评论 -
Linux Cache 机制探究
http://server.zol.com.cn/276/2763547.htmlLinux运用一个功能广泛的缓冲和缓存框架来提高系统的速度。缓冲和缓存利用一部分系统物理内存,确保最重要、最常使用的块设备数据在操作时可直接从主内存获取,而无需从低速设备读取。物理内存还用于存储从快设备读取的数据,使得随后对该数据的访问可直接在物理内存进行,而无需从外部设备再次取用。考虑系统中多种因素然后延迟写回转载 2014-04-29 08:18:56 · 895 阅读 · 0 评论 -
local_irq_save和 local_irq_disable
local_irq_disable禁用当前处理器上的中断发送。注意, flags 被直接传递, 而不是通过指针来传递。 local_irq_disable不保存状态而关闭本地处理器上的中断发送; 只有我们知道中断并未在其他地方被禁用的情况下,才能使用这个版本。如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在转载 2015-09-26 15:00:28 · 2334 阅读 · 0 评论 -
kmalloc使用相关
Kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零。Flags参数#includeVoid *kmalloc(size_t size, int flags);第一个参数size是要分配的块的大小,第二个参数是分配标志(flags),他提供了多种kmalloc的行为。最常用的GFP_KERNEL,他表示内存分配(最转载 2015-09-22 11:33:39 · 2026 阅读 · 0 评论 -
PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理
相对于linux来说,udev还是一个新事物。然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了。udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现。 udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比转载 2015-11-10 14:46:22 · 642 阅读 · 0 评论 -
module_init 和 late_initcall 区别
在init.h 中有如下定义 #define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)转载 2015-09-18 20:04:54 · 1454 阅读 · 0 评论 -
linux中Oops信息的调试及栈回溯—Linux人都知道,这是好东西!
Oops 信息来源及格式Oops 这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。Oops 信息包含以下几部分内容。1 一段文本描述信息。比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000”的信息,它说明了发生的是转载 2015-05-06 15:52:40 · 915 阅读 · 0 评论 -
Linux内核的Oops
简介什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们原创 2015-08-13 11:23:08 · 1072 阅读 · 0 评论 -
Linux内核模块的编译基础知识
读《嵌入式系统设计与应用开发》第7章linux2.6内核驱动原理关于内核驱动的东西网络上有很多,但网上的东西还是感觉有点笼统,读过之后就忘了,还是需要写下来,或者写到本子上,自己形成一个概念好一些。读了这本书上的东西,把觉得好的东西写下来,已备不时之用,也强化记忆。7。2。1内核模块的概念介绍内核模块的同时,也说明一下和应用程序的区别。虽然内容很多,但觉得都很有用。转载 2015-07-16 10:47:55 · 640 阅读 · 0 评论 -
linux设备驱动makefile入门解析
以下内容仅作参考,能力有限,如有错误还请纠正。对于一个普通的linux设备驱动模块,以下是一个经典的makefile代码,使用下面这个makefile可以完成大部分驱动的编译,使用时只需要修改一下要编译生成的驱动名称即可。只需修改obj-m的值。ifneq ($(KERNELRELEASE),)obj-m:=hello.oelse#generate the path转载 2015-07-16 10:42:31 · 670 阅读 · 0 评论 -
make -C $(LINUX_KERNEL_PATH) M=$(PWD) modules中的M选项
新的内核模块编程中的make命令里有个M选项,如下: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesM=$(PWD) 意思是返回到当前目录继续读入、执行当前的Makefile。 请参考:从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响这个M是kbuild的东西呢,还是ma转载 2015-07-16 10:16:48 · 5508 阅读 · 0 评论 -
Linux内核等待队列机制介绍
相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是没有加上 O_NONBLOCK 的情形),直到有资料可读取才会传回来。在 Linux kernel 里有一个数据结构可以帮助我们做到这样的功能。这个数据结构就是这里要跟各位介绍的 wait queue。在转载 2014-09-09 18:41:57 · 840 阅读 · 0 评论 -
file_operations 结构体
file_operations 结构体中的成员函数是字符设备驱动程序设计的主体内容,这些函数实际会在应用程序进行 Linux 的 open()、write()、read()、close() 等系统调用时最终被调用。file_operations 结构体目前已经比较庞大,它的定义如下: 定义在 linux/include/linux/fs.h struct file_oper转载 2014-09-13 11:13:21 · 844 阅读 · 0 评论 -
深入分析Linux内核源码——6.3 内存的分配和回收
6.3 内存的分配和回收 在内存初始化完成以后,内存中就常驻有内核映象(内核代码和数据)。以后,随着用户程序的执行和结束,就需要不断地分配和释放物理页面。内核应该为分配一组连续的页面而建立一种稳定、高效的分配策略。为此,必须解决一个比较重要的内存管理问题,即外碎片问题。频繁地请求和释放不同大小的一组连续页面,必然导致在已分配的内存块中分散许多小块的空闲页面。由此带来的问题是,即使这些小块的转载 2014-08-29 18:42:08 · 2772 阅读 · 0 评论 -
剖析RedHat Linux中三个重要内核文件
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l。编译过RedHat Linux内核的人对其中的System.map 、vmli转载 2014-08-01 09:04:00 · 609 阅读 · 0 评论 -
使用 /sys 文件系统访问 Linux 内核
http://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/转载 2014-08-19 11:17:15 · 885 阅读 · 0 评论 -
驱动程序调试方法之printk——printk的原理与使用
http://liu1227787871.blog.163.com/blog/static/205363197201269104245116/转载 2014-07-30 08:48:27 · 1339 阅读 · 0 评论 -
Linux之基础篇-编译核心
一、什么情况下,需要对核心重新编译?1. 针对特定的CPU类型优化核心;2. 提供对没有编译到标准核心文件中的硬件驱动的支持;3. 支持特殊的硬件;4. Bug修复或增加新特征所需要的驱动更新;5. 使用新核心中的新特征;6. 为了优化内存而删除不再使用的驱动和特征。转载 2014-07-29 20:11:38 · 786 阅读 · 0 评论