- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 转_arm中system模式的作用
转_arm中system模式的作用2010-10-20 16:44<br />这几天学了很多arm细节知识,个人平时实在没有深入进去<br />交了钱被人逼着学才会努力深究,真是贱<br /><br />以前就知道arm有7种基本工作模式<br />FIQ 、IRQ由中断进入<br />UNDEF、ABORT 由程序异常进入<br />SVC由上电和软中断进入<br />user由SVC处理程序主动进入<br />但是还有一个system,使用和user相同的寄存器,但是又没有SPSR,同时还能执行特权指令
2010-11-24 14:04:00 858
原创 可重入函数
可重入函数百科名片<br />可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。<br />目录可重入函数简介编写可重入函数说明:示例:保证函数的可重入性的方法:满足下列条件的函数多数是不可重入的:举例问题问题1,如何编写可重入的
2010-11-24 14:04:00 656
原创 关于中断上下文不能阻塞的一个猜想
今天突然想到,为什么中断上下文不能阻塞呢一个进程在运行过程中,遭到中断打断,这时候用户空间保存其被打断时候的状态,然后处理器模式切换,切换到中断模式这个进程不是阻塞,而是被中断!而在中断上下文中,如果出现了阻塞,那么调度器不知道去调度谁,因为调度不能发生在中断上下文中而且中断上下文和进程上下文没有任何关系
2010-11-06 00:01:00 866
原创 中断服务下半部之tasklet详解
<br />【摘要】本文详解了中断服务下半部之tasklet实现机制。介绍了tasklet链表的组织形式tasklet_vec,在此基础之上分析了 tasklet执行流程。最后介绍了tasklet相关的API,如何编写自己的tasklet处理程序及定义一个tasklet对象并向内核提交等待调 度运行。 <br /><br /> 【关键字】中断下半 部,tasklet,tasklet_vec,tasklet_schedule,TASKLET_SOFTIRQ<br /><br /> 1
2010-10-28 17:06:00 669
原创 内核空间和用户空间 进程上下文和中断上下文
内核空间和用户空间 Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~ 4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内 核空间”。而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间)。因为每个进程可以通过系统 调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进
2010-10-28 15:15:00 615
原创 中断服务下半部之workqueue详解
【摘要】本文详解了中断服务下半部之工作队列实现机制。介绍了工作队列的特点、其与tasklet和softirq的区别以及其使用场合。接着分析了工作 队列的三种数据结构的组织形式,在此基础之上分析了工作队列执行流程。最后介绍了工作队列相关的API,如何编写自己的工作队列处理程序及定义一个 work对象并向内核提交等待调度运行。 【关键字】中断下半部,工作队 列,workqueue_struct,work_struct,DECLARE_WORK,schedule_work,schedule_delaye
2010-10-28 14:57:00 1353
转载 对 Softirq,tasklet和workqueue做一个简单的总结和分析
<br />今天看了《深入理解Linux内核》的中断和异常一章,对 Softirq,tasklet和workqueue做一个简单的总结和分析。<br /> 其实softirq和taskled都属于软中断,而工作队列是和软中断无关,仅仅是内核中的一个内核线程在等待工作任务,工作队列可以发送工作任务。不 过他们还是有个共同点,就是都有延后执行的作用。<br /> <br />1.首先看 do_softirq如何被调用和如何处 理。<br />#ifdef __ARCH_IRQ_EXIT_IRQS
2010-10-28 14:31:00 737
转载 对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU 都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个 级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制着对 硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。正是有了不同
2010-10-28 14:00:00 431
转载 由关于malloc的一个争论引起的探究
<br />前几天,在听一节课时,关于malloc返回的地址是物理地址还是线性地址,跟人进行了激烈的讨论。当时脑子也不知怎么了,硬是觉得返回的是物理地 址,还写了一个程序进行验证。<br />#include <stdio.h><br />#include <stdlib.h><br />int main()<br />{<br /> char * p = (char *)malloc(sizeof(char));<br /> printf("address=%x/n",p);<br /> retu
2010-10-28 13:10:00 376
原创 一道笔试题
某台企喜欢出这种题,几个月以前我参加其社招,此题让我挂掉,几个月后的昨天晚上校招,此题仍然出现,依旧让我挂掉,不爽,故想了想题目是这样的,给出一个字符串 比如 char * src = "dhwj,fefife,ewioqwdsd" ,给出一个分割字符串 char * split = ",gf" ,要求按照后面的字符串内容,将前面那个字符串分割,比如分割成 "dhwj" "e" "i" "e" "wioqwdsd" 。这个函数类似与c标准库里面的strtok函数,且需要将最后的输出符串保存成字
2010-10-28 10:01:00 361
转载 字符串分割
C字符串分割2009年02月13日 星期五 00:561. strtok介绍<br />众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”)<br />将一段字符串分割直到遇到"/0".<br /><br />比如,分隔符=“,” 字符串=“Fred,John,Ann”<br />通过strtok 就可以把3个字符串 “Fred” “John” “Ann”提取出来。<br />上面的C代码为<br /><br />QUOTE:int in=0;<br />
2010-10-28 00:05:00 581
转载 字符常量区和strtok
strtok函数分解字符串为一组标记串,原型为:extern char *strtok(char *s, char *delim); s为要分解的字符串,delim为分隔符字符串。首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。strtok在s中查找包含在delim中的字符并用NULL(‘/0’)来替换,直到找遍整个字符串。返回指向目前找到的最后一个标记串,当没有标记串时则返回空字符NULL。看下面代码:#include int main() {
2010-10-28 00:00:00 770
原创 c语言移位除法
除法就是移位相减 99用2进制是 1100011 5是101 先1100011 - 1010000 = 10011(其中二进制1010000 = 5乘2的4次幂) 再10011 - 1010 = 1001 ( 其中二进制1010 = 5乘2的1次幂) 再1001 - 101 = 100( 其中二进制101 = 5乘2的0次幂) 最后得到商为2^4+2^1+2^0 = 16+2+1=19(^代表次幂) 余数为二进制100 = 4 void div( int bei,int chu,int
2010-10-23 00:10:00 3140
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人