- 論壇徽章:
- 0
|
--------------------------------------------------------------------------------
各位大蝦:
我最近移植一個DOS的程序到LINUX上!
今天我移植到看門狗程序部分(watchdog),在LINUX下看門狗編程很簡單,就是程序先向看門狗控制器地址寫1(一般地址為0x0443),就是outportb(1,0x0443),這樣就打開了看門狗記時器!
程序運行中要不斷的向看門狗寫1,否則看門狗就認為程序死機了,就重新啟動系統(tǒng)!這就是我理解的看門狗工作原理!
我按這個想法,在LINUX上編程! 首先我查看 cat /proc/ioport ,發(fā)現(xiàn)0x443已經(jīng)有了看門鉤定義! 從而系統(tǒng)已經(jīng)包含了看門狗驅(qū)動程序了!所以我就把看門狗當作一個設(shè)備(/dev 中有一個設(shè)備名叫 /dev/watchdog)
我編了測試程序片段,打算在程序開始打開/dev/watchdog,然后寫1,然后執(zhí)行一個死循環(huán),
#incude ...
...
#include ...
int main()
{
char buf[2] ={0,1}
fd = open("/dev/watchdog".O_RDWR);
write(fd,buf+1,1)
while(1){}
}
預期的結(jié)果應(yīng)該是 在死循環(huán)中,沒有向0x0443寫1,系統(tǒng)應(yīng)該重新啟動!結(jié)果系統(tǒng)卻沒有重新啟動!
我的LINUX內(nèi)核編譯時候選擇了支持看門狗(watchdog)選項!
請大蝦幫幫我,最好能給一點實例代碼,現(xiàn)在很急! 萬分感謝 |
|