gpt4 book ai didi

linux - 在linux-kernel中打开设备文件和错误代码

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:05 24 4
gpt4 key购买 nike

我是内核编程新手,有两个问题:

  1. 我的设备正在注册(通过动态注册),但我的应用程序无法打开设备文件。可能是什么可能的原因?
  2. 当我的设备驱动程序检测到被零除?

我的代码在内核中实现了简单的算术运算。我使用基于 ioctl() 的接口(interface)在用户空间和内核之间进行通信。

if(out.b==0) /*checking for divide by zero*/
out.res=-EINVAL;
else
out.res=out.a/out.b;

copy_to_user((values*)ioctl_param,&out,sizeof(values));
break;

最佳答案

如果您不向我们展示您的代码,我们就无法回答第一个问题。

至于第二个,EINVAL 或者ERANGE

在您的情况下,您需要区分 ioctl_param 结构中返回的信息(顺便说一下,这是一个非常糟糕的变量名称)和 ioctl() 调用本身的返回状态。

请记住,如果成功完成,ioctl() 返回 0,如果失败则设置 errno。内核和 C 库会为您处理大部分工作。通常,您所要做的就是从 ioctl() 函数返回 -EINVAL 或类似内容。

类似这样的事情:

if(out.b == 0) /*checking for divide by zero*/
return -EINVAL;

out.res=out.a / out.b;

copy_to_user((values*)ioctl_param,&out,sizeof(values));
break;

关于linux - 在linux-kernel中打开设备文件和错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647003/

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