xref: /aosp_15_r20/external/erofs-utils/include/erofs/err.h (revision 33b1fccf6a0fada2c2875d400ed01119b7676ee5)
1*33b1fccfSAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ OR Apache-2.0 */
2*33b1fccfSAndroid Build Coastguard Worker /*
3*33b1fccfSAndroid Build Coastguard Worker  * Copyright (C) 2018 HUAWEI, Inc.
4*33b1fccfSAndroid Build Coastguard Worker  *             http://www.huawei.com/
5*33b1fccfSAndroid Build Coastguard Worker  * Created by Li Guifu <[email protected]>
6*33b1fccfSAndroid Build Coastguard Worker  */
7*33b1fccfSAndroid Build Coastguard Worker #ifndef __EROFS_ERR_H
8*33b1fccfSAndroid Build Coastguard Worker #define __EROFS_ERR_H
9*33b1fccfSAndroid Build Coastguard Worker 
10*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
11*33b1fccfSAndroid Build Coastguard Worker extern "C"
12*33b1fccfSAndroid Build Coastguard Worker {
13*33b1fccfSAndroid Build Coastguard Worker #endif
14*33b1fccfSAndroid Build Coastguard Worker 
15*33b1fccfSAndroid Build Coastguard Worker #include <errno.h>
16*33b1fccfSAndroid Build Coastguard Worker 
17*33b1fccfSAndroid Build Coastguard Worker #define MAX_ERRNO (4095)
18*33b1fccfSAndroid Build Coastguard Worker #define IS_ERR_VALUE(x)                                                        \
19*33b1fccfSAndroid Build Coastguard Worker 	((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
20*33b1fccfSAndroid Build Coastguard Worker 
ERR_PTR(long error)21*33b1fccfSAndroid Build Coastguard Worker static inline void *ERR_PTR(long error)
22*33b1fccfSAndroid Build Coastguard Worker {
23*33b1fccfSAndroid Build Coastguard Worker 	return (void *)error;
24*33b1fccfSAndroid Build Coastguard Worker }
25*33b1fccfSAndroid Build Coastguard Worker 
IS_ERR(const void * ptr)26*33b1fccfSAndroid Build Coastguard Worker static inline int IS_ERR(const void *ptr)
27*33b1fccfSAndroid Build Coastguard Worker {
28*33b1fccfSAndroid Build Coastguard Worker 	return IS_ERR_VALUE((unsigned long)ptr);
29*33b1fccfSAndroid Build Coastguard Worker }
30*33b1fccfSAndroid Build Coastguard Worker 
PTR_ERR(const void * ptr)31*33b1fccfSAndroid Build Coastguard Worker static inline long PTR_ERR(const void *ptr)
32*33b1fccfSAndroid Build Coastguard Worker {
33*33b1fccfSAndroid Build Coastguard Worker 	return (long) ptr;
34*33b1fccfSAndroid Build Coastguard Worker }
35*33b1fccfSAndroid Build Coastguard Worker 
ERR_CAST(const void * ptr)36*33b1fccfSAndroid Build Coastguard Worker static inline void * ERR_CAST(const void *ptr)
37*33b1fccfSAndroid Build Coastguard Worker {
38*33b1fccfSAndroid Build Coastguard Worker 	/* cast away the const */
39*33b1fccfSAndroid Build Coastguard Worker 	return (void *) ptr;
40*33b1fccfSAndroid Build Coastguard Worker }
41*33b1fccfSAndroid Build Coastguard Worker 
42*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
43*33b1fccfSAndroid Build Coastguard Worker }
44*33b1fccfSAndroid Build Coastguard Worker #endif
45*33b1fccfSAndroid Build Coastguard Worker 
46*33b1fccfSAndroid Build Coastguard Worker #endif
47