LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1055|回复: 1

mtd设备驱动中的read函数的返回值是什么?

[复制链接]
发表于 2005-4-21 09:04:49 | 显示全部楼层 |阅读模式
static int jffs2_scan_empty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, __u32 *startofs, int *noise)
这个函数中的下列语句让我很困惑,关键是不知道道c->mtd->read的返回值倒底是什么!
。。。。。。
        while(scanlen) {
                ssize_t retlen;
                int ret, i;
        /*就是下边这句,如果是读出字节数,那还要retlen做什么?而且根据这个函数的逻 辑很显然不是读出字节数*/       
                ret = c->mtd->read(c->mtd, curofs, min((__u32)PAGE_SIZE, scanlen), &retlen, (char *)buf);
                if(ret) {
                        D1(printk(KERN_WARNING "jffs2_scan_empty(): Read 0x%x bytes at 0x%08x returned %d\n", min((__u32)PAGE_SIZE, scanlen), curofs, ret));
                        kfree(buf);
                        return ret;
                }
                if (retlen < 4) {
                        D1(printk(KERN_WARNING "Eep. too few bytes read in scan_empty()\n"));
                        kfree(buf);
                        return -EIO;
                }
                for (i=0; i<(retlen / 4); i++) {
                        if (buf != 0xffffffff) {
                                curofs += i*4;

                                noisy_printk(noise, "jffs2_scan_empty(): Empty block at 0x%08x ends at 0x%08x (with 0x%08x)! Marking dirty\n", *startofs, curofs, buf);
                                DIRTY_SPACE(curofs - (*startofs));
                                *startofs = curofs;
                                kfree(buf);
                                return 0;
                        }
                }
                scanlen -= retlen&~3;
                curofs += retlen&~3;
        }
。。。。。。
}
各位大人帮帮我吧!
发表于 2005-4-25 16:43:01 | 显示全部楼层
return ret啊,它说要读那么多,难道每次都能读到那么多吗??
所以return它读的数目
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表