iovent bug fixed for FreeBSD

pull/5/head
yuqing 2016-01-27 22:50:35 +08:00
parent 94feb0b311
commit 74715cb089
3 changed files with 11 additions and 13 deletions

View File

@ -1,5 +1,5 @@
Version 1.24 2016-01-26 Version 1.24 2016-01-27
* php extension compiled on PHP 7 * php extension compiled on PHP 7
* add skiplist which support stable sort * add skiplist which support stable sort
* make.sh: use sed to replace perl * make.sh: use sed to replace perl
@ -9,6 +9,7 @@ Version 1.24 2016-01-26
* add function get_processes for Linux * add function get_processes for Linux
* ini_file_reader add iniGetSectionNames and iniGetSectionItems * ini_file_reader add iniGetSectionNames and iniGetSectionItems
* add fast_blocked_queue.[hc] * add fast_blocked_queue.[hc]
* iovent bug fixed for FreeBSD
Version 1.23 2015-11-16 Version 1.23 2015-11-16
* sched_thread.c: task can execute in a new thread * sched_thread.c: task can execute in a new thread

View File

@ -113,19 +113,15 @@ int ioevent_modify(IOEventPoller *ioevent, const int fd, const int e,
struct kevent ev[2]; struct kevent ev[2];
int n = 0; int n = 0;
if (e & IOEVENT_READ) { if (e & IOEVENT_READ) {
if (!(ioevent->care_events & IOEVENT_READ)) {
EV_SET(&ev[n++], fd, EVFILT_READ, EV_ADD | ioevent->extra_events, 0, 0, data); EV_SET(&ev[n++], fd, EVFILT_READ, EV_ADD | ioevent->extra_events, 0, 0, data);
} }
}
else if ((ioevent->care_events & IOEVENT_READ)) { else if ((ioevent->care_events & IOEVENT_READ)) {
EV_SET(&ev[n++], fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); EV_SET(&ev[n++], fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
} }
if (e & IOEVENT_WRITE) { if (e & IOEVENT_WRITE) {
if (!(ioevent->care_events & IOEVENT_WRITE)) {
EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_ADD | ioevent->extra_events, 0, 0, data); EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_ADD | ioevent->extra_events, 0, 0, data);
} }
}
else if ((ioevent->care_events & IOEVENT_WRITE)) { else if ((ioevent->care_events & IOEVENT_WRITE)) {
EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL); EV_SET(&ev[n++], fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
} }

View File

@ -18,16 +18,17 @@
#elif IOEVENT_USE_KQUEUE #elif IOEVENT_USE_KQUEUE
#include <sys/event.h> #include <sys/event.h>
#include <sys/poll.h>
#define IOEVENT_EDGE_TRIGGER EV_CLEAR #define IOEVENT_EDGE_TRIGGER EV_CLEAR
#define KPOLLIN 0x001 #define KPOLLIN POLLIN
#define KPOLLPRI 0x002 #define KPOLLPRI POLLPRI
#define KPOLLOUT 0x004 #define KPOLLOUT POLLOUT
#define KPOLLERR 0x010 #define KPOLLERR POLLERR
#define KPOLLHUP 0x020 #define KPOLLHUP POLLHUP
#define IOEVENT_READ KPOLLIN #define IOEVENT_READ KPOLLIN
#define IOEVENT_WRITE KPOLLOUT #define IOEVENT_WRITE KPOLLOUT
#define IOEVENT_ERROR (KPOLLERR | KPOLLPRI | KPOLLHUP) #define IOEVENT_ERROR (KPOLLERR | KPOLLHUP | POLLNVAL)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {