vfs: check userland buffers before reading them.
[haiku.git] / headers / private / shared / syscall_utils.h
blobf5890e87f934bd46d17ee5ed20117402c8dcd1c1
1 /*
2 * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _SYSCALL_UTILS_H
6 #define _SYSCALL_UTILS_H
9 #define RETURN_AND_SET_ERRNO(err) \
10 do { \
11 __typeof(err) __result = (err); \
12 if (__result < 0) { \
13 errno = __result; \
14 return -1; \
15 } \
16 return __result; \
17 } while (0)
19 #define RETURN_AND_TEST_CANCEL(err) \
20 do { \
21 __typeof(err) __result = (err); \
22 pthread_testcancel(); \
23 return __result; \
24 } while (0)
26 #define RETURN_AND_SET_ERRNO_TEST_CANCEL(err) \
27 do { \
28 __typeof(err) __result = (err); \
29 pthread_testcancel(); \
30 if (__result < 0) { \
31 errno = __result; \
32 return -1; \
33 } \
34 return __result; \
35 } while (0)
38 #endif // _SYSCALL_UTILS_H