摘要:
定时器 定时器 定时器作为重要模块。是支持完成调度的基础之一。主要主要有两个方面:时间,动作。对应程序中的超时时间,函数。 在内核中使用定时器的接口函数: setup_timer(timer, fn, data):设置定时器,主要是初始化timer_list结构体,设置其中的函数、参数。 void 阅读全文
摘要:
阻塞与非阻塞 阻塞与非阻塞概念 阻塞:等待某件事情发生。如前面举例说明,使用read函数获取底层硬件数据,如果没有数据,会让任务休眠等待。 在使用poll方式,如果传入的等待时间不为0,任务是需要休眠等待的,也是阻塞的。 如果poll方式,将传入的等待时间为0,也即是不等待。没有数据立马返回,这是非 阅读全文
摘要:
异步 异步引入 前几章节提供的休眠-唤醒,poll机制,都需要休眠等待某个事件发生。但是在实际中,我们并不会休眠等待事件的发生, 而是采用另一种方式,等外部事件发生之后,将结果通知给我们。在程序中,就是驱动程序中的数据主动上报给App,App收到信号之后, 执行对应的动作。这种机制称为“异步机制”。 阅读全文
摘要:
Poll机制 Poll机制引入 休眠-唤醒机制来等待某个事件产生。完全取决的外部事件,可能等待的时间可能太长。为了避免等待时间过长, 增加超时时间,就是对应的poll机制。 具体流程: 使用poll机制,查询驱动程序是否有数据。 进入内核态,如果有数据,立刻返回 如果当时驱动中没有数据,内核程序进入 阅读全文
摘要:
休眠与唤醒 在中断的简介里面,介绍了四种模式:查询,休眠-唤醒,poll机制,异步通知机制。本节主要说休眠-唤醒机制。 举例:我们在等待按键被按下,可以使用“休眠-唤醒”机制。在应用程序中,等待按键事件发生。 1.APP使用read等操作函数尝试读取硬件底层数据。 2.APP调用read等函数,进入 阅读全文