指针和错误值

许多内部的内核函数返回一个指针值给调用者,而这些函数中很多可能会失败。在大部分情况下,失败是通过返回一个NULL指针值来表示的。这种技巧有作用,但是它不能传递问题的确切性质。某些接口确实需要返回一个实际的错误编码,以使调用者可以根据实际的情况做出正确的决策。

许多内核接口通过把错误值编码到一个指针中来返回错误信息。这种函数必须小心使用,因为它的返回值不能简单地和NULL比较。为了帮助创建和使用这种类型的接口。内核提供了一小组函数。

返回指针类型的函数可以通过如下函数返回一个错误值:

void *ERR_PTR(long err);

这里error是通常的负的错误码。调用者可以使用IS_ERR来检查所返回的指针是否是一个错误编码:

long IS_ERR(const void *ptr);

如果需要实际的错误编码,可以通过如下函数把它提取出来:

long PTR_ERR(const void *ptr);

应该只有在IS_ERR对某值返回真值时才对该值使用PTR_ERR,因为任何其他值都是有效的指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值