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