- 博客(4)
- 资源 (20)
- 收藏
- 关注
原创 signal()函数原型分析
signal() #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int); 分析: 1.先看signal 根据括号位置将其分离出来,变为ret = signal(int signum, void (*handler)(int)) 和void (*ret)(int) 从这里可以很明白的看出来 signal的函数结构以及以signal返回值为名称的函数指针。 2.再将signal(i..
2020-12-11 11:51:07 764
原创 linux之poll机制(三)
使用场景: 单片机编程中,主程序等待IIC设备一个事件的发生,如果在允许的时间内发生了就返回1(SUCCESS),否则返回0(ERROR)。 解释:主程序等待IIC返回一个回应值,如果回应就代表可以对IIC读写,如果IIC未启动时,是没有响应的,这时候主程序不可能一直等待,所以应该有一个等待超时机制,到时间后如果没有响应就直接返回失败,主程序继续其他后续操作。 对于类似上面的情况,linux是通过poll机制实现超时操作的。 linux在调用poll函数时,如果没有事件发生,则进入休眠状...
2020-12-11 09:55:30 635
原创 linux之异步通知机制(二)
1 概念: 异步通知机制:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,是一种“信号驱动的异步I/O”。 信号是在软件层次上对中断机制的一种模拟,进程收到信号与处理器收到中断请求在原理上可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候会到达。 2 异步通知机制无怪乎四个方面:谁发,怎么发,发什么,发给谁。满足这四个方面也就完成了信号的异步通知。 以按键产生信号为例:驱动程序处理按键操作...
2020-12-11 09:54:50 345
原创 linux之中断过程(含内核部分)(一)
1.uboot启动kernel入口函数是start_kernel() start_kernel() --->early_trap_init() --->unsigned long vectors = CONFIG_VECTORS_BASE; memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start); memcpy((void *)v...
2020-12-11 09:53:27 270
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人