主题 : ioctl()问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 39689
精华: 0
发帖: 69
金钱: 350 两
威望: 70 点
综合积分: 138 分
注册时间: 2011-03-11
最后登录: 2012-04-22
楼主  发表于: 2011-05-01 16:22

 ioctl()问题

首先想请问一下,为什么内核中的ioctl函数需要用到inode数据结构?而file_operations中除了open和release之外的其他函数都不需要inode结构呢?


再一个问题。  在内核执行ioctl函数的时候系统会使用Big Kernel Lock是么?是出于哪些考虑呢?read,write等函数需要么?为什么呢?


最后一个问题。  在2.6.11之后,好像推荐采用unlocked_ioctl替代传统的ioctl函数? unlocked_ioctl函数中没有了inode指针,为什么能够去掉了?如果不用内核锁了,这个函数是怎么实现互斥的呢?


万分感谢!
级别: 侠客
UID: 39689
精华: 0
发帖: 69
金钱: 350 两
威望: 70 点
综合积分: 138 分
注册时间: 2011-03-11
最后登录: 2012-04-22
1楼  发表于: 2011-05-02 19:37
还木有回应,自己顶下~~~
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
2楼  发表于: 2011-05-03 09:23
2.6.38起必须用unlocked_ioctl, 原ioctl已经不能用了
至于inode, 如果需要使用的话, 可以通过其它方式获得