读书人

为什么linux会死机?解决方法

发布时间: 2012-03-02 14:40:29 作者: rapoo

为什么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是附加写的,如果你启动输出太多,肯定会把前面写的东西给覆盖掉的。

读书人网 >UNIXLINUX

热点推荐