| #include <errno.h> |
| #include <apimagic/apimagic.h> |
| |
| int amgc_record_error( |
| const struct amgc_driver_ctx *, |
| int esyscode, |
| int elibcode, |
| const char * efunction, |
| int eline, |
| unsigned eflags, |
| void * ectx); |
| |
| #define AMGC_SYSTEM_ERROR(dctx) \ |
| amgc_record_error( \ |
| dctx, \ |
| errno, \ |
| 0, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_TOP_LEVEL, \ |
| 0) |
| |
| #define AMGC_BUFFER_ERROR(dctx) \ |
| amgc_record_error( \ |
| dctx, \ |
| ENOBUFS, \ |
| 0, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_TOP_LEVEL, \ |
| 0) |
| |
| #define AMGC_SPAWN_ERROR(dctx) \ |
| amgc_record_error( \ |
| dctx, \ |
| errno, \ |
| 0, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_TOP_LEVEL \ |
| | (errno ? 0 \ |
| : AMGC_ERROR_CHILD), \ |
| 0) |
| |
| #define AMGC_FILE_ERROR(dctx) \ |
| amgc_record_error( \ |
| dctx, \ |
| EIO, \ |
| 0, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_TOP_LEVEL, \ |
| 0) |
| |
| #define AMGC_CUSTOM_ERROR(dctx,elibcode) \ |
| amgc_record_error( \ |
| dctx, \ |
| 0, \ |
| elibcode, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_TOP_LEVEL \ |
| | AMGC_ERROR_CUSTOM, \ |
| 0) |
| |
| #define AMGC_NESTED_ERROR(dctx) \ |
| amgc_record_error( \ |
| dctx, \ |
| 0, \ |
| 0, \ |
| __func__, \ |
| __LINE__, \ |
| AMGC_ERROR_NESTED, \ |
| 0) |