免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2069 | 回复: 4
打印 上一主题 下一主题

如何在内核空间内挂载一个设备? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-18 16:59 |只看该作者 |倒序浏览
我想写一个小的驱动,
其中的ioctl实现设备的挂载功能,
大致的效果就是
mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c
但是我写出来的程序并不好用,请问我错在哪里,究竟怎样才能够实现我的目的?谢谢!!

以下是我的代码:
  1. /*These only used for test.*/
  2. #define __MNT_DEV__ "/dev/sda1"
  3. #define __MNT_DIR__ "/mnt/c"
  4. #define __MNT_TYP__ "vfat"
  5. #define __MNT_OPT__ "iocharset=utf8,umask=0"
复制代码
  1. static int widgetdrv_ioctl(struct inode *inodep, struct file *filp, unsigned int cmd, unsigned long arg)
  2. {
  3.     struct widgetdrv_dev *dev;
  4.     dev = filp->private_data;
  5.     printk(KERN_ALERT "ioctl!\n");

  6.     switch(cmd)
  7.     {   
  8.         case __WIDGET_DRV_MOUNT__:
  9.             sys_mount(__MNT_DEV__, __MNT_DIR__, __MNT_TYP__, __MNT_FLG__, __MNT_OPT__);
  10.             break;
  11.         case __WIDGET_DRV_UMOUNT__:
  12.             //sys_umount(__MNT_DIR__, __MNT_FLG__);
  13.             break;
  14.         default:
  15.             return -EINVAL;
  16.     }   
  17.     return 0;
  18. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-01-19 11:32 |只看该作者
本帖最后由 vaqeteart 于 2011-01-19 11:35 编辑

补充一下,我插入模块的时候,提示:
insmod: error inserting 'widgetdrv_simple.ko': -1 Unknown symbol in module
把sys_mount取掉就好了,所以我想问的是我错在哪呢?

论坛徽章:
13
巨蟹座
日期:2013-10-30 18:29:4115-16赛季CBA联赛之青岛
日期:2019-01-04 17:30:1015-16赛季CBA联赛之天津
日期:2016-03-08 10:30:1715-16赛季CBA联赛之天津
日期:2015-12-10 15:56:452015年亚洲杯之约旦
日期:2015-03-09 16:29:36双鱼座
日期:2014-11-27 17:17:20寅虎
日期:2014-11-18 13:55:12双子座
日期:2014-03-31 15:41:32狮子座
日期:2014-03-14 11:23:24狮子座
日期:2014-02-19 16:30:12午马
日期:2013-11-04 23:22:31卯兔
日期:2013-10-30 19:51:15
3 [报告]
发表于 2011-01-19 16:34 |只看该作者
不太了解, 顶你一下

论坛徽章:
0
4 [报告]
发表于 2011-01-24 17:35 |只看该作者
回复 3# ckf513728912



不太了解, 顶你一下
ckf513728912 发表于 2011-01-19 16:34


    虽然如此,还是谢谢了!顺便自己顶一个

论坛徽章:
0
5 [报告]
发表于 2011-02-14 11:29 |只看该作者
补充一下,我插入模块的时候,提示:
insmod: error inserting 'widgetdrv_simple.ko': -1 Unknown symbol ...
vaqeteart 发表于 2011-01-19 11:32



    “Unknown symbol ”应该说明问题了啊!看看你的编译选项对不对?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP