首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

rtc.c好像不是rtc驱动程序,该怎么处理

2012-03-16 
rtc.c好像不是rtc驱动程序我想读一读x86平台上的rtc驱动代码,而且想把自己的中断处理程序挂在IRQ 8上。选择

rtc.c好像不是rtc驱动程序
我想读一读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来实现(只是我了解的情况),能不能再内核中直接调用某个内核函数来启动周期中断?

[解决办法]
driver下面的rtc.c是驱动吧。我记得我以前就是在这个目录下找到rtc的驱动代码的。

热点排行