Linux 为什么';t是否在/proc/interrupts中启用rtc中断显示?
我已经编写了一个简单的应用程序来启用rtc中断Linux 为什么';t是否在/proc/interrupts中启用rtc中断显示?,linux,timer,linux-kernel,real-time,Linux,Timer,Linux Kernel,Real Time,我已经编写了一个简单的应用程序来启用rtc中断 #包括 #包括 #包括 #包括 int main(){ int fd=open(“/dev/rtc0”,仅限ordu); int赫兹=64; 如果(ioctl(fd,RTC\U IRQP\U设置,hz)=-1){ printf(“ioctl(RTC_IRQP_SET)失败”); 返回1; } 如果(ioctl(fd,RTC开)=-1){ printf(“ioctl(RTC打开)失败”); 返回1; } } 在它运行之后,我希望中断
#包括
#包括
#包括
#包括
int main(){
int fd=open(“/dev/rtc0”,仅限ordu);
int赫兹=64;
如果(ioctl(fd,RTC\U IRQP\U设置,hz)=-1){
printf(“ioctl(RTC_IRQP_SET)失败”);
返回1;
}
如果(ioctl(fd,RTC开)=-1){
printf(“ioctl(RTC打开)失败”);
返回1;
}
}
在它运行之后,我希望中断显示在IRQ8下的/proc/interrupts
中
发件人:
然而,它也可以用来产生从2Hz到1Hz的信号
相对较快的8192Hz,以2的幂递增。这些信号
由中断号8报告。(哦!这就是IRQ 8
对于…)它还可以作为24小时警报,当
闹钟响了
但是没有变化。
8:01 IO APIC edge rtc0
他仍然保持被动。我在这里遗漏了什么?答案是周期性中断(PIE)是使用计时器或hrtimer(取决于您的机器)实现的,而不是RTC。你可以看看: 及
基本上,当您设置警报时,您只会收到一个中断。问得好!有趣的是,如果你把
charbuf[8];对于(int i=0;i<64;++i)读取(fd,buf,sizeof(buf))
程序按预期取1s。所以它在工作,但是中断仍然不被计算。你读了吗。你不需要RTC来获得时间!显示整个/proc/中断。