87 { (code), (name), &error_extra_errno, NULL } |
87 { (code), (name), &error_extra_errno, NULL } |
88 |
88 |
89 #define ERROR_TYPE_STRING(code, name) \ |
89 #define ERROR_TYPE_STRING(code, name) \ |
90 { (code), (name), &error_extra_string, NULL } |
90 { (code), (name), &error_extra_string, NULL } |
91 |
91 |
92 #define ERROR_TYPE_CUSTOM(code, name, type) \ |
92 #define ERROR_TYPE_EXTRA(code, name, type) \ |
93 { (code), (name), (type), NULL } |
93 { (code), (name), (type), NULL } |
94 |
94 |
95 #define ERROR_TYPE_SUB(code, name, sub) \ |
95 #define ERROR_TYPE_SUB(code, name, sub) \ |
96 { (code), (name), NULL, (sub) } |
96 { (code), (name), NULL, (sub) } |
97 |
97 |
237 #define _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, _err_extra_field_, err_extra_value) \ |
237 #define _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, _err_extra_field_, err_extra_value) \ |
238 error_set_extra(err_state, err_list, err_code, err_extra_type, ((union error_extra) { ._err_extra_field_ = (err_extra_value)})) |
238 error_set_extra(err_state, err_list, err_code, err_extra_type, ((union error_extra) { ._err_extra_field_ = (err_extra_value)})) |
239 |
239 |
240 /** Set the error with extra info as integer */ |
240 /** Set the error with extra info as integer */ |
241 #define SET_ERROR_EXTRA(err_state, err_list, err_code, err_extra_type, err_extra_int) ({ \ |
241 #define SET_ERROR_EXTRA(err_state, err_list, err_code, err_extra_type, err_extra_int) ({ \ |
242 _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, int_, err_extra); \ |
242 _ERROR_SET_EXTRA(err_state, err_list, err_code, err_extra_type, int_, err_extra_int); \ |
243 err_code; }) |
243 err_code; }) |
244 |
244 |
245 /** Set the error with extra info as the libc errno */ |
245 /** Set the error with extra info as the libc errno */ |
246 #define SET_ERROR_ERRNO(err_state, err_list, err_code) ({ \ |
246 #define SET_ERROR_ERRNO(err_state, err_list, err_code) ({ \ |
247 _ERROR_SET_EXTRA(err_state, err_list, err_code, &error_extra_errno, int_, errno); \ |
247 _ERROR_SET_EXTRA(err_state, err_list, err_code, &error_extra_errno, int_, errno); \ |