78:3578977d29a3 | 79:f48cea237ec3 |
---|---|
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 ev_thr_conf_t *thrconf = malloc(sizeof(ev_thr_conf_t)); | 72 systhread_start(0, 0, (thrstartfunc)ev_handle_events, conf); |
73 thrconf->handler = ev; | 73 // TODO: error handling |
74 thrconf->port = ev->ports[i]; | |
75 systhread_start(0, 0, (thrstartfunc)ev_handle_events, thrconf); | |
76 /* TODO: error handling */ | |
77 } | 74 } |
78 | 75 |
79 return ev; | 76 return ev; |
80 } | 77 } |
81 | 78 |
89 struct timespec timeout; | 86 struct timespec timeout; |
90 timeout.tv_nsec = 0; | 87 timeout.tv_nsec = 0; |
91 timeout.tv_sec = 600; | 88 timeout.tv_sec = 600; |
92 | 89 |
93 for(;;) { | 90 for(;;) { |
94 /* wait for events */ | 91 // wait for events |
95 uint_t nev = 1; | 92 uint_t nev = 1; |
96 int ret = port_getn(port, events, 16, &nev, &timeout); | 93 int ret = port_getn(port, events, 16, &nev, &timeout); |
97 if(ret == -1) { | 94 if(ret == -1) { |
98 /* TODO: check for error */ | 95 // TODO: check for error |
99 perror("port_getn"); | 96 perror("port_getn"); |
100 continue; | 97 continue; |
101 } | 98 } |
102 | 99 |
103 for(int i=0;i<nev;i++) { | 100 for(int i=0;i<nev;i++) { |
118 } | 115 } |
119 } | 116 } |
120 } | 117 } |
121 } | 118 } |
122 | 119 |
123 /* returns a event handler port */ | 120 // returns a event handler port |
124 int ev_get_port(event_handler_t *h) { | 121 int ev_get_port(event_handler_t *h) { |
125 int nps = h->nports; | 122 int nps = h->nports; |
126 if(nps == 1) { | 123 if(nps == 1) { |
127 return h->ports[0]; | 124 return h->ports[0]; |
128 } | 125 } |