返回信息流主要就是在驱动的init函数中调用另外一个函数发生的,linux版本为2.4
情况一:
static int ds1302_rtc_probe()
{
... 前面语句均无关,仅最后三行...
if (!(c == 0x42))
return 1;
return 0;
}
static int __init ds1302_rtc_init(void)
{
int ret;
ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops);
if(ret){
printk("can't register rtc0\n");
}
ret=ds1302_rtc_probe();
}
这样在编译好之后insmod的时候出错如下
Using a.o
insmod: init_module: a: Device or resource busy
情况二:
static int ds1302_rtc_probe()
{
... 前面语句均无关,仅最后三行...
if (!(c == 0x42))
return 1;
return 0;
}
static int __init ds1302_rtc_init(void)
{
int ret;
ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops);
if(ret){
printk("can't register rtc0\n");
}
ret=ds1302_rtc_probe();
if(ret){
printk("can't probe rtc0\n");
}
}
这样在编译好之后insmod的时候出错如下
Using a.o
can't probe rtc0
insmod: init_module: a: No space left on device
情况三:
static int ds1302_rtc_probe()
{
... 前面语句均无关,仅最后三行...
if (!(c == 0x42))
return 1;
return 0;
}
static int __init ds1302_rtc_init(void)
{
int ret;
ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops);
if(ret){
printk("can't register rtc0\n");
}
ret=ds1302_rtc_probe();
}
这样在编译好之后insmod的时候出错如下
Using a.o
insmod: init_module: a: Device or resource busy
情况二:
static int ds1302_rtc_probe()
{
... 前面语句均无关,仅最后三行...
if (!(c == 0x42))
printk("can't probe rtc0\n");
return 0;
}
static int __init ds1302_rtc_init(void)
{
int ret;
ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops);
if(ret){
printk("can't register rtc0\n");
}
ret=ds1302_rtc_probe();
}
这样insmod的时候不会发生任何错误
Using a.o
can't probe rtc0
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #1591同步于 2008/10/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
这个驱动小毛病搞了几个小时,谁帮我看一下呀
lester98
2008/10/14镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复