我正在编写一个内核模块,如果出现问题,它将返回错误代码。我的问题是这些代码将由 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/