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