95 /* TODO: check for error */ |
95 /* TODO: check for error */ |
96 continue; |
96 continue; |
97 } |
97 } |
98 |
98 |
99 for(int i=0;i<nev;i++) { |
99 for(int i=0;i<nev;i++) { |
100 event_t *event = events[i]->portev_user; |
100 event_t *event = events[i].portev_user; |
101 if(event->fn) { |
101 if(event->fn) { |
102 event->fn(ev, event); |
102 event->fn(ev, event); |
103 } |
103 } |
104 } |
104 } |
105 } |
105 } |
106 } |
106 } |
107 |
107 |
108 /* returns a event handler port */ |
108 /* returns a event handler port */ |
109 int ev_get_port(event_handler_t *h) { |
109 int ev_get_port(event_handler_t *h) { |
110 int cp = h->lp % h->nports; |
110 int nps = h->nports; |
|
111 if(nps == 1) { |
|
112 return 0; |
|
113 } |
|
114 |
|
115 int cp = h->lp % nps; |
111 atomic_inc_32(&h->lp); |
116 atomic_inc_32(&h->lp); |
112 return cp; |
117 |
|
118 return h->ports[cp]; |
113 } |
119 } |
114 |
120 |
115 int ev_pollin(event_handler_t *h, int fd, event_t *event) { |
121 int ev_pollin(event_handler_t *h, int fd, event_t *event) { |
116 event->object = (intptr_t)fd; |
122 event->object = (intptr_t)fd; |
117 return port_associate( |
123 return port_associate( |