xref: /freebsd/include/ssp/poll.h (revision 88276dfbf19e3c0dbd1abee5c2e18c8a4a8c5559)
1*88276dfbSKyle Evans /*-
2*88276dfbSKyle Evans  * SPDX-License-Identifier: BSD-2-Clause
3*88276dfbSKyle Evans  *
4*88276dfbSKyle Evans  * Copyright (c) 2024, Klara, Inc.
5*88276dfbSKyle Evans  *
6*88276dfbSKyle Evans  * Redistribution and use in source and binary forms, with or without
7*88276dfbSKyle Evans  * modification, are permitted provided that the following conditions
8*88276dfbSKyle Evans  * are met:
9*88276dfbSKyle Evans  * 1. Redistributions of source code must retain the above copyright
10*88276dfbSKyle Evans  *    notice, this list of conditions and the following disclaimer.
11*88276dfbSKyle Evans  * 2. Redistributions in binary form must reproduce the above copyright
12*88276dfbSKyle Evans  *    notice, this list of conditions and the following disclaimer in the
13*88276dfbSKyle Evans  *    documentation and/or other materials provided with the distribution.
14*88276dfbSKyle Evans  *
15*88276dfbSKyle Evans  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16*88276dfbSKyle Evans  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17*88276dfbSKyle Evans  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18*88276dfbSKyle Evans  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19*88276dfbSKyle Evans  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*88276dfbSKyle Evans  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*88276dfbSKyle Evans  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*88276dfbSKyle Evans  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*88276dfbSKyle Evans  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*88276dfbSKyle Evans  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*88276dfbSKyle Evans  * POSSIBILITY OF SUCH DAMAGE.
26*88276dfbSKyle Evans  */
27*88276dfbSKyle Evans #ifndef _SSP_POLL_H_
28*88276dfbSKyle Evans #define _SSP_POLL_H_
29*88276dfbSKyle Evans 
30*88276dfbSKyle Evans #include <ssp/ssp.h>
31*88276dfbSKyle Evans 
32*88276dfbSKyle Evans #if __SSP_FORTIFY_LEVEL > 0
33*88276dfbSKyle Evans 
34*88276dfbSKyle Evans __BEGIN_DECLS
35*88276dfbSKyle Evans 
36*88276dfbSKyle Evans __ssp_redirect_raw_impl(int, poll, poll,
37*88276dfbSKyle Evans     (struct pollfd fds[], nfds_t nfds, int timeout))
38*88276dfbSKyle Evans {
39*88276dfbSKyle Evans 	if (__ssp_bos(fds) / sizeof(fds[0]) < nfds)
40*88276dfbSKyle Evans 		__chk_fail();
41*88276dfbSKyle Evans 
42*88276dfbSKyle Evans 	return (__ssp_real(poll)(fds, nfds, timeout));
43*88276dfbSKyle Evans }
44*88276dfbSKyle Evans 
45*88276dfbSKyle Evans 
46*88276dfbSKyle Evans __ssp_redirect_raw_impl(int, ppoll, ppoll,
47*88276dfbSKyle Evans     (struct pollfd fds[], nfds_t nfds,
48*88276dfbSKyle Evans     const struct timespec *__restrict timeout,
49*88276dfbSKyle Evans     const sigset_t *__restrict newsigmask))
50*88276dfbSKyle Evans {
51*88276dfbSKyle Evans 	if (__ssp_bos(fds) / sizeof(fds[0]) < nfds)
52*88276dfbSKyle Evans 		__chk_fail();
53*88276dfbSKyle Evans 
54*88276dfbSKyle Evans 	return (__ssp_real(ppoll)(fds, nfds, timeout, newsigmask));
55*88276dfbSKyle Evans }
56*88276dfbSKyle Evans 
57*88276dfbSKyle Evans __END_DECLS
58*88276dfbSKyle Evans 
59*88276dfbSKyle Evans #endif /* __SSP_FORTIFY_LEVEL > 0 */
60*88276dfbSKyle Evans #endif /* _SSP_POLL_H_ */
61