Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332982
  • 博文数量: 102
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-21 22:33
文章分类

全部博文(102)

文章存档

2011年(8)

2010年(94)

我的朋友

分类: LINUX

2010-12-31 16:33:33

之前开发base是25/29,拿到32的代码,发现alarm.c and alarm-dev.c疯狂,后者提供misc设备用于接收userspace的ioctl命令,前者文件里实现对具体定时器的维护。

android alarm同时维护5中类型闹钟,每个类型有个queue,这个结构比较有意思,如果看过我之前写过的hrtimer实现,你会发现二者联系颇紧。它内部有关hrtimer定时器,有个rb-tree.在alarm-dev.c文件里新添加了alarm结构体,比较有趣的是alarm结构体有个回调function.就是说,可以把这部分代码整理下,export出去给驱动作为alarm定时器来用。

然而这个地方实现让人哭笑不得。
红黑树本来是用在排序的,而大量的alarm真是一个良好的使用环境。看到红黑树以及alarm结构时,猜测上层的alarm逻辑会修改,反倒底层去维护。原本上层对多个设置的闹钟会有维护的,只把最近过期的设置下去。现在看来底层都维护了吧。。。事实上,每个类型红黑树中只有一个alarm。

其实alarm部分的重点在于suspend/resume的处理,关机闹钟的处理等。下篇文章再分析。

阅读(2428) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-09 10:13:42

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com