为什么linux会死机?
我由两个问题:
问题一:
在 《linux设备驱动程序》一书中,有个short的并口驱动的例子;
他采用 在write函数中,写0xff到base地址,(并口的9, 10已经短接)来产生
中断;我们知道并口中断是由10(ACK)引脚的上升沿来识别的;
书上的实现是:
ssize_t short_i_write (struct file *filp, const char *buf, size_t count,
loff_t *f_pos)
{
int written = 0, odd = *f_pos & 1;
unsigned long address = short_base; /* output to the parallel data latch */
if (use_mem) {
while (written < count)
writeb(0xff * ((++written + odd) & 1), address);
} else {
while (written < count)
outb(0xff * ((++written + odd) & 1), address);
}
*f_pos += count;
return written;
}
这样我的并口中断程序可以正常测试中断的产生;
我的改动后的实现是:
ssize_t short_i_write (struct file *filp, const char *buf, size_t count,
loff_t *f_pos)
{
int written = 0, odd = *f_pos & 1;
unsigned long address = short_base; /* output to the parallel data latch */
if (use_mem) {
while (written < count)
writeb(0xff * ((++written + odd) & 1), address);
} else {
while (written < count)
outb(0xff, address);
}
*f_pos += count;
return written;
}
然后我在中断出来程序中,outb(0, address);
但是这样做之后,每次测试中断的时候,都会死机, 为什么???
问题 二:
怎样查看死机的现场信息呢,因为我都不知道发生什么了啊。。。
我硬件重启后,进/var/log/messages的时候,与之前正常的时候不同,
提示我查看/var/log/.messages等几个选项, 不知道是什么意思?
请知情者,多多赐教!
------解决方案--------------------
/var/log/messages是附加写的,如果你启动输出太多,肯定会把前面写的东西给覆盖掉的。