Blame src/internal/mdso_errinfo_impl.h

4ecd08
/****************************************************************/
4ecd08
/*  mdso: midipix dso scavenger                                 */
4ecd08
/*  Copyright (C) 2015--2016  Z. Gilboa                         */
4ecd08
/*  Released under GPLv2 and GPLv3; see COPYING.MDSO.           */
4ecd08
/****************************************************************/
4ecd08
4ecd08
#include <errno.h>
4ecd08
#include <mdso/mdso.h>
4ecd08
4ecd08
int mdso_record_error(
4ecd08
	const struct mdso_driver_ctx *,
4ecd08
	int		syserror,
4ecd08
	int		liberror,
4ecd08
	const char *	function,
4ecd08
	int		line,
4ecd08
	unsigned	flags,
4ecd08
	void *		ctx);
4ecd08
4ecd08
#define MDSO_SYSTEM_ERROR(dctx)           \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		errno,                    \
4ecd08
		0,                        \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_TOP_LEVEL,     \
4ecd08
		0)
4ecd08
4ecd08
#define MDSO_BUFFER_ERROR(dctx)           \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		ENOBUFS,                  \
4ecd08
		0,                        \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_TOP_LEVEL,     \
4ecd08
		0)
4ecd08
4ecd08
#define MDSO_SPAWN_ERROR(dctx)            \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		errno,                    \
4ecd08
		0,                        \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_TOP_LEVEL      \
4ecd08
		| (errno ? 0              \
4ecd08
		   : MDSO_ERROR_CHILD),   \
4ecd08
		0)
4ecd08
4ecd08
#define MDSO_FILE_ERROR(dctx)             \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		EIO,                      \
4ecd08
		0,                        \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_TOP_LEVEL,     \
4ecd08
		0)
4ecd08
4ecd08
#define MDSO_CUSTOM_ERROR(dctx,liberror)  \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		0,                        \
4ecd08
		liberror,                 \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_TOP_LEVEL      \
4ecd08
		| MDSO_ERROR_CUSTOM,      \
4ecd08
		0)
4ecd08
4ecd08
#define MDSO_NESTED_ERROR(dctx)           \
4ecd08
	mdso_record_error(                \
4ecd08
		dctx,                     \
4ecd08
		0,                        \
4ecd08
		0,                        \
4ecd08
		__func__,                 \
4ecd08
		__LINE__,                 \
4ecd08
		MDSO_ERROR_NESTED,        \
4ecd08
		0)