blob: 865a3e1298d3f06c4979ce2f9f5ab728c682719e [file] [log] [blame]
Willy Tarreaubaaee002006-06-26 02:48:02 +02001/*
Willy Tarreau2dd0d472006-06-29 17:53:05 +02002 include/common/epoll.h
Willy Tarreaubaaee002006-06-26 02:48:02 +02003 epoll definitions for older libc.
4
5 Copyright (C) 2000-2006 Willy Tarreau - w@1wt.eu
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation, version 2.1
10 exclusively.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/
21
22/*
23 * Those constants were found both in glibc and in the Linux kernel.
24 * They are provided here because the epoll() syscall is featured in
25 * some kernels but in not often included in the glibc, so it needs
26 * just a basic definition.
27 */
28
Willy Tarreau2dd0d472006-06-29 17:53:05 +020029#ifndef _COMMON_EPOLL_H
30#define _COMMON_EPOLL_H
Willy Tarreaubaaee002006-06-26 02:48:02 +020031
32#include <linux/unistd.h>
33#include <stdint.h>
34
35/* epoll_ctl() commands */
36#ifndef EPOLL_CTL_ADD
37#define EPOLL_CTL_ADD 1
38#define EPOLL_CTL_DEL 2
39#define EPOLL_CTL_MOD 3
40#endif
41
42/* events types (bit fields) */
43#ifndef EPOLLIN
44#define EPOLLIN 1
45#define EPOLLPRI 2
46#define EPOLLOUT 4
47#define EPOLLERR 8
48#define EPOLLHUP 16
49#define EPOLLONESHOT (1 << 30)
50#define EPOLLET (1 << 31)
51#endif
52
53struct epoll_event {
54 uint32_t events;
55 union {
56 void *ptr;
57 int fd;
58 uint32_t u32;
59 uint64_t u64;
60 } data;
61};
62
63
64#if defined(__powerpc__) || defined(__powerpc64__)
65#define __NR_epoll_create 236
66#define __NR_epoll_ctl 237
67#define __NR_epoll_wait 238
68#elif defined(__sparc__) || defined(__sparc64__)
69#define __NR_epoll_create 193
70#define __NR_epoll_ctl 194
71#define __NR_epoll_wait 195
72#elif defined(__x86_64__)
73#define __NR_epoll_create 213
74#define __NR_epoll_ctl 214
75#define __NR_epoll_wait 215
76#elif defined(__alpha__)
77#define __NR_epoll_create 407
78#define __NR_epoll_ctl 408
79#define __NR_epoll_wait 409
80#elif defined (__i386__)
81#define __NR_epoll_create 254
82#define __NR_epoll_ctl 255
83#define __NR_epoll_wait 256
84#else
85#warning unsupported architecture, guessing __NR_epoll_create=254 like x86...
86#define __NR_epoll_create 254
87#define __NR_epoll_ctl 255
88#define __NR_epoll_wait 256
89#endif
90
91extern int epoll_create(int size);
92extern int epoll_ctl(int epfd, int op, int fd, struct epoll_event * event);
93extern int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);
94
Willy Tarreau2dd0d472006-06-29 17:53:05 +020095#endif /* _COMMON_EPOLL_H */
Willy Tarreaubaaee002006-06-26 02:48:02 +020096
97
98/*
99 * Local variables:
100 * c-indent-level: 8
101 * c-basic-offset: 8
102 * End:
103 */