linux内核指针和错误值

Posted fanweisheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux内核指针和错误值相关的知识,希望对你有一定的参考价值。

很多内部内核函数返回一个指针值给调用者. 许多这些函数也可能失败. 大部分情况, 失 败由返回一个 NULL 指针值来指示. 这个技术是能用的, 但是它不能通知问题的确切特性. 一些接口确实需要返回一个实际的错误码以便于调用者能够基于实际上什么出错来作出正 确的判断.

 

许多内核接口通过在指针值中对错误值编码来返回这个信息. 这样的信息必须小心使用, 因为它们的返回值不能简单地与 NULL 比较. 为帮助创建和使用这类接口, 一小部分函数 已可用( 在 <linux/err.h>).

 

 

一个返回指针类型的函数可以返回一个错误值, 使用: void *ERR_PTR(long error);

这里, error 是常见的负值错误码. 调用者可用使用 IS_ERR 来测试是否一个返回的指针 是不是一个错误码:

 

long IS_ERR(const void *ptr); 如果你需要实际的错误码, 它可能被抽取到, 使用: long PTR_ERR(const void *ptr);

你应当只对 IS_ERR 返回一个真值的值使用 PTR_ERR; 任何其他的值是一个有效的指针.

以上是关于linux内核指针和错误值的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核实时调度类 ⑤ ( 实时调度类 rt_sched_class 源码分析 | 结构体字段及函数指针分析 )

在 Linux 内核中分配用户空间内存

《Linux内核设计与实现》学习总结 Chap18

Linux内核错误返回值ERRNO宏列表

linux用户空间和内核空间(内核高端内存)_转

Linux内核数据结构之链表