gpt4 book ai didi

linux-device-driver - 如何调用 compat_ioctl 或 unlocked_ioctl?

转载 作者:行者123 更新时间:2023-12-04 23:21:45 25 4
gpt4 key购买 nike

我正在尝试为 RTC(实时时钟)实现驱动程序。我用了ioctl kernel 2.6.32中的函数.它工作得很好。但是当我在内核 3.13.0 中运行相同的驱动程序时,它给出了一个错误 ‘struct file_operations’ has no member named ‘ioctl’
当我改变 ioctlunlocked_ioctlcompat_ioctl ,编译并插入模块。

但是调用ioctl在用户应用程序中 不调用 ioctl功能 在模块中。我必须在用户应用程序中使用什么函数来调用 compat_ioctlunlocked_ioctl ?

最佳答案

检查驱动程序中的参数

定义结构文件操作定义like

static struct file_operations query_fops =
{
.owner = THIS_MODULE,
.open = my_open,
.release = my_close,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
.ioctl = my_ioctl
#else
.unlocked_ioctl = my_ioctl
#endif
};

像定义ioctl
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
static int my_ioctl(struct inode *i, struct file *f, unsigned int cmd, unsigned long arg)
#else
static long my_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
#endif
{
switch(cmd){
....................................
...................................
}
}

和应用层

无需进行任何修改,您可以在应用程序级别遵循 ioctl 的基本规则。

关于linux-device-driver - 如何调用 compat_ioctl 或 unlocked_ioctl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com