blob: ff71d2af5da33ac711da7f64957d8d93bad4f91f [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_ERR_H
2#define _LINUX_ERR_H
3
4#include <linux/compiler.h>
5
6#include <asm/errno.h>
7
8/*
9 * Kernel pointers have redundant information, so we can use a
10 * scheme where we can return either an error code or a dentry
11 * pointer with the same return value.
12 *
13 * This should be a per-architecture thing, to allow different
14 * error and pointer decisions.
15 */
Linus Torvalds07ab67c2005-05-19 22:43:37 -070016#define IS_ERR_VALUE(x) unlikely((x) > (unsigned long)-1000L)
17
Linus Torvalds1da177e2005-04-16 15:20:36 -070018static inline void *ERR_PTR(long error)
19{
20 return (void *) error;
21}
22
23static inline long PTR_ERR(const void *ptr)
24{
25 return (long) ptr;
26}
27
28static inline long IS_ERR(const void *ptr)
29{
Linus Torvalds07ab67c2005-05-19 22:43:37 -070030 return IS_ERR_VALUE((unsigned long)ptr);
Linus Torvalds1da177e2005-04-16 15:20:36 -070031}
32
33#endif /* _LINUX_ERR_H */