Lines Matching full:pop

103 poll_check_ok(struct pollop *pop)  in poll_check_ok()  argument
108 for (i = 0; i < pop->fd_count; ++i) { in poll_check_ok()
109 idx = pop->idxplus1_by_fd[i]-1; in poll_check_ok()
112 assert(pop->event_set[idx].fd == i); in poll_check_ok()
113 if (pop->event_set[idx].events & POLLIN) { in poll_check_ok()
114 ev = pop->event_r_back[idx]; in poll_check_ok()
119 if (pop->event_set[idx].events & POLLOUT) { in poll_check_ok()
120 ev = pop->event_w_back[idx]; in poll_check_ok()
126 for (i = 0; i < pop->nfds; ++i) { in poll_check_ok()
127 struct pollfd *pfd = &pop->event_set[i]; in poll_check_ok()
128 assert(pop->idxplus1_by_fd[pfd->fd] == i+1); in poll_check_ok()
132 #define poll_check_ok(pop) argument
139 struct pollop *pop = arg; in poll_dispatch() local
141 poll_check_ok(pop); in poll_dispatch()
146 nfds = pop->nfds; in poll_dispatch()
147 res = poll(pop->event_set, nfds, msec); in poll_dispatch()
172 what = pop->event_set[i].revents; in poll_dispatch()
184 r_ev = pop->event_r_back[i]; in poll_dispatch()
188 w_ev = pop->event_w_back[i]; in poll_dispatch()
207 struct pollop *pop = arg; in poll_add() local
216 poll_check_ok(pop); in poll_add()
217 if (pop->nfds + 1 >= pop->event_count) { in poll_add()
223 if (pop->event_count < 32) in poll_add()
226 tmp_event_count = pop->event_count * 2; in poll_add()
229 tmp_event_set = realloc(pop->event_set, in poll_add()
235 pop->event_set = tmp_event_set; in poll_add()
237 tmp_event_r_back = realloc(pop->event_r_back, in poll_add()
244 pop->event_r_back = tmp_event_r_back; in poll_add()
246 tmp_event_w_back = realloc(pop->event_w_back, in poll_add()
254 pop->event_w_back = tmp_event_w_back; in poll_add()
256 pop->event_count = tmp_event_count; in poll_add()
258 if (ev->ev_fd >= pop->fd_count) { in poll_add()
261 if (pop->fd_count < 32) in poll_add()
264 new_count = pop->fd_count * 2; in poll_add()
268 realloc(pop->idxplus1_by_fd, new_count * sizeof(int)); in poll_add()
273 pop->idxplus1_by_fd = tmp_idxplus1_by_fd; in poll_add()
274 memset(pop->idxplus1_by_fd + pop->fd_count, in poll_add()
275 0, sizeof(int)*(new_count - pop->fd_count)); in poll_add()
276 pop->fd_count = new_count; in poll_add()
279 i = pop->idxplus1_by_fd[ev->ev_fd] - 1; in poll_add()
281 pfd = &pop->event_set[i]; in poll_add()
283 i = pop->nfds++; in poll_add()
284 pfd = &pop->event_set[i]; in poll_add()
287 pop->event_w_back[i] = pop->event_r_back[i] = NULL; in poll_add()
288 pop->idxplus1_by_fd[ev->ev_fd] = i + 1; in poll_add()
294 pop->event_w_back[i] = ev; in poll_add()
298 pop->event_r_back[i] = ev; in poll_add()
300 poll_check_ok(pop); in poll_add()
312 struct pollop *pop = arg; in poll_del() local
322 poll_check_ok(pop); in poll_del()
323 i = pop->idxplus1_by_fd[ev->ev_fd] - 1; in poll_del()
328 pfd = &pop->event_set[i]; in poll_del()
331 pop->event_r_back[i] = NULL; in poll_del()
335 pop->event_w_back[i] = NULL; in poll_del()
337 poll_check_ok(pop); in poll_del()
343 pop->idxplus1_by_fd[ev->ev_fd] = 0; in poll_del()
345 --pop->nfds; in poll_del()
346 if (i != pop->nfds) { in poll_del()
351 memcpy(&pop->event_set[i], &pop->event_set[pop->nfds], in poll_del()
353 pop->event_r_back[i] = pop->event_r_back[pop->nfds]; in poll_del()
354 pop->event_w_back[i] = pop->event_w_back[pop->nfds]; in poll_del()
355 pop->idxplus1_by_fd[pop->event_set[i].fd] = i + 1; in poll_del()
358 poll_check_ok(pop); in poll_del()
365 struct pollop *pop = arg; in poll_dealloc() local
368 if (pop->event_set) in poll_dealloc()
369 free(pop->event_set); in poll_dealloc()
370 if (pop->event_r_back) in poll_dealloc()
371 free(pop->event_r_back); in poll_dealloc()
372 if (pop->event_w_back) in poll_dealloc()
373 free(pop->event_w_back); in poll_dealloc()
374 if (pop->idxplus1_by_fd) in poll_dealloc()
375 free(pop->idxplus1_by_fd); in poll_dealloc()
377 memset(pop, 0, sizeof(struct pollop)); in poll_dealloc()
378 free(pop); in poll_dealloc()