add support for DISPATCH_PRI (EPOLLPRI)

This commit is contained in:
Andreas Öman 2007-08-27 17:06:09 +00:00
parent 56752aceac
commit 4cfe004801
2 changed files with 11 additions and 9 deletions

View file

@ -161,6 +161,9 @@ dispatch_set(void *handle, int flags)
{
struct epoll_entry *e = handle;
if(flags & DISPATCH_PRI)
e->event.events |= EPOLLPRI;
if(flags & DISPATCH_READ)
e->event.events |= EPOLLIN;
@ -176,6 +179,9 @@ dispatch_clr(void *handle, int flags)
{
struct epoll_entry *e = handle;
if(flags & DISPATCH_PRI)
e->event.events &= ~EPOLLPRI;
if(flags & DISPATCH_READ)
e->event.events &= ~EPOLLIN;
@ -238,16 +244,11 @@ dispatcher(void)
if(e->callback == NULL)
continue; /* poll entry has been free'd during loop */
e->callback(
((events[i].events & (EPOLLERR | EPOLLHUP)) ?
e->callback(((events[i].events & (EPOLLERR | EPOLLHUP)) ?
DISPATCH_ERR : 0 ) |
((events[i].events & EPOLLIN) ?
DISPATCH_READ : 0 ) |
((events[i].events & EPOLLOUT) ?
DISPATCH_WRITE : 0 ),
((events[i].events & EPOLLIN) ? DISPATCH_READ : 0 ) |
((events[i].events & EPOLLOUT) ? DISPATCH_WRITE : 0 ) |
((events[i].events & EPOLLPRI) ? DISPATCH_PRI : 0 ),
e->opaque, e->fd);
}

View file

@ -22,6 +22,7 @@
#define DISPATCH_READ 0x1
#define DISPATCH_WRITE 0x2
#define DISPATCH_ERR 0x4
#define DISPATCH_PRI 0x8
int dispatch_init(void);
void *dispatch_addfd(int fd,