| @@ -1,28 +1,52 @@ | | | @@ -1,28 +1,52 @@ |
1 | $NetBSD: patch-aa,v 1.3 2009/12/04 15:57:47 fhajny Exp $ | | 1 | $NetBSD: patch-aa,v 1.4 2009/12/10 19:26:22 fhajny Exp $ |
2 | | | 2 | |
3 | --- ext/em.cpp.orig 2009-11-22 13:20:52.694811390 +0000 | | 3 | --- ext/em.cpp.orig 2009-12-10 21:13:48.000000000 +0100 |
4 | +++ ext/em.cpp | | 4 | +++ ext/em.cpp |
5 | @@ -1622,7 +1622,11 @@ void EventMachine_t::ArmKqueueWriter (Ev | | 5 | @@ -1347,7 +1347,11 @@ int EventMachine_t::DetachFD (EventableD |
| | | 6 | if (bKqueue) { |
| | | 7 | // remove any read/write events for this fd |
| | | 8 | struct kevent k; |
| | | 9 | +#ifdef __NetBSD__ |
| | | 10 | + EV_SET (&k, ed->GetSocket(), EVFILT_READ | EVFILT_WRITE, EV_DELETE, 0, 0, (intptr_t)ed); |
| | | 11 | +#else |
| | | 12 | EV_SET (&k, ed->GetSocket(), EVFILT_READ | EVFILT_WRITE, EV_DELETE, 0, 0, ed); |
| | | 13 | +#endif |
| | | 14 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); |
| | | 15 | if (t < 0 && (errno != ENOENT) && (errno != EBADF)) { |
| | | 16 | char buf [200]; |
| | | 17 | @@ -1622,7 +1626,11 @@ void EventMachine_t::ArmKqueueWriter (Ev |
6 | if (!ed) | | 18 | if (!ed) |
7 | throw std::runtime_error ("added bad descriptor"); | | 19 | throw std::runtime_error ("added bad descriptor"); |
8 | struct kevent k; | | 20 | struct kevent k; |
9 | +#ifdef __NetBSD__ | | 21 | +#ifdef __NetBSD__ |
10 | + EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, (intptr_t)ed); | | 22 | + EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, (intptr_t)ed); |
11 | +#else | | 23 | +#else |
12 | EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, ed); | | 24 | EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, ed); |
13 | +#endif | | 25 | +#endif |
14 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); | | 26 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); |
15 | if (t < 0) { | | 27 | if (t < 0) { |
16 | char buf [200]; | | 28 | char buf [200]; |
17 | @@ -1644,7 +1648,11 @@ void EventMachine_t::ArmKqueueReader (Ev | | 29 | @@ -1644,7 +1652,11 @@ void EventMachine_t::ArmKqueueReader (Ev |
18 | if (!ed) | | 30 | if (!ed) |
19 | throw std::runtime_error ("added bad descriptor"); | | 31 | throw std::runtime_error ("added bad descriptor"); |
20 | struct kevent k; | | 32 | struct kevent k; |
21 | +#ifdef __NetBSD__ | | 33 | +#ifdef __NetBSD__ |
22 | + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, (intptr_t)ed); | | 34 | + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, (intptr_t)ed); |
23 | +#else | | 35 | +#else |
24 | EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed); | | 36 | EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed); |
25 | +#endif | | 37 | +#endif |
26 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); | | 38 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); |
27 | if (t < 0) { | | 39 | if (t < 0) { |
28 | char buf [200]; | | 40 | char buf [200]; |
| | | 41 | @@ -1695,7 +1707,11 @@ void EventMachine_t::_AddNewDescriptors( |
| | | 42 | // INCOMPLETE. Some descriptors don't want to be readable. |
| | | 43 | assert (kqfd != -1); |
| | | 44 | struct kevent k; |
| | | 45 | +#ifdef __NetBSD__ |
| | | 46 | + EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, (intptr_t)ed); |
| | | 47 | +#else |
| | | 48 | EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed); |
| | | 49 | +#endif |
| | | 50 | int t = kevent (kqfd, &k, 1, NULL, 0, NULL); |
| | | 51 | assert (t == 0); |
| | | 52 | } |