|
楼主 |
发表于 2003-9-2 09:46:41
|
显示全部楼层
我mknod了一个minor为1的ps2mouse misc设备文件,而我的驱动里面也申请一个minor为一的miscdevice啊,那么在系统里面它们应该关联起来了的。
我在console下面挂gpm: gpm -m /dev/ps2mouse -t imps2,有两种结果:一个就是cann't open the device,我的理解是不是说无法调用我的file_operation()里面的open函数?还有一个就是说ps2mouse init fail,但是我在init_module里面并没有干什么啊!而且used count也一直显示unused!!
init_module():
int init_module(void)
{
if(request_irq(MOUSE_IRQ, mouse_interrupt, 0, "ps2mouse", NULL))
{
printk(KERN_ERR "ps2mouse:request_irq failed.\n");
return -EBUSY;
}
printk("ps2mouse:request_irq success.\n");
if(request_region(MOUSE_BASE, 3, "ps2mouse") < 0)
{
printk(KERN_ERR "ps2mouse: request_region failed.\n");
return -ENODEV;
}
printk("ps2mouse:request_region success.\n");
if(misc_register(&mouse_dev) < 0)
{
printk(KERN_ERR "ps2mouse: cannot register misc device.\n");
release_region(MOUSE_BASE, 3);
return -EBUSY;
}
printk("register misc device success.\n");
return 0;
}
只是申请irq,io, 注册miscdevice,而且insmod的时候都显示申请成功了的啊:cat /proc/interrupts 显示irq12是我的ps2mouse, cat /proc/misc 显示minor为1的ps2mouse,应该都是没有问题了的,但是就是不知道为什么不能init and open!!!
我的cleanup_module()也有问题,rmmod之后,cat /proc/interrupts显示出错,再insmod时就报错,说是资源忙
cleanup_module()
void cleanup_moduel(void)
{
printk("cleanup module begin.\n");
misc_deregister(&mouse_dev);
printk("deregister miscdevice success.\n");
release_region(MOUSE_BASE, 3);
printk("release_region success.\n");
free_irq(MOUSE_IRQ, NULL);
printk("free_irq success.\n");
}
而且连第一句都没有打印!!
重启之后就能insmod了,虽然情况和前面一样!
现在我暂时不管释放资源的问题我想先让我的鼠标动起来啊
但是现在............................
劳Dragonfly大哥帮我看看了
这几天一直在麻烦Dragonfly大哥,不好意思了!! |
|