Mercurial > projects > ldc
comparison tango/tango/sys/linux/epoll.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:5825d48b27d1 | 132:1700239cab2e |
---|---|
1 module tango.sys.linux.epoll; | |
2 | |
3 version (linux) | |
4 { | |
5 // From <sys/epoll.h>: support for the Linux epoll_*() system calls | |
6 extern (C) | |
7 { | |
8 enum: uint | |
9 { | |
10 EPOLLIN = 0x001, | |
11 EPOLLPRI = 0x002, | |
12 EPOLLOUT = 0x004, | |
13 EPOLLRDNORM = 0x040, | |
14 EPOLLRDBAND = 0x080, | |
15 EPOLLWRNORM = 0x100, | |
16 EPOLLWRBAND = 0x200, | |
17 EPOLLMSG = 0x400, | |
18 EPOLLERR = 0x008, | |
19 EPOLLHUP = 0x010, | |
20 EPOLLONESHOT = (1 << 30), | |
21 EPOLLET = (1 << 31) | |
22 } | |
23 | |
24 // Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). | |
25 public const int EPOLL_CTL_ADD = 1; // Add a file descriptor to the interface. | |
26 public const int EPOLL_CTL_DEL = 2; // Remove a file descriptor from the interface. | |
27 public const int EPOLL_CTL_MOD = 3; // Change file descriptor epoll_event structure. | |
28 | |
29 align(1) union epoll_data | |
30 { | |
31 void* ptr; | |
32 int fd; | |
33 uint u32; | |
34 ulong u64; | |
35 } | |
36 | |
37 alias epoll_data epoll_data_t; | |
38 | |
39 align(1) struct epoll_event | |
40 { | |
41 uint events; // Epoll events | |
42 epoll_data_t data; // User data variable | |
43 } | |
44 | |
45 // Creates an epoll instance. Returns an fd for the new instance. | |
46 // The "size" parameter is a hint specifying the number of file | |
47 // descriptors to be associated with the new instance. The fd | |
48 // returned by epoll_create() should be closed with close(). | |
49 int epoll_create(int size); | |
50 | |
51 // Manipulate an epoll instance "epfd". Returns 0 in case of success, | |
52 // -1 in case of error (the "errno" variable will contain the | |
53 // specific error code) The "op" parameter is one of the EPOLL_CTL_* | |
54 // constants defined above. The "fd" parameter is the target of the | |
55 // operation. The "event" parameter describes which events the caller | |
56 // is interested in and any associated user data. | |
57 int epoll_ctl(int epfd, int op, int fd, epoll_event* event); | |
58 | |
59 // Wait for events on an epoll instance "epfd". Returns the number of | |
60 // triggered events returned in "events" buffer. Or -1 in case of | |
61 // error with the "errno" variable set to the specific error code. The | |
62 // "events" parameter is a buffer that will contain triggered | |
63 // events. The "maxevents" is the maximum number of events to be | |
64 // returned (usually size of "events"). The "timeout" parameter | |
65 // specifies the maximum wait time in milliseconds (-1 == infinite). | |
66 int epoll_wait(int epfd, epoll_event* events, int maxevents, int timeout); | |
67 } | |
68 } |