我目前正在用C++編程一個內核。所以,作爲內核的基本部分,我在內核中實現了一箇中斷處理模塊,它運行良好。但它不適用於RTC IRQ8中斷。我自己的操作系統內核中的週期性RTC中斷
這是我的IRQ實現代碼:
void IDT::enable_irq(unsigned short x, void (*handler)(), unsigned char control){
current_mask &= ~(1<<x) ; //Zero off the IRQ mask to enable
if (x>=8)
{
current_mask &= ~(1<<2);
set_int((x + SLAVE_VEC - 7),(unsigned long) handler, control);
}
else //Sets the appropriate interrupt at the same time
{
set_int((x + MASTER_VEC),(unsigned long) handler, control);
}
outb(PICMI, current_mask & 0xff);
outb(PICSI, (current_mask >> 8) & 0xff);
}
set_int
是功能添加在IDT進入中斷。
如果我把它作爲它的偉大工程的鍵盤中斷:
enable_irq(1,kbInt,INT_GATE|BITS_32|PRESENT|RING_2);
但是,如果我把它稱爲對IRQ8即RTC那麼它是不工作。
enable_irq(8,rtcInt,INT_GATE|BITS_32|PRESENT|RING_2);
它給了我的錯誤,如:An unhandled interrupt has occurred...
然後我followd從本教程說明: http://wiki.osdev.org/RTC
但我想做的事情,我想產生週期性的RTC中斷是什麼,顯示時間在每個中斷屏幕上。或者我想調用每個rtc中斷的特定函數
所以請任何人都可以幫助我解決這個問題。
謝謝。
基本上我想要做的是在每個RTC中斷屏幕上顯示一個時間。 –
如何啓用IRQ8並在C++中調用每個中斷的特定功能 –
您可以編輯自己的問題以獲取更新。 –