⛏️ index : haiku.git

/*
 * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef _SYSCALL_UTILS_H
#define _SYSCALL_UTILS_H


#define RETURN_AND_SET_ERRNO(err)			\
	do {									\
		__typeof(err) __result = (err);		\
		if (__result < 0) {					\
			errno = __result;				\
			return -1;						\
		}									\
		return __result;					\
	} while (0)

#define RETURN_AND_TEST_CANCEL(err)			\
	do {									\
		__typeof(err) __result = (err);		\
		pthread_testcancel();				\
		return __result;					\
	} while (0)

#define RETURN_AND_SET_ERRNO_TEST_CANCEL(err)	\
	do {										\
		__typeof(err) __result = (err);			\
		pthread_testcancel();					\
		if (__result < 0) {						\
			errno = __result;					\
			return -1;							\
		}										\
		return __result;						\
	} while (0)


#endif	// _SYSCALL_UTILS_H