1 /*
2  * (c) 2010 Alexander Warg <warg@os.inf.tu-dresden.de>
3  *     economic rights: Technische Universität Dresden (Germany)
4  * This file is part of TUD:OS and distributed under the terms of the
5  * GNU Lesser General Public License 2.1.
6  * Please see the COPYING-LGPL-2.1 file for details.
7  */
8 #pragma once
9 
10 #define L4B(e) L4Re::Vfs::vfs_ops->e
11 
12 #define POST()                           \
13   if (r < 0)                             \
14     {                                    \
15       errno = -r;                        \
16       return -1;                         \
17     }                                    \
18   return r
19 
20 
21 #define L4B_FD \
22   cxx::Ref_ptr<L4Re::Vfs::File> file = L4Re::Vfs::vfs_ops->get_file(fd); \
23   if (!file)         \
24     {                \
25       errno = EBADF; \
26       return -1;     \
27     }
28 
29 
30 #define L4B_STRIP_FIRST__(fd, p...) p
31 #define L4B_STRIP_FIRST(x) L4B_STRIP_FIRST__ x
32 
33 #define L4B_REDIRECT_0(ret, func) L4B_REDIRECT(ret, func, (void), ())
34 #define L4B_REDIRECT_1(ret, func, a1) L4B_REDIRECT(ret, func, (a1 _a1), (_a1))
35 #define L4B_REDIRECT_2(ret, func, a1, a2) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2), (_a1, _a2))
36 #define L4B_REDIRECT_3(ret, func, a1, a2, a3) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2, a3 _a3), (_a1, _a2, _a3))
37 #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))
38 #define L4B_REDIRECT_5(ret, func, a1, a2, a3, a4, a5) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2, a3 _a3, a4 _a4, a5 _a5), (_a1, _a2, _a3, _a4, _a5))
39 #define L4B_REDIRECT_6(ret, func, a1, a2, a3, a4, a5, a6) L4B_REDIRECT(ret, func, (a1 _a1, a2 _a2, a3 _a3, a4 _a4, a5 _a5, a6 _a6), (_a1, _a2, _a3, _a4, _a5, _a6))
40 
41