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