关于 ramdisk 不能挂载, 请教一下

todo9351 2009-12-01 04:38:39
在Linux 2.4.xx上, 我想划出一小块内存(先定义了一个大数组进行模拟)当成磁盘块设备使用。 我的做法是
1 先完成 struct block_device_operations 中的函数;
2 写 rd_make_request(), 处理有关读写请求队列;
3 在初始化程序 rd_init() 中,
1)调用 blk_queue_make_request(BLK_DEFAULT_QUEUE(rd_major), rd_make_request) ;
2) /* 创建目录 */
devfs_myDriver_dir = devfs_mk_dir(NULL, "rd", NULL);
3)创建设备文件
devfs_register(devfs_myDriver_dir, "ramdisk", DEVFS_FL_DEFAULT, rd_major, rd_minor,
S_IFBLK | S_IRUSR | S_IWUSR,
&rd_fops, NULL);

系统初始化 rd_init(), 则在 dev/rd/目录下会有ramdisk这样一个块设备,但是, 我用 mount 时, 挂载不上去文件系统 vfat, 请问一下, 我这个过程还缺少哪些步骤?

提示 mount 返回 -19, 我查了一下, 是#define ENODEV 19 /* Operation not supported by device */
哈, 这个是因为 所mount的文件系统不支持;

又 mount 一次, 返回 -16, #define EBUSY 16 /* Device busy */
这, 个又傻了


...全文
198 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
primec 2009-12-05
  • 打赏
  • 举报
回复
应该缺少文件系统
试试mkfs.vfat /dev/rd/ramdisk
deep_pro 2009-12-01
  • 打赏
  • 举报
回复
可惜是2.4的,如果是2.6的话有兴趣完整地做一遍
手头有《Linux设备驱动开发技术及应用》 (韩)
里面有这个实验的2.6 、2.4的详细代码和步骤,不过没下到源代码,也懒得敲了
我看他是先格式化
mke2fs /dev/vrd0
之后才挂载的

4,437

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧