1 | /*- |
---|
2 | * Copyright (c) 1997 Peter Wemm <peter@freebsd.org> |
---|
3 | * All rights reserved. |
---|
4 | * |
---|
5 | * Redistribution and use in source and binary forms, with or without |
---|
6 | * modification, are permitted provided that the following conditions |
---|
7 | * are met: |
---|
8 | * 1. Redistributions of source code must retain the above copyright |
---|
9 | * notice, this list of conditions and the following disclaimer. |
---|
10 | * 2. Redistributions in binary form must reproduce the above copyright |
---|
11 | * notice, this list of conditions and the following disclaimer in the |
---|
12 | * documentation and/or other materials provided with the distribution. |
---|
13 | * 3. The name of the author may not be used to endorse or promote products |
---|
14 | * derived from this software without specific prior written permission. |
---|
15 | * |
---|
16 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
---|
17 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
---|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
---|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
---|
20 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
---|
21 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
---|
22 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
---|
23 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
---|
24 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
---|
25 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
---|
26 | * SUCH DAMAGE. |
---|
27 | * |
---|
28 | * $Id$ |
---|
29 | */ |
---|
30 | |
---|
31 | #ifndef _SYS_POLL_H_ |
---|
32 | #define _SYS_POLL_H_ |
---|
33 | |
---|
34 | /* |
---|
35 | * This file is intended to be compatable with the traditional poll.h. |
---|
36 | */ |
---|
37 | |
---|
38 | /* |
---|
39 | * This structure is passed as an array to poll(2). |
---|
40 | */ |
---|
41 | struct pollfd { |
---|
42 | int fd; /* which file descriptor to poll */ |
---|
43 | short events; /* events we are interested in */ |
---|
44 | short revents; /* events found on return */ |
---|
45 | }; |
---|
46 | |
---|
47 | /* |
---|
48 | * Requestable events. If poll(2) finds any of these set, they are |
---|
49 | * copied to revents on return. |
---|
50 | * XXX Note that FreeBSD doesn't make much distinction between POLLPRI |
---|
51 | * and POLLRDBAND since none of the file types have distinct priority |
---|
52 | * bands - and only some have an urgent "mode". |
---|
53 | * XXX Note POLLIN isn't really supported in true SVSV terms. Under SYSV |
---|
54 | * POLLIN includes all of normal, band and urgent data. Most poll handlers |
---|
55 | * on FreeBSD only treat it as "normal" data. |
---|
56 | */ |
---|
57 | #define POLLIN 0x0001 /* any readable data available */ |
---|
58 | #define POLLPRI 0x0002 /* OOB/Urgent readable data */ |
---|
59 | #define POLLOUT 0x0004 /* file descriptor is writeable */ |
---|
60 | #define POLLRDNORM 0x0040 /* non-OOB/URG data available */ |
---|
61 | #define POLLWRNORM POLLOUT /* no write type differentiation */ |
---|
62 | #define POLLRDBAND 0x0080 /* OOB/Urgent readable data */ |
---|
63 | #define POLLWRBAND 0x0100 /* OOB/Urgent data can be written */ |
---|
64 | |
---|
65 | /* |
---|
66 | * FreeBSD extensions: polling on a regular file might return one |
---|
67 | * of these events (currently only supported on UFS). |
---|
68 | */ |
---|
69 | #define POLLEXTEND 0x0200 /* file may have been extended */ |
---|
70 | #define POLLATTRIB 0x0400 /* file attributes may have changed */ |
---|
71 | #define POLLNLINK 0x0800 /* (un)link/rename may have happened */ |
---|
72 | #define POLLWRITE 0x1000 /* file's contents may have changed */ |
---|
73 | |
---|
74 | /* |
---|
75 | * These events are set if they occur regardless of whether they were |
---|
76 | * requested. |
---|
77 | */ |
---|
78 | #define POLLERR 0x0008 /* some poll error occurred */ |
---|
79 | #define POLLHUP 0x0010 /* file descriptor was "hung up" */ |
---|
80 | #define POLLNVAL 0x0020 /* requested events "invalid" */ |
---|
81 | |
---|
82 | #define POLLSTANDARD (POLLIN|POLLPRI|POLLOUT|POLLRDNORM|POLLRDBAND|\ |
---|
83 | POLLWRBAND|POLLERR|POLLHUP|POLLNVAL) |
---|
84 | |
---|
85 | /* |
---|
86 | * Request that poll() wait forever. |
---|
87 | * XXX in SYSV, this is defined in stropts.h, which is not included |
---|
88 | * by poll.h. |
---|
89 | */ |
---|
90 | #define INFTIM (-1) |
---|
91 | |
---|
92 | #ifndef KERNEL |
---|
93 | |
---|
94 | #include <sys/cdefs.h> |
---|
95 | |
---|
96 | __BEGIN_DECLS |
---|
97 | /* |
---|
98 | * XXX logically, poll() should be declared in <poll.h>, but SVR4 at |
---|
99 | * least has it here in <sys/poll.h>. |
---|
100 | * XXX poll() has "unsigned long" nfds on SVR4, not unsigned as on the |
---|
101 | * other BSDs. |
---|
102 | */ |
---|
103 | int poll __P((struct pollfd *_pfd, unsigned _nfds, int _timeout)); |
---|
104 | __END_DECLS |
---|
105 | |
---|
106 | #endif /* !KERNEL */ |
---|
107 | |
---|
108 | #endif /* !_SYS_POLL_H_ */ |
---|