1227068Sambrisko/* 2227068Sambrisko * Copyright (c) 2014 The FreeBSD Foundation. 3227068Sambrisko * 4227068Sambrisko * Portions of this software were developed by Konstantin Belousov 5227068Sambrisko * under sponsorship from the FreeBSD Foundation. 6227068Sambrisko * 7227068Sambrisko * Redistribution and use in source and binary forms, with or without 8227068Sambrisko * modification, are permitted provided that the following conditions 9227068Sambrisko * are met: 10227068Sambrisko * 1. Redistributions of source code must retain the above copyright 11227068Sambrisko * notice(s), this list of conditions and the following disclaimer as 12227068Sambrisko * the first lines of this file unmodified other than the possible 13227068Sambrisko * addition of one or more copyright notices. 14227068Sambrisko * 2. Redistributions in binary form must reproduce the above copyright 15227068Sambrisko * notice(s), this list of conditions and the following disclaimer in 16227068Sambrisko * the documentation and/or other materials provided with the 17227068Sambrisko * distribution. 18227068Sambrisko * 19227068Sambrisko * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY 20227068Sambrisko * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21227068Sambrisko * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22227068Sambrisko * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE 23227068Sambrisko * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24227068Sambrisko * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25227068Sambrisko * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 26227068Sambrisko * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27227068Sambrisko * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 28227068Sambrisko * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 29227068Sambrisko * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30227068Sambrisko */ 31227068Sambrisko 32227068Sambrisko#include <sys/types.h> 33227068Sambrisko#include "libc_private.h" 34233711Sambrisko 35227068Sambrisko#define SLOT(a, b) \ 36227068Sambrisko [INTERPOS_##a] = (interpos_func_t)b 37227068Sambriskostatic interpos_func_t __libsys_interposing[INTERPOS_MAX] = { 38227068Sambrisko SLOT(accept, __sys_accept), 39227068Sambrisko SLOT(accept4, __sys_accept4), 40227068Sambrisko SLOT(aio_suspend, __sys_aio_suspend), 41227068Sambrisko SLOT(close, __sys_close), 42227068Sambrisko SLOT(connect, __sys_connect), 43227068Sambrisko SLOT(fcntl, __sys_fcntl), 44227068Sambrisko SLOT(fsync, __sys_fsync), 45227068Sambrisko SLOT(fork, __sys_fork), 46227068Sambrisko SLOT(msync, __sys_msync), 47227068Sambrisko SLOT(nanosleep, __sys_nanosleep), 48227068Sambrisko SLOT(openat, __sys_openat), 49227068Sambrisko SLOT(poll, __sys_poll), 50233711Sambrisko SLOT(pselect, __sys_pselect), 51227068Sambrisko SLOT(read, __sys_read), 52227068Sambrisko SLOT(readv, __sys_readv), 53227068Sambrisko SLOT(recvfrom, __sys_recvfrom), 54227068Sambrisko SLOT(recvmsg, __sys_recvmsg), 55227068Sambrisko SLOT(select, __sys_select), 56227068Sambrisko SLOT(sendmsg, __sys_sendmsg), 57227068Sambrisko SLOT(sendto, __sys_sendto), 58227068Sambrisko SLOT(setcontext, __sys_setcontext), 59227068Sambrisko SLOT(sigaction, __sys_sigaction), 60227068Sambrisko SLOT(sigprocmask, __sys_sigprocmask), 61227068Sambrisko SLOT(sigsuspend, __sys_sigsuspend), 62227068Sambrisko SLOT(sigwait, __libsys_sigwait), 63227068Sambrisko SLOT(sigtimedwait, __sys_sigtimedwait), 64227068Sambrisko SLOT(sigwaitinfo, __sys_sigwaitinfo), 65227068Sambrisko SLOT(swapcontext, __sys_swapcontext), 66227068Sambrisko SLOT(wait4, __sys_wait4), 67227068Sambrisko SLOT(write, __sys_write), 68227068Sambrisko SLOT(writev, __sys_writev), 69227068Sambrisko SLOT(kevent, __sys_kevent), 70227068Sambrisko SLOT(wait6, __sys_wait6), 71227068Sambrisko SLOT(ppoll, __sys_ppoll), 72227068Sambrisko SLOT(fdatasync, __sys_fdatasync), 73227068Sambrisko SLOT(clock_nanosleep, __sys_clock_nanosleep), 74227068Sambrisko SLOT(pdfork, __sys_pdfork), 75227068Sambrisko}; 76227068Sambrisko#undef SLOT 77227068Sambrisko 78227068Sambriskointerpos_func_t * 79227068Sambrisko__libsys_interposing_slot(int interposno) 80227068Sambrisko{ 81227068Sambrisko return (&__libsys_interposing[interposno]); 82227068Sambrisko} 83227068Sambrisko