Dropped char* error file to unify common error strings handling.
[akaros.git] / kern / include / error.h
1 /* See COPYRIGHT for copyright information. */
2
3 #ifndef ROS_INC_ERROR_H
4 #define ROS_INC_ERROR_H
5
6 #include <ros/errno.h>
7
8 typedef int error_t;
9 extern const char *const errno_strings[];
10 extern const int MAX_ERRNO;
11
12 #define ERR_PTR(err)  ((void *)((uintptr_t)(err)))
13 #define PTR_ERR(ptr)  ((uintptr_t)(ptr))
14 #define IS_ERR(ptr)   ((uintptr_t)-(uintptr_t)(ptr) <= MAX_ERRNO)
15
16 /* Plan9 wants to return non-const char* all over the place, so even if a const
17  * char* would have made much more sense, unless we want to refactor a huge
18  * amount of code, we need to return a char*.
19  */
20 static inline char *errno_to_string(int error)
21 {
22         extern const char *const errno_strings[];
23
24         return error >= 0 && error < MAX_ERRNO && errno_strings[error] != NULL ?
25                 (char *) errno_strings[error]: (char *) "Unknown error";
26 }
27                  
28 #endif  // !ROS_INC_ERROR_H */