1 /* Copyright (C) 2002-2006, 2007, 2008 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 #define _SYS_EPOLL_H 1
23 #include <sys/types.h>
26 #include <bits/sigset.h>
28 #ifndef __sigset_t_defined
29 # define __sigset_t_defined
30 typedef __sigset_t sigset_t
;
34 /* Flags to be passed to epoll_create2. */
37 EPOLL_CLOEXEC
= 010000000,
38 #define EPOLL_CLOEXEC EPOLL_CLOEXEC
40 #define EPOLL_NONBLOCK EPOLL_NONBLOCK
47 #define EPOLLIN EPOLLIN
49 #define EPOLLPRI EPOLLPRI
51 #define EPOLLOUT EPOLLOUT
53 #define EPOLLRDNORM EPOLLRDNORM
55 #define EPOLLRDBAND EPOLLRDBAND
57 #define EPOLLWRNORM EPOLLWRNORM
59 #define EPOLLWRBAND EPOLLWRBAND
61 #define EPOLLMSG EPOLLMSG
63 #define EPOLLERR EPOLLERR
65 #define EPOLLHUP EPOLLHUP
67 #define EPOLLRDHUP EPOLLRDHUP
68 EPOLLONESHOT
= (1 << 30),
69 #define EPOLLONESHOT EPOLLONESHOT
71 #define EPOLLET EPOLLET
75 /* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
76 #define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
77 #define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
78 #define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
81 typedef union epoll_data
91 uint32_t events
; /* Epoll events */
92 epoll_data_t data
; /* User data variable */
98 /* Creates an epoll instance. Returns an fd for the new instance.
99 The "size" parameter is a hint specifying the number of file
100 descriptors to be associated with the new instance. The fd
101 returned by epoll_create() should be closed with close(). */
102 extern int epoll_create (int __size
) __THROW
;
104 /* Same as epoll_create but with an additional FLAGS parameter. */
105 extern int epoll_create2 (int __size
, int __flags
) __THROW
;
108 /* Manipulate an epoll instance "epfd". Returns 0 in case of success,
109 -1 in case of error ( the "errno" variable will contain the
110 specific error code ) The "op" parameter is one of the EPOLL_CTL_*
111 constants defined above. The "fd" parameter is the target of the
112 operation. The "event" parameter describes which events the caller
113 is interested in and any associated user data. */
114 extern int epoll_ctl (int __epfd
, int __op
, int __fd
,
115 struct epoll_event
*__event
) __THROW
;
118 /* Wait for events on an epoll instance "epfd". Returns the number of
119 triggered events returned in "events" buffer. Or -1 in case of
120 error with the "errno" variable set to the specific error code. The
121 "events" parameter is a buffer that will contain triggered
122 events. The "maxevents" is the maximum number of events to be
123 returned ( usually size of "events" ). The "timeout" parameter
124 specifies the maximum wait time in milliseconds (-1 == infinite).
126 This function is a cancellation point and therefore not marked with
128 extern int epoll_wait (int __epfd
, struct epoll_event
*__events
,
129 int __maxevents
, int __timeout
);
132 /* Same as epoll_wait, but the thread's signal mask is temporarily
133 and atomically replaced with the one provided as parameter.
135 This function is a cancellation point and therefore not marked with
137 extern int epoll_pwait (int __epfd
, struct epoll_event
*__events
,
138 int __maxevents
, int __timeout
,
139 __const __sigset_t
*__ss
);
143 #endif /* sys/epoll.h */