linux内核中驱动相关机制
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
多核中percpu
What is percpu data? percpu data 是内核为smp系统中不同CPU之间的数据保护方式,系统为每个CPU维护一段私有的空间,在这段空间中的数据只有这个CPU能访问。但是这种方式不提供 对异步函数访问的保护,因此在同一个CPU上还要另外的同步原语的协作。arch/x86/kernel/vmlinux.lds中有:.....转载 2012-08-12 12:00:20 · 5114 阅读 · 0 评论 -
Linux内核中的Namespace
转自---http://prettyinsight.iteye.com/blog/901468Linux内核中的Namespace提供了一个轻量级的基于系统调用层面的虚拟化解决方案。相比传统的使用VMWare,QEMU,Xen,KVM,Hurd的虚拟(图1所示),基于namespace的轻量级虚拟具有易使用,易管理,无需硬件虚拟化支持,低成本等优点。转载 2013-04-17 09:00:47 · 4460 阅读 · 0 评论 -
向linux内核版本号添加字符/为何有时会自动添加“+”号
1. 引子编译2.6.35.7 kernel版本的时候发现,“2.6.35.7“的内核版本编译成功后生成的版本号变成了“2.6.35.7+”,为什么后面会多一个加号呢?问题出现在linux的版本控制这一块:打开Makefile我们可以在文件的最上面可以发现VERSION = 2PATCHLEVEL = 6SUBLEVEL = 35EXTRAVERSION = .7N转载 2013-02-27 18:47:18 · 909 阅读 · 0 评论 -
使用Qemu模拟Cortex-A9运行U-boot和Linux
开发环境: Ubuntu 12.04 所有软件包为最新1. 安装GNU工具链sudo apt-get insatll gcc-arm-linux-gnueabisudo apt-get insatll g++-arm-linux-gnueabi安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件、头文件等。 我安转载 2013-01-28 09:51:52 · 2779 阅读 · 0 评论 -
几个Linux邮件列表
上个网真是难啊。最近移动打电话忽悠我说送个手机邮箱给我,后来才知道139邮箱本来就有免费版的,真无耻。我想用手机收点信息也不错,可也没人给我发邮件。总不能到处乱贴引来一堆小广告吧。这才意识到邮件列表真是个好东西。碰上好的邮件列表,可以安安静静潜水,看别人讨论长见识。据说高手都用邮件列表,很少用论坛的。列举几个不错的邮件列表,应该都是用同一种程转载 2013-01-08 10:11:52 · 2231 阅读 · 1 评论 -
softlock---Kernel panic - not syncing: softlockup: hung tasks
第一次解一个softlockup的bug,FAE回复的信息都不能很好的分析问题的根源,而且之前对softlockup的认识比较肤浅,所以自己捣鼓这怎么让kernel自己产生个softlockup的warning出来。 基本原理:每个CPU上起一个kernel thread,这个thread就用当前时间去更新一个percpu的全局时间锉;同时在tick中断中检查当前的转载 2012-12-19 17:03:56 · 8795 阅读 · 1 评论 -
Linux 固件子系统----如何更新固件
在一般的使用中,可能会需要使用到升级固件这个功能,在linux的系统中提供了固件子系统这个设备模型来帮助快速的升级固件。在这里先将linux中提供的常用的接口来说明下:内核的固件接口:[cpp] view plaincopy#include int request_firmware(const struct firmware **转载 2012-12-19 19:22:34 · 1489 阅读 · 0 评论 -
粒度为HZ的时钟中断里如何更新纳秒级别的xtime的值
问:在时钟中断里会调用do_timer而do_timer会调用update_wall_timeupdate_wall_time会更新墙上时间xtimextime的定义如下:struct timespec xtime __attribute__ ((aligned (16)));struct timespec { __kernel_time_t转载 2012-12-14 16:16:20 · 1003 阅读 · 0 评论 -
自旋锁spin_lock和raw_spin_lock
本文不打算详细探究spin_lock的详细实现机制,只是最近对raw_spin_lock的出现比较困扰,搞不清楚什么时候用spin_lock,什么时候用raw_spin_lock,因此有了这篇文章。/******************************************************************************************转载 2012-12-14 14:58:49 · 786 阅读 · 0 评论 -
do_irq中调用do_softirq的原因
这个是Linux的策略。中断是紧急事务,按理都应该立即处理,不得耽误。从理论上来说,是不应该有softirq这种事物的。但在现实中,如果系统总是保证处理完所有中断才干其它事情,那必然就会长时间阻塞其它子系统和用户态程序。引入softirq就成为工程中一种折中。但中断毕竟是紧急事务,系统在不繁忙的时候应该尽快处理它,所以才会在do_irq后接着调do_softirq。这里加了判断,在中断嵌套时不原创 2012-12-14 14:34:20 · 2866 阅读 · 0 评论 -
linux设备驱动归纳总结(四):5.多处理器下的竞态和并发
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这节将在上一节的基础上介绍支持多处理器和内核抢占的内核如何避免并发。除了内核抢占和中断外,由于多处理起的缘故,它可以做到多个程序同时执行。所以,进程除了要防自己的处理器外,还要防别的处理器,这个就是这节要介绍的内容。转载 2012-12-26 12:29:55 · 1188 阅读 · 0 评论 -
idr机制--integer ID management(一)
最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制。 所谓IDR,其实就是和身份证的含义差不多,我们知道,每个人有一个身份证,身份证只是 一串数字,从数字,我们就能知道这个人的信息。同样道理,idr的要完成的任务是给要管理的对象分配一个数字,可以通过这个数字找到要管理的对象。 ID ------------------转载 2012-12-05 10:18:36 · 696 阅读 · 0 评论 -
idr机制--integer ID management(二)
这篇文章主要讲述如何给要管理的对象分配一个小数字作为id。 首先看知道obj的ID,如果查找obj ,即指向obj的指针。也就是说先看我们想要达到的效果,在来分析如何实现给对象分配ID。 根据ID ,来查找obj。函数idr_find实现查找功能 假如下图中C 的ary[2]指向一个管理的obj。我们来看下如何通过数字66来查找到obj。 我们以top为根的转载 2012-12-05 10:19:19 · 1026 阅读 · 0 评论 -
Linux内核中的PID散列表实例
开发平台:基于虚拟机的Ubuntu 11.04 内核源码:linux-2.6.38.8.tar.bz2 目标平台:ARM体系结构 参考文献:《深入Linux内核架构》 关于散列表的概念可以参考博文《散列表的基本概念及其运算》。 1、PID散列表 PID散列表是在系统启动过程中通过pidhash_init转载 2013-04-17 09:59:08 · 2221 阅读 · 0 评论