gpt4 book ai didi

c - 从内核空间执行 ioctl

转载 作者:太空狗 更新时间:2023-10-29 11:20:30 24 4
gpt4 key购买 nike

我正在编写一个需要在另一个设备上执行 ioctl 的内核驱动程序。我意识到这不是处理代码的最佳方式,但这只是目前的临时修复。我从函数中的 ioctl 调用中返回错误代码 -22(无效参数),但我看不出参数有什么问题。以下是代码的相关部分。

#define GPIO74 "/dev/gpio/74"

struct file* gpio74FD;
.
.
.
gpio74FD = filp_open(GPIO74,O_RDWR,0)
.
.
.
int device_ioctl(struct inode* inode,struct file *file, unsigned int ioctl_num,unsigned long ioctl_param)
{
.
.
.
ret_val = gpio74FD->f_op->ioctl(inode, gpio74FD, GPIO_CONFIG_AS_INP, 0); //returns error code -22 (Invlaid Argument)
.
.
.
return ret_val;
}

我怀疑这可能与此处传递了错误的 inode 有关,但我什至不确定如果它不是从用户空间传递给 ioctl 的 inode,如何获得正确的 inode。

最佳答案

由于您现在非常深入“不要那样做”黑客领域,向 gpio 驱动程序添加一些 printk 可以为您提供一些有值(value)的信息。

另一种选择是避免这种可怕的黑客行为,并改用危害较小的一种:向 gpio 驱动程序添加一个导出函数,您可以从自己的模块调用该函数

关于c - 从内核空间执行 ioctl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340612/

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