gpt4 book ai didi

c - 内核领域中的错误处理/检查

转载 作者:太空狗 更新时间:2023-10-29 11:36:03 25 4
gpt4 key购买 nike

内核领域中的errno 是什么?更准确地说,我如何检查发生了什么错误,例如在使用 kmalloc() 之类的函数时?

最佳答案

Linux 内核使用几种不同的方法来处理错误情况。与 C 用户空间程序不同,函数不将其错误代码存储在全局变量中,而是直接返回值。您通常会看到这是按如下方式完成的:

  • 除错误代码外不返回任何值的函数通常在成功时返回 0,在失败时返回 -ESOMETHING
  • 可能返回非负数值(例如,索引、文件描述符编号或字节长度)的函数类似:0 或更高表示成功,负值表示错误。
  • 返回指针的函数可能会返回一个特殊范围内的值以指示错误。通过对返回值调用 IS_ERR(),您可以检查是否发生了错误。使用 PTR_ERR(),您可以提取错误代码,再次取反。

不幸的是,kmalloc() 函数没有使用这些样式。它在失败时返回 NULL,而不给您具体的错误代码。

关于c - 内核领域中的错误处理/检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897767/

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