你从哪里获得inode功能?

我有一些Linux驱动程序,我试图从Linux 2.4移植到3.0.在这漫长的时间内,ioctl的参数列表(现在unlocked_ioctl)改变了一点:

-static int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long can_ioctl(struct file *file, unsigned int cmd, unsigned long arg) 

代码使用inode获取次要版本并将其传递给其他命令.现在inode不是ioctl参数列表中给出的“free-be”,我怎么能得到它?

是否可以从文件指针派生?或者当它出现在_open()方法中时,我应该“保存”它的全局指针吗?如果有更好的方法,我宁愿避免这样做.

解决方法:

oop,只是通过在内核周围查看并查看其他驱动程序来计算出来(不知道为什么我之前没有这样做过).如果其他人感兴趣,您可以从传递到ioctl的文件指针中获取inode:

long can_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
    struct inode *inode = file->f_path.dentry->d_inode;

如果有人知道为什么这是一个坏主意(我只是从另一个驱动程序中取出),或者如果有更好/首选的方式让我知道.

上一篇:Linux音频编程(二)声卡介绍


下一篇:framebuffer绘屏