ERR_PTR和IS_ERR的区别
时间: 2024-02-07 14:03:26 浏览: 102
Linux_kernel_coding_style.rar_linux coding style_style
ERR_PTR和IS_ERR是内核中的两个宏,都用于处理指针错误的情况,但它们的作用不同。
ERR_PTR是一个宏,它将一个错误码转换为一个错误指针。例如,ERR_PTR(-ENOMEM)会返回一个类型为(void *)的指针,这个指针指向的地址是一个特殊的错误码,表示内存分配失败。这个错误指针可以传递给调用者,调用者可以通过IS_ERR宏来检测这个指针是否是一个错误指针。
而IS_ERR则是用于检测一个指针是否是错误指针。IS_ERR(ptr)会检测ptr是否小于0或者大于等于ERR_PTR(-1),如果ptr小于0或者大于等于ERR_PTR(-1),则返回一个非零值,表示ptr指向的是一个错误的内存地址;否则返回0,表示ptr指向的是一个合法的内存地址。
因此,ERR_PTR和IS_ERR通常一起使用,用于在内核中处理指针错误的情况。
阅读全文