
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
第六章 Linux内核的Softirq机制(By 詹荣开,NUDT) Copyright © 2003 by 詹荣开E-mail:zhanrk@sohu.comLinux-2.4.0Version 1.0.0,2003-2-14 摘要:本文主要从内核实现的角度分析了Linux 2.4.0内核的Softirq机制。本文是为那些想要了解L
前段时间为了解决内核模块无法卸载的问题,对模块的加载过程详细地学习了一番。加载模块时常用的命令是insmod和modprobe,这两个命令主要是通过系统调用sys_init_module()来完成主要的工作,用户层做的更多的是对参数的处理,以及将插入的模块加入到内存中。系统调用sys_init_module()将大部分工作委托给load_module()函数来完成,load_module()中的操
在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信
在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信
看内核代码也有一段时间了,记了很多注释,分享出来。地址:http://www.kuaipan.cn/file/id_61251671069793742.htm
在lock_timer_base()函数中看到在for循环操作中调用了cpu_relax(),本来以为是要让出CPU,调度其他进程运行,但是看代码之后发现完全不是这么回事。cpu_relax()中只有一条调用语句,调用的是rep_nop函数。rep_nop()函数如下:static inline void rep_nop(void){asm volatile("rep; nop" :
参考文章:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/developers-handbook/kerneldebug-kld.html这篇文章主要是对参考文章的简单整理,大同小异。首先,需要在编译模块时加入调试信息。两种方式,一种是编译时使用“make COPTS-g”,另一种是用“gcc -g”作为“gcc”的别名。
在我决定自己动手安装kvm虚拟机的时候,我最先去的官网找安装的步骤,没花多大力气就找到了《Getting KVM to run on your machine》这篇文章,按照上面的步骤开始安装。根据这篇文章,安装kvm虚拟机并运行,只需要以下三个步骤:1. /usr/local/kvm/bin/qemu-img create -f qcow2 vdisk.img 10G







