Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302563
  • 博文数量: 27
  • 博客积分: 1933
  • 博客等级: 上尉
  • 技术积分: 884
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-04 23:34
文章分类

全部博文(27)

文章存档

2013年(3)

2011年(24)

发布时间:2013-01-04 14:07:01

  延迟可以分为长延迟和短延迟,但其划分界限并不是很清晰,一般把涉及多个时钟滴答的延迟称为长延迟;在内核中有很多方法实现延迟操作,但有些方法并不可取,像忙等待;所以这里只记录那些不错的方案。 1 长延迟   对于长延迟,可以使用等待队列机制来实现,内核提供的接口如下: #include <linux/wait.h> long wait_event_timeout(wait_queue_head_t, condition, long timeout); /* 休眠时不可中断 */ long wait_event_interrupti......【阅读全文】

阅读(2674) | 评论(0) | 转发(0)

发布时间:2013-01-04 14:06:41

  1 定时器用途  内核定时器用于在未来的指定时间点上执行某个函数;如果添加定时器时,指定的时间比系统时间要早,那么,系统将会在下一个"滴答“启动该定时器。  2 使用定时器注意事项  内核定时器基本上会在"软件中断"上下文中运行,所以定时器函数要注意以原子地运行;且定时器始终会在调度它的同一CPU上运行。另外需要遵守以下规则:* 不允许访问用户空间;* 不允许访问current指针;* 不能执行休眠或调度。  所有处于进程上下文之外的程序都要遵守这些规则。    3 内核环境判断  内核提供两个API来判断中断......【阅读全文】

阅读(2811) | 评论(0) | 转发(0)

发布时间:2013-01-04 14:00:16

1 "工作队列"用途 工作队列用途跟tasklet相似,在中断处理时将一些非紧急的任务留到工作队列中完成,而紧急的任务则在硬中断服务程序中完成。 但工作队列与tasklet还是有很大的区别: 1)工作队列函数在一个特殊内核进程的上下文中运行; 2)tasklet会在很短的时间段内很快执行,且以原子模式执行;    而工作队列函数具有更长的延迟并且不需要原子模式; 3)工作队列函数可以休眠;2 "工作队列"结构  注意:在2.6.20之后,工作队列的数据结构发生了不少变化,这里列出的接口与数据结构是基于3.......【阅读全文】

阅读(2786) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册