linux2.6.29 swtich_to 详细分析(一)
linux内核进程切换最重要的一个部分就是宏定义switch_to,下面从几个方面来详细讲解一下:(1)内嵌汇编(2)memory破坏描述符(编译器优化)(3)进程切换的标志是什么?(4)堆栈切换的标志是什么?(5)为什么switch_to提供了三个参数?(6)汇编参数的传递?带着这几个问题,先来大
MySQL底层数据结构--大白话理解演变过程
利用假期,将之前看的零零散散的数据库底层组织结构串联起来,梳理了:二叉树,平衡二叉树,Hash索引,BTree,B+树的区别,用大白话梳理了为啥要发展出后者,进行逐次不断的迭代进化,用大白话解读,仅涉及原理的理解,供自己理清框架,也供小白们参考借鉴。首先声明:我只是百度、CSDN、知友们的搬运工,站
netlink socket编程之why & how (转)
netlinksocket编程之why&how作者:KevinKaichuanHe@2005-1-5翻译整理:duanjigang@2008-9-15<duanjigang1983@126.com>原文:http://www.linuxjournal.com/article/73
[内核模块] 用户空间内核空间ipc总结(sockopt,ioctl,mmap,netlink,pr
用户空间内核空间ipc总结(sockopt,ioctl,mmap,netlink,proc,seq,file,copy_user)原作者:ubuntuer多数的Linux内核态程序都需要和用户空间的进程交换数据,但Linux内核态无法对传统的Linux进程间同步和通信的方法提供足够的支持!本文就总结
[原创]QEMU小实验:手工遍历所有进程的方法
QEMU小实验:手工遍历所有进程的方法在内核中已经提供了遍历所有进程的方法,比如用for_each_process宏。但是如果你想加深对这部分的了解,那么可以不用这个宏,完全手工遍历一遍。下面介绍了在QEMU中,利用QEMUMONITOR,手工找出所有PROCESS的方法环境:QEMU0.9.1QE
工作队列分析
一、用法structcpu_workqueue_struct{spinlock_tlock;longremove_sequence;/*Least-recentlyadded(nexttorun)*/longinsert_sequence;/*Nexttoadd*/structlist_headwo
[通信方式] 使用netlink通讯时需要注意的一些问题
使用netlink通讯时需要注意的一些问题原作者:duanjigang之前发过一个用户态通过netlink从内核中获取网络卡列表以及每个网卡状态信息的例子大概的原理就是内核创建netlinksocket,然后用户态调用应用程序发送查询命令,或者获取所有网卡列表,或者获取某一个网卡的状态信息。当时做的
内核通知链 学习笔记
最近在看《深入理解Linux网络内幕》一书,学习了一下书中讲到的内核通知链方面的知识,写了一个读书笔记和一点代码来加深理解,希望能够对大家有一点帮助。内核通知链在网络方面得到了广泛的使用。1.通知链表简介大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求
升级2.6内核的经验与心得
1.准备:下载2.6内核linux-2.6.2-rc2.tar.gzhttp://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.2-rc2.tar.gz不需要下载http://www.kernel.org/pub/linux/kerne
用netconsole从网络上收集Kernel Panic信息详细方法
背景介绍:Netconsole是内核驱动中的一个module,可以将内核中的printk消息封装成UDP数据包发送到指定的的接收服务器上,这样可以大大方便我们对kernelpanic情况的跟踪分析。netconsole的用法:如果netconsole被编译成模块,可以用下面的命令启用netconso
什么是module 以及如何写一个module(转)
作者:庄荣城不知道在什幺时候,Linux出现了module这种东西,的确,它是Linux的一大革新。有了module之后,写devicedriver不再是一项恶梦,修改kernel也不再是一件痛苦的事了。因为你不需要每次要测试driver就重新compilekernel一次。那简直是会累死人。Mod
使用GDB与QEMU调试内核时的问题分析
使用QEMU+GDB能够实现源代码级的内核调试,但是,存在一个问题──当内核允许中断时,单步命令(n与s)会进入时钟中断。通过浏览QEMU的源代码,大体把原因找了出来。单步命令(n与s)在gdb远程调试通讯协议中是s(参看infogdb),qemu的gdbstub在受到s命令后将虚拟CPU进入单步状
ud2是什么指令?
问题:#defineBUG()\__asm____volatile__("ud2\n"\"\t.word%%c0\n"\"\t.long%%c1\n"\::"i"(__LINE__),"i"(__FILE__))ud2是什么指令?机器码好像是0f0b?BUG()能造成系统停机么?%%0、%%1是占位
arch/i386/kernel/head.S注解
'kernel/head.S'DetailComment/***************************************************************************32位启动代码:编译程序在链接内核vmlinux的时候,将vmlinux起始位置链接到0xC
请教一个扩展汇编的问题
问题:我在内核代码看汇编的时候,不明白'=&r'和'=r'是什么区别,看了n多资料都一样的,就几句话,还是没看懂解答:Unlessanoutputoperandhasthe`&'constraintmodifier,GCCmayallocateitinthesameregistera
linux-2.6内核升级文档(全)
序做一件事情,首先要知道自己在干什么,而不是盲目得升级内核,现在升级内核有点泛滥,sigh首先让我们先了解一下2.6内核的新特性一、01.模块子系统(ModuleSubsystem)、统一设备模型(UnifiedDeviceModel)和PnP支持模块子系统发生了重大变化。02.稳定性有所提高为了彻
[转贴]用tags/cscope看内核源代码-HOWTO
作者:wheelz看大家讨论得热烈,我也写点。呵呵其实内核原代码的Makefile就包含了maketags/TAGS的选项,但是生成的tags太大,因为包含了drivers等不常用的目录。因此参照内核的Makefile文件,写了一个Makefile,用来生成ctags/cscope/etags。这样
绝对精品--linux 内核代码构架图
从国外网站看到,觉得很这个图很清晰,拿过来给大家分享一下
关于inb和inw的疑问
问题:初学linux内核,在阅读网络设备驱动程序时对inb和inw函数的用法感到不解:(1)ISA网卡驱动程序的探测过程(函数netcard_probe1()中),从起始端口读取3字节网卡硬件地址进行校验:if(inb(ioaddr+0)!=SA_ADDR0¦¦inb(ioaddr+1)!=SA_A
kallsyms的分析
1.简介在v2.6.0的内核中,为了更好地调试内核,引入新的功能kallsyms.kallsyms把内核用到的所有函数地址和名称连接进内核文件,当内核启动后,同时加载到内存中.当发生oops,例如在内核中访问空地址时,内核就会解析eip位于哪个函数中,并打印出形如EIPisatcleanup_mod