每个CPU有一个单独的softnet_data实例,用来存储与网络中断处理相关的报文输出和输出队列。在输出过程中会用到softnet_data中的output_queue和completion_queue队列。
/*
* Incoming packets are placed on per-cpu queues so that
* no locking is needed.
*/
stru...
分类:
其他好文 时间:
2014-08-03 10:19:35
阅读次数:
378
出现原因 1. Linux在中断处理程序中,它不处于任何一个进程上下文,如果使用了可能睡眠的函数,则系统调度会被破坏,导致kernel panic。因此,在中断处理程序中,是不能使用有可能导致睡眠的函数(例如信号量等)。 在中断发起的软中断中,其上下文环境有可能是中断上下文,同理,也不能调用可能导致...
分类:
其他好文 时间:
2014-07-31 20:33:57
阅读次数:
212
上一篇博文我们分析了中断描述符表的中断门初始化过程,并且在interrupt数组中初始化过程中,可以看到每个中断处理程序都会跳入common_interrupt中。下面我们分析下common_interrupt汇编片段(arch/x86/kernel/entrt_32.S)。 1 .p2al...
分类:
其他好文 时间:
2014-07-29 13:27:38
阅读次数:
345
当数据包到达网络设备时,通常会触发硬件中断。系统在不支持软中断时,数据包的输入过程只能完全在硬件中断中处理。在这样的情况下,虽然可以完成数据包的输入,但硬件中断处理所占用的CPU资源过多,导致系统对其他硬件相应不够及时。
在有些情况下(某些嵌入式设备)下,数据包到达网络设备时并不会触发硬件中断,在这种情况下,只能通过定时器轮询网络设备的状态,当发现有数据包到达时,才从网络设备中读取数据包并输入到...
分类:
其他好文 时间:
2014-07-28 16:35:53
阅读次数:
442
tasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tasklet。tasklet有如下特点:1.tasklet只可以在一个CPU上同步地执行,不同的tasklet可以在不同地CPU上同步地执行。2.tasklet的实现是建立在两个软...
分类:
系统相关 时间:
2014-07-28 15:29:33
阅读次数:
335
1.基础知识巩固 1.1 中断分为两类: a)硬中断,就是通常所说的中断,中断处理程序运行在内核态,需要一定的硬件支持; b)软中断,是在软件层次上对中断的一种模拟,就是常说的信号,它的处理程序运行在用户态。它是软件级别的,不需要特定的硬件支持。 1.2 常见的信号:(用kill -...
分类:
系统相关 时间:
2014-07-26 01:41:16
阅读次数:
406
1) 串口时钟使能,GPIO 时钟使能
2) 串口复位
3) GPIO 端口模式设置
4) 串口参数初始化
5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)
6) 使能串口
7) 编写中断处理函数
.串口时钟使能。串口是挂载在 APB2 下面的外设,所以使能函数为:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);
...
分类:
其他好文 时间:
2014-07-24 23:38:14
阅读次数:
861
ARM支持16个协处理器,在程序执行过程中,每个协处理器忽略属于ARM处理器和其他协处理器指令,当一个协处理器硬件不能执行属于她的协处理器指令时,就会产生一个未定义的异常中断,在异常中断处理程序中,可以通过软件模拟该硬件的操作,比如,如果系统不包含向量浮点运算器,则可以选择浮点运算软件模拟包来支持向...
分类:
其他好文 时间:
2014-07-22 00:18:34
阅读次数:
225
linux内核打印"BUG: scheduling while atomic"和"bad: scheduling from the idle thread"错误的时候,通常是在中断处理函数中调用了可以休眠的函数,如semaphore,mutex,sleep之类的可休眠的函数,而linux内核要求在中...
分类:
系统相关 时间:
2014-07-22 00:12:34
阅读次数:
690
1、中断处理程序与其他内核函数真正的区别在于,中断处理程序是被内核调用来相应中断的,而它们运行于中断上下文(原子上下文)中,在该上下文中执行的代码不可阻塞。中断就是由硬件打断操作系统。
2、异常与中断不同,它在产生时必须考虑与处理器时钟同步。异常被称为同步中断,例如:除0、缺页异常、陷入内核(trap)引起系统调用处理程序异常。
3、不同的设备对应的中断不同,而每个中断都通过一个唯一的数字(中...
分类:
系统相关 时间:
2014-07-22 00:08:34
阅读次数:
326