1/*	$OpenBSD: poll.h,v 1.15 2016/06/07 06:12:37 deraadt Exp $ */
2
3/*
4 * Copyright (c) 1996 Theo de Raadt
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef	_SYS_POLL_H_
29#define	_SYS_POLL_H_
30
31typedef struct pollfd {
32	int 	fd;
33	short	events;
34	short	revents;
35} pollfd_t;
36
37typedef unsigned int	nfds_t;
38
39#define	POLLIN		0x0001
40#define	POLLPRI		0x0002
41#define	POLLOUT		0x0004
42#define	POLLERR		0x0008
43#define	POLLHUP		0x0010
44#define	POLLNVAL	0x0020
45#define	POLLRDNORM	0x0040
46#define POLLNORM	POLLRDNORM
47#define POLLWRNORM      POLLOUT
48#define	POLLRDBAND	0x0080
49#define	POLLWRBAND	0x0100
50#ifdef _KERNEL
51#define	POLL_NOHUP	0x1000		/* internal use only */
52#endif
53
54#define INFTIM		(-1)
55
56#ifndef _KERNEL
57#include <sys/cdefs.h>
58
59#if __BSD_VISIBLE
60#include <sys/_types.h>
61
62#ifndef _SIGSET_T_DEFINED_
63#define _SIGSET_T_DEFINED_
64typedef unsigned int	sigset_t;
65#endif
66
67#ifndef _TIME_T_DEFINED_
68#define _TIME_T_DEFINED_
69typedef __time_t	time_t;
70#endif
71
72#ifndef _TIMESPEC_DECLARED
73#define _TIMESPEC_DECLARED
74struct timespec {
75	time_t	tv_sec;		/* seconds */
76	long	tv_nsec;	/* and nanoseconds */
77};
78#endif
79#endif /* __BSD_VISIBLE */
80
81__BEGIN_DECLS
82int   poll(struct pollfd[], nfds_t, int);
83#if __BSD_VISIBLE
84int   ppoll(struct pollfd[], nfds_t, const struct timespec *, const sigset_t *);
85#endif /* __BSD_VISIBLE */
86__END_DECLS
87#endif /* _KERNEL */
88
89#endif /* !_SYS_POLL_H_ */
90