taoyuetao的个人空间 https://blog.eetop.cn/taoyuetao [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

[原创] eCos对ioctl的支持过程分析

已有 2433 次阅读| 2007-3-13 16:52 |个人分类:【 eCos RTOS 】

天气: 晴朗
心情: 高兴

================================

Author: taoyuetao
Email: tao_yuetao@yahoo.com.cn
Blog: http://www.eetop.cn/blog/?11145

07-03-11

================================

看到网上有人问ecos对ioctl的实现过程,以前也没有关心过,一直是通过cyg_io_get_config和cyg_io_set_config
函数操作设备的,赶紧看了一下源码,终于弄明白了ecos对ioctl的支持是怎样的:

ioctl函数在packages/io/fileio/current/src/io.cxx中,
它调用的底层函数是通过:
ret = fp->f_ops->fo_ioctl(fp, com, data);
它是通过对文件句柄的f_ops的ioctl函数指针来实现ioctl功能的,这和linux基本相同,

跟踪设备操作时fo_ioctl的运行,ecos也有设备文件系统(和linux一样),
文件packages/io/fileio/current/src/devfs.cxx中就是设备文件系统的实现,
这里定义了一个cyg_fileops结构函数数组指针dev_fileops用于操作设备,
其中dev_fo_ioctl就是对应ioctl中调用到的fo_ioctl函数,它的函数实现是空的,
也就是说如果通过ioctl直接对设备进行操作,是不成的,

再看一下ecos文件操作和linux的不同处,在f_ops结构中最后还定义了两个函数指针:
fo_getinfo,fo_setinfo,在devfs中对应dev_fo_setinfo和dev_fo_getinfo,看一下
他的函数实现,分别调用的是cyg_io_get_config和cyg_io_set_config,所以实际上
还是要通过这两个函?词迪謎octl功能,

另外fo_getinfo,fo_setinfo对应上层的系统调用也在io.cxx中,分别是
cyg_fs_fsetinfo和cyg_fs_fgetinfo,

如果你想要使用ioctl来对设备操作,那就填写dev_fo_ioctl函数(devfs.cxx),无论怎样
都要归到cyg_io_get_config和cyg_io_set_config这两个函数


 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1075

    评论
  • 4435

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 22:34 , Processed in 0.015091 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部