Lines Matching defs:eloop
23 #include "eloop.h"
25 static struct eloop_data eloop;
34 (void) memset(&eloop, 0, sizeof (eloop));
35 eloop.user_data = user_data;
48 tmp = (struct eloop_sock *)realloc(eloop.readers,
49 (eloop.reader_count + 1) * sizeof (struct eloop_sock));
53 tmp[eloop.reader_count].sock = sock;
54 tmp[eloop.reader_count].eloop_data = eloop_data;
55 tmp[eloop.reader_count].user_data = user_data;
56 tmp[eloop.reader_count].handler = handler;
57 eloop.reader_count++;
58 eloop.readers = tmp;
59 if (sock > eloop.max_sock)
60 eloop.max_sock = sock;
70 if (eloop.readers == NULL || eloop.reader_count == 0)
73 for (i = 0; i < eloop.reader_count; i++) {
74 if (eloop.readers[i].sock == sock)
77 if (i == eloop.reader_count)
79 if (i != eloop.reader_count - 1) {
80 (void) memmove(&eloop.readers[i], &eloop.readers[i + 1],
81 (eloop.reader_count - i - 1) *
84 eloop.reader_count--;
112 if (eloop.timeout == NULL) {
113 eloop.timeout = timeout;
118 tmp = eloop.timeout;
127 timeout->next = eloop.timeout;
128 eloop.timeout = timeout;
149 timeout = eloop.timeout;
159 eloop.timeout = next;
174 eloop.signaled++;
175 for (i = 0; i < eloop.signal_count; i++) {
176 if (eloop.signals[i].sig == sig) {
177 eloop.signals[i].signaled++;
187 if (eloop.signaled == 0)
189 eloop.signaled = 0;
191 for (i = 0; i < eloop.signal_count; i++) {
192 if (eloop.signals[i].signaled) {
193 eloop.signals[i].signaled = 0;
194 eloop.signals[i].handler(eloop.signals[i].sig,
195 eloop.user_data, eloop.signals[i].user_data);
214 realloc(eloop.signals,
215 (eloop.signal_count + 1) *
220 tmp[eloop.signal_count].sig = sig;
221 tmp[eloop.signal_count].user_data = user_data;
222 tmp[eloop.signal_count].handler = handler;
223 tmp[eloop.signal_count].signaled = 0;
224 eloop.signal_count++;
225 eloop.signals = tmp;
244 while (!eloop.terminate &&
245 (eloop.timeout || eloop.reader_count > 0)) {
246 if (eloop.timeout) {
248 if (timercmp(&now, &eloop.timeout->time, < /* */))
249 timersub(&eloop.timeout->time, &now, &tv);
254 t = (eloop.timeout == NULL ?
256 for (i = 0; i < eloop.reader_count; i++) {
257 pfds[i].fd = eloop.readers[i].sock;
260 res = poll(pfds, eloop.reader_count, t);
267 if (eloop.timeout) {
271 if (!timercmp(&now, &eloop.timeout->time, < /* */)) {
272 tmp = eloop.timeout;
273 eloop.timeout = eloop.timeout->next;
283 for (i = 0; i < eloop.reader_count; i++) {
285 eloop.readers[i].handler(
286 eloop.readers[i].sock,
287 eloop.readers[i].eloop_data,
288 eloop.readers[i].user_data);
300 eloop.terminate = 1;
313 timeout = eloop.timeout;
319 free(eloop.readers);
320 free(eloop.signals);