rtc.c好像不是rtc驱动程序
时间:2011-09-07
来源:互联网
我想读一读x86平台上的rtc驱动代码,而且想把自己的中断处理程序挂在IRQ 8上。选择rtc支持后重新编译内核,IRQ 8可以工作起来。但是不能将自己的驱动程序挂在IRQ 8上。我检查了drivers/char/rtc.c,发现x86平台上IRQ 8的中断处理程序的注册:
request_irq(RTC_IRQ, rtc_int_handler_ptr, IRQF_DISABLED,"rtc", NULL)
只用了IRQF_DISABLED,没有用IRQF_SHARED,所以我的中断处理无法注册。但是修改代码改为IRQF_SHARED后任然不能注册。我猜想可能rtc.c不是rtc的驱动程序。然后查找代码,发现真正的驱动程序应该是drivers/rtc/rtc-cmos.c,其中:
retval = request_irq(rtc_irq, rtc_cmos_int_handler,
IRQF_DISABLED, dev_name(&cmos_rtc.rtc->dev),
cmos_rtc.rtc);
将IRQF_DISABLED修改为IRQF_SHARED后,我的中断处理程序就可以注册了。我有两个问题想问一下:
1. 是不是drivers/rtc.c已经被废弃?如果废弃,为什么还出现在内核代码中?
2. 默认情况下rtc的中断好像是屏蔽的,如果要触发rtc的周期中断就要通过写入/dev/rtc0来实现(只是我了解的情况),能不能再内核中直接调用某个内核函数来启动周期中断?
request_irq(RTC_IRQ, rtc_int_handler_ptr, IRQF_DISABLED,"rtc", NULL)
只用了IRQF_DISABLED,没有用IRQF_SHARED,所以我的中断处理无法注册。但是修改代码改为IRQF_SHARED后任然不能注册。我猜想可能rtc.c不是rtc的驱动程序。然后查找代码,发现真正的驱动程序应该是drivers/rtc/rtc-cmos.c,其中:
retval = request_irq(rtc_irq, rtc_cmos_int_handler,
IRQF_DISABLED, dev_name(&cmos_rtc.rtc->dev),
cmos_rtc.rtc);
将IRQF_DISABLED修改为IRQF_SHARED后,我的中断处理程序就可以注册了。我有两个问题想问一下:
1. 是不是drivers/rtc.c已经被废弃?如果废弃,为什么还出现在内核代码中?
2. 默认情况下rtc的中断好像是屏蔽的,如果要触发rtc的周期中断就要通过写入/dev/rtc0来实现(只是我了解的情况),能不能再内核中直接调用某个内核函数来启动周期中断?
作者: jet8 发布时间: 2011-09-07
补充一个问题:哪里能够找到x86平台rtc的资料?谢谢!
作者: jet8 发布时间: 2011-09-07
driver下面的rtc.c是驱动吧。我记得我以前就是在这个目录下找到rtc的驱动代码的。
作者: feiyinzilgd 发布时间: 2011-09-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28