34:2b4574e617c0 | 35:4417619a9bbd |
---|---|
67 return NULL; | 67 return NULL; |
68 } | 68 } |
69 conf->handler = ev; | 69 conf->handler = ev; |
70 conf->port = ev->ports[i]; | 70 conf->port = ev->ports[i]; |
71 | 71 |
72 systhread_start(0, 0, (thrstartfunc)ev_handle_events, ev); | 72 ev_thr_conf_t *thrconf = malloc(sizeof(ev_thr_conf_t)); |
73 thrconf->handler = ev; | |
74 thrconf->port = ev->ports[i]; | |
75 systhread_start(0, 0, (thrstartfunc)ev_handle_events, thrconf); | |
73 /* TODO: error handling */ | 76 /* TODO: error handling */ |
74 } | 77 } |
75 | 78 |
76 return ev; | 79 return ev; |
77 } | 80 } |
91 /* wait for events */ | 94 /* wait for events */ |
92 uint_t nev = 1; | 95 uint_t nev = 1; |
93 int ret = port_getn(port, events, 16, &nev, &timeout); | 96 int ret = port_getn(port, events, 16, &nev, &timeout); |
94 if(ret == -1) { | 97 if(ret == -1) { |
95 /* TODO: check for error */ | 98 /* TODO: check for error */ |
99 perror("port_getn"); | |
96 continue; | 100 continue; |
97 } | 101 } |
98 | 102 |
99 for(int i=0;i<nev;i++) { | 103 for(int i=0;i<nev;i++) { |
100 event_t *event = events[i].portev_user; | 104 event_t *event = events[i].portev_user; |
107 | 111 |
108 /* returns a event handler port */ | 112 /* returns a event handler port */ |
109 int ev_get_port(event_handler_t *h) { | 113 int ev_get_port(event_handler_t *h) { |
110 int nps = h->nports; | 114 int nps = h->nports; |
111 if(nps == 1) { | 115 if(nps == 1) { |
112 return 0; | 116 return h->ports[0]; |
113 } | 117 } |
114 | 118 |
115 int cp = h->lp % nps; | 119 int cp = h->lp % nps; |
116 atomic_inc_32(&h->lp); | 120 atomic_inc_32(&h->lp); |
117 | 121 |