linux内核指针和错误值
2024-10-20 08:55:49
很多内部内核函数返回一个指针值给调用者. 许多这些函数也可能失败. 大部分情况, 失 败由返回一个 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 中优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)
- [转]从JVM角度看线程安全与垃圾收集
- C++以对象管理资源
- Winform开发几个常用的开发经验及知识积累(一)
- Java常用类库
- 基于HTML5实现五彩连珠小游戏
- hdu 1180 诡异的楼梯
- R语言学习笔记:生成序列(Genenrating Sequences)
- 集合练习——Map部分
- CH Round #48 - Streaming #3 (NOIP模拟赛Day1)
- 用PyRestful快速构建Tornado下REST APIs 的支持
- Class.forName()
- AGC010 - B: Boxes
- PHP随机函数-集锦
- [LeetCode] Longest Uncommon Subsequence I 最长非共同子序列之一
- 集群技术(三)MySQL集群深度解析
- C#中form窗体之间的传递几个方法
- python实现算术表达式的词法语法语义分析(编译原理应用)
- java导出文件IE/Google文件名乱码兼容
- Error_Unix Shell_syntax error near unexpected token `fi&#39;
热门文章
- spring - constructor-arg的常规用法
- Directx11教程(11) 增加一个debug宏
- WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)
- iOS从零开始 Code Review
- python 正则表达式匹配过程
- vue_qqmapdemo1
- php 获取客户端的ip、地理信息、浏览器信息、本地真实ip
- UVa 495【大数加法】
- QT 开发ros gui过程中遇到:error: catkin_package() include dir &#39;include&#39; does not exist relative to &#39;/home/jun/catkin_ws/src/qt_ros_test&#39; /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_p
- java根据年月获取当前月的每一天日期