内核中类似strerror的功能?

Dan*_*tos 14 linux-device-driver linux-kernel

strerror内核中是否存在类似的功能?我找不到一个,所以我的想法是否定的,但更重要的是,他们有没有讨论过这个问题?我认为它可以减少故障排除时间,因为您不必查找错误代码(并非每个人都记住了),并且可能使系统管理员和普通的日常用户(通过dmesg)更容易.

我想在邮寄LKML之前问这里.我的想法是一个双重机制,一个用于错误名称(例如,EINVAL),另一个用于描述.此外,%mglibc扩展可以添加到printk,除了它必须读取错误代码,因为glibc扩展读取errno.也许%m可以打印错误名称,同时%M可以打印错误描述?

无论如何,如果它被添加,它应该是.config选项,因为它会膨胀文本大小.只需将错误名称(当前为1到133)存储在单个字符串中,并且每个字符串之间只有一个空终止符并且只是一个慢速strerror(强制遍历字符串并计算空终止符),因为速度可以缩小.这应该不重要.内部错误512-529必须在单独的字符串中.然后,可以返回指向以null结尾的字符串的直接指针,而无需复制任何内容.根据我的计算,错误名称大约需要1322个字节,描述需要3540个字节(根据每个错误的#define之后的注释中的内容以及当前缺少的那些添加"no description").

然后,当配置禁用时,printk %m可以被解释为%d并且%M可以只打印(或者一些这样的).

pet*_*ica 5

不,没有。但是您可以在include/asm-generic/errno.h和中看到错误代码列表include/asm-generic/errno-base.h。没有太多(少于200个),因此在开发过程中学习它们并不难。

  • 如果记住 200 个无意义的值很容易,那么我不想知道什么是困难的。 (3认同)