linux - 内核模块应该在 Linux 上使用什么错误代码?

标签 linux linux-kernel kernel-module

我正在编写一个内核模块,如果出现问题,它将返回错误代码。我的问题是这些代码将由 init_module 返回。我目前只有一种情况,我的内核模块会失败,错误代码应该是 -1,这被解释为存在权限问题。这意味着它与进程实际上没有权限加载模块的情况无法区分。那么,我应该使用哪些代码?低于内核 errno header 中定义的最低错误的数字?

最佳答案

正如 Tsyvarev 所说,如果错误编号很好地描述了加载模块的问题,您可以(并且确实应该)返回此错误代码(否定,来自 init_module()) 通常。但是对于 insmod 中使用的错误或为系统调用 init_module 记录的错误,您应该将此规则作为异常(exception),因为 e. G。 init_module() 函数的 return -ENOENT 使 insmod 误导性地输出 Unknown symbol in module。最好使用不易出错的错误代码,如 EIDRM、EUCLEAN 或 ECANCELED,而不是这些错误。

关于linux - 内核模块应该在 Linux 上使用什么错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41079666/

相关文章:

linux - MONO WCF 自托管服务对在使用 net.tcp 时由对等方重置连接

linux - 在服务请求时将队列锁定在 block 设备驱动程序中的正确方法

linux - 是否可以禁用 coreos 上的 spectre/meltdown/相关补丁?

c - Linux 内核 - 如何停止等待信号量的 kthread?

linux - 将所有脚本中的变量评估方法从 $VAR_NAME 更改为 ${VAR_NAME}

linux - 为什么 gcc 4.x 在调用方法时默认为 linux 上的堆栈保留 8 个字节?

linux - 如何将命令的输出放入bash变量中

c - 处理多个 UDP 流

缺少 Linux 模块文件

c - 如何在Linux内核5.*中正确拦截系统调用?