]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libc_backends/lib/l4re_file/redirect.h
884e62e4e417562f4870286d862dc075f66df147
[l4.git] / l4 / pkg / libc_backends / lib / l4re_file / redirect.h
1 /*
2  * (c) 2010 Technische Universität Dresden
3  * This file is part of TUD:OS and distributed under the terms of the
4  * GNU Lesser General Public License 2.1.
5  * Please see the COPYING-LGPL-2.1 file for details.
6  */
7 #pragma once
8
9 #define L4B(e) L4Re::Vfs::vfs_ops->e
10
11 #define POST()                           \
12   if (r < 0)                             \
13     {                                    \
14       errno = -r;                        \
15       return -1;                         \
16     }                                    \
17   return r
18
19
20 #define L4B_FD \
21   cxx::Ref_ptr<L4Re::Vfs::File> file = L4Re::Vfs::vfs_ops->get_file(fd); \
22   if (!file)         \
23     {                \
24       errno = EBADF; \
25       return -1;     \
26     }
27
28
29 #define L4B_STRIP_FIRST__(fd, p...) p
30 #define L4B_STRIP_FIRST(x) L4B_STRIP_FIRST__ x
31
32 #define L4B_REDIRECT_0(ret, func) L4B_REDIRECT(ret, func, (void), ())
33 #define L4B_REDIRECT_1(ret, func, a1) L4B_REDIRECT(ret, func, (a1 _a1), (_a1))
34 #define L4B_REDIRECT_2(ret, func, a1, a2) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2), (_a1, _a2))
35 #define L4B_REDIRECT_3(ret, func, a1, a2, a3) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2, a3 _a3), (_a1, _a2, _a3))
36 #define L4B_REDIRECT_4(ret, func, a1, a2, a3, a4) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2, a3 _a3, a4 _a4), (_a1, _a2, _a3, _a4))
37