#include <errno.h>
#include <sofort/sofort.h>
int sfrt_record_error(
const struct sfrt_driver_ctx *,
int esyscode,
int elibcode,
const char * efunction,
int eline,
unsigned eflags,
void * ectx);
#define SFRT_SYSTEM_ERROR(dctx) \
sfrt_record_error( \
dctx, \
errno, \
0, \
__func__, \
__LINE__, \
SFRT_ERROR_TOP_LEVEL, \
0)
#define SFRT_BUFFER_ERROR(dctx) \
sfrt_record_error( \
dctx, \
ENOBUFS, \
0, \
__func__, \
__LINE__, \
SFRT_ERROR_TOP_LEVEL, \
0)
#define SFRT_SPAWN_ERROR(dctx) \
sfrt_record_error( \
dctx, \
errno, \
0, \
__func__, \
__LINE__, \
SFRT_ERROR_TOP_LEVEL \
| (errno ? 0 \
: SFRT_ERROR_CHILD), \
0)
#define SFRT_FILE_ERROR(dctx) \
sfrt_record_error( \
dctx, \
EIO, \
0, \
__func__, \
__LINE__, \
SFRT_ERROR_TOP_LEVEL, \
0)
#define SFRT_CUSTOM_ERROR(dctx,elibcode) \
sfrt_record_error( \
dctx, \
0, \
elibcode, \
__func__, \
__LINE__, \
SFRT_ERROR_TOP_LEVEL \
| SFRT_ERROR_CUSTOM, \
0)
#define SFRT_NESTED_ERROR(dctx) \
sfrt_record_error( \
dctx, \
0, \
0, \
__func__, \
__LINE__, \
SFRT_ERROR_NESTED, \
0)