中断服务函数能不能带形参和返回值
来源:互联网 发布:c语言告白 编辑:程序博客网 时间:2024/05/18 20:51
从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的入口点,进行中断处理。
(1) 硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
(2) 软中断
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
(3) 中断嵌套
Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。
(4) 软中断指令
int是软中断指令。
中断向量表是中断号和中断处理函数地址的对应表。
int n - 触发软中断n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。
(5)硬中断和软中断的区别
软中断是执行中断指令产生的,而硬中断是由外设引发的。
硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
硬中断是可屏蔽的,软中断不可屏蔽。
硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
当比如单片机这种没有操作系统的,中断处理函数不能有输入参数也不能有函数返回。因为中断都是些硬件自动调用,没有程序去给他传递参数,也没有硬件去接收参数。 那其它函数怎么传参数给它呢?一般都是通过全局变量方式。不过为了避免中断函数重入,我们可以在进入中断服务函数之后将中断关闭,处理完后再开中断。
- 中断服务函数能不能带形参和返回值?
- 中断服务函数能不能带形参和返回值
- 关于中断服务函数带来返回值的思考
- 对于中断函数返回值的分析
- 对于中断函数返回值的分析
- 关于C++中函数能不能返回数组问题
- Linux内核-中断-中断响应和返回
- 中断处理函数返回值不对达到10万次
- 函数返回值和函数
- request_irq() 注册中断服务函数
- 中断服务函数的写法
- 从中断和异常返回
- 第五章 中断和中断服务程序
- 【中断异常】中断的响应和服务
- 中断函数和中断处理函数
- 中断的响应和服务
- 中断的响应和服务
- 构造函数和析构函数能不能被继承
- STM32学习问题篇(一)
- 一个项目:产品分类信息树状显示
- VirtualBox安装linux mint教程
- Ubuntu 17.10 32位兼容
- 201710192244->利用www类来下载图片
- 中断服务函数能不能带形参和返回值
- 筛法_算法进阶
- 【网络编程】UDP数据报格式
- css的那些事儿--background的多张背景的实现
- 软件工程之快速原型模型
- MacOS系统使用系列-2.Mac命令行提升效率工具thefuck
- C#的基本常识
- MVC框架
- opencv使用findcontours报错解决其他方案