Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4042576
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: LINUX

2007-04-27 14:44:23

查看2.6 include/linux/err.h

/*
 * Kernel pointers have redundant information, so we can use a
 * scheme where we can return either an error code or a dentry
 * pointer with the same return value.
 *
 * This should be a per-architecture thing, to allow different
 * error and pointer decisions.
 */

static inline void *ERR_PTR(long error)
{
        return (void *) error;
}

static inline long PTR_ERR(const void *ptr)
{
        return (long) ptr;
}

static inline long IS_ERR(const void *ptr)
{
        return unlikely((unsigned long)ptr > (unsigned long)-1000L);
}



使用eg:

int err;
void *perr;

err = -ENOMEM;
perr = ERR_PTR(err);

printk("err.%d perr.%p \n", err, perr);

if (IS_ERR(perr))
{
  printk("PTR_ERR changed ==> err.%d", (int)PTR_ERR(perr));
}


主要用在错误指针同错误int类型间转换.
阅读(3093) | 评论(0) | 转发(0) |
0

上一篇:今天的小体会

下一篇:Linux文件系统学习

给主人留下些什么吧!~~