00001
00002
00027
00028 #ifndef __L4ENV_INCLUDE_ERRNO_H
00029 #define __L4ENV_INCLUDE_ERRNO_H
00030
00031
00032 #include <l4/sys/linkage.h>
00033 #include <l4/env/cdefs.h>
00034
00035
00036
00037
00038
00039 #define L4_EUNKNOWN 1
00040 #define L4_ENOMEM 2
00041 #define L4_EINVAL 3
00042 #define L4_EINVAL_OFFS 4
00043 #define L4_EIPC 5
00044 #define L4_ENOMAP 6
00045 #define L4_ENOTHREAD 7
00046 #define L4_ENOTFOUND 8
00047 #define L4_EIO 9
00048 #define L4_ENODATA 10
00049 #define L4_ENOTOWNER 11
00050 #define L4_ENOTASK 12
00051 #define L4_ENODM 13
00052 #define L4_EUSED 14
00053 #define L4_EUNUSED 15
00054
00055 #define L4_EPERM 17
00056 #define L4_EBUSY 18
00057 #define L4_ESKIPPED 19
00058 #define L4_ENOHANDLE 20
00059 #define L4_ENOKEY 21
00060 #define L4_ENOTSUPP 22
00061 #define L4_EEXISTS 23
00062 #define L4_ENOENT 24
00063 #define L4_EOPEN 25
00064 #define L4_EIOCTL 26
00065 #define L4_ENOTAVAIL 27
00066 #define L4_ENODEV 28
00067 #define L4_EMFILE 29
00068 #define L4_ENOSPC 30
00069 #define L4_ETIME 31
00070
00071 #define L4_EBADF 33
00072 #define L4_ENFILE 34
00073 #define L4_EROFS 35
00074 #define L4_EINVOFFS 36
00075 #define L4_EINVSB 37
00076 #define L4_ERES 38
00077
00078
00079
00080
00081
00082
00083
00084
00085
00090 typedef struct
00091 {
00092 int no;
00093 const char * str;
00094 } l4env_err_msg_t;
00095
00100 typedef struct l4env_err_desc
00101 {
00102 struct l4env_err_desc * next;
00103 int entries;
00104 l4env_err_msg_t * arr;
00105 } l4env_err_desc_t;
00106
00115 #define L4ENV_ERR_DESC_(vis, name, arr...) \
00116 static l4env_err_msg_t l4env_err_description_##name[]={arr}; \
00117 vis l4env_err_desc_t name = { NULL, \
00118 sizeof(l4env_err_description_##name) \
00119 / sizeof(l4env_err_msg_t), \
00120 l4env_err_description_##name}
00121
00129 #define L4ENV_ERR_DESC(name,arr...) L4ENV_ERR_DESC_(,name,arr)
00130
00138 #define L4ENV_ERR_DESC_STATIC(name,arr...) L4ENV_ERR_DESC_(static,name,arr)
00139
00144 typedef struct l4env_err_fn_desc
00145 {
00146 struct l4env_err_fn_desc * next;
00147 char * (*fn)(int);
00148 const char * unknown;
00149 int unknown_len;
00150 } l4env_err_fn_desc_t;
00151
00161 #define L4ENV_ERR_FN_DESC_(vis,name,fn,unknown_string) \
00162 vis l4env_err_fn_desc_t name={ \
00163 NULL, \
00164 fn, \
00165 unknown_string, -1}
00166
00175 #define L4ENV_ERR_FN_DESC(name,fn,unknown_string) \
00176 L4ENV_ERR_FN_DESC_(,name,fn,unknown_string)
00177
00186 #define L4ENV_ERR_FN_DESC_STATIC(name,fn,unknown_string) \
00187 L4ENV_ERR_FN_DESC_(static,name,fn,unknown_string)
00188
00193 #define l4env_errstr(retcode) l4env_strerror(-retcode)
00194
00195
00196
00197
00198
00199 __BEGIN_DECLS;
00200
00205 extern const char * l4env_err_unknown;
00206
00207
00235
00236 L4_CV int
00237 l4env_err_register_fn(l4env_err_fn_desc_t * fn_desc);
00238
00239
00258
00259 L4_CV int
00260 l4env_err_register_desc(l4env_err_desc_t * desc);
00261
00262
00285
00286 L4_CV const char *
00287 l4env_strerror(int code);
00288
00302 #define l4env_perror(string, errcode, opts...) \
00303 LOG_Error(string ": %s" ,##opts, l4env_strerror(errcode))
00304
00305 __END_DECLS;
00306
00307 #endif