Lines Matching refs:pop

118 poll_check_ok(struct pollop *pop)
123 for (i = 0; i < pop->fd_count; ++i) {
124 idx = pop->idxplus1_by_fd[i]-1;
127 assert(pop->event_set[idx].fd == i);
128 if (pop->event_set[idx].events & POLLIN) {
129 ev = pop->event_r_back[idx];
134 if (pop->event_set[idx].events & POLLOUT) {
135 ev = pop->event_w_back[idx];
141 for (i = 0; i < pop->nfds; ++i) {
142 struct pollfd *pfd = &pop->event_set[i];
143 assert(pop->idxplus1_by_fd[pfd->fd] == i+1);
147 #define poll_check_ok(pop)
154 struct pollop *pop = arg;
156 poll_check_ok(pop);
158 nfds = pop->nfds;
159 res = poll(pop->event_set, nfds, sec);
178 int what = pop->event_set[i].revents;
190 r_ev = pop->event_r_back[i];
194 w_ev = pop->event_w_back[i];
217 struct pollop *pop = arg;
226 poll_check_ok(pop);
227 if (pop->nfds + 1 >= pop->event_count) {
233 if (pop->event_count < 32)
236 tmp_event_count = pop->event_count * 2;
239 tmp_event_set = realloc(pop->event_set,
245 pop->event_set = tmp_event_set;
247 tmp_event_r_back = realloc(pop->event_r_back,
254 pop->event_r_back = tmp_event_r_back;
256 tmp_event_w_back = realloc(pop->event_w_back,
264 pop->event_w_back = tmp_event_w_back;
266 pop->event_count = tmp_event_count;
268 if (ev->ev_fd >= pop->fd_count) {
271 if (pop->fd_count < 32)
274 new_count = pop->fd_count * 2;
278 realloc(pop->idxplus1_by_fd, new_count * sizeof(int));
283 pop->idxplus1_by_fd = tmp_idxplus1_by_fd;
284 memset(pop->idxplus1_by_fd + pop->fd_count,
285 0, sizeof(int)*(new_count - pop->fd_count));
286 pop->fd_count = new_count;
289 i = pop->idxplus1_by_fd[ev->ev_fd] - 1;
291 pfd = &pop->event_set[i];
293 i = pop->nfds++;
294 pfd = &pop->event_set[i];
297 pop->event_w_back[i] = pop->event_r_back[i] = NULL;
298 pop->idxplus1_by_fd[ev->ev_fd] = i + 1;
304 pop->event_w_back[i] = ev;
308 pop->event_r_back[i] = ev;
310 poll_check_ok(pop);
322 struct pollop *pop = arg;
332 poll_check_ok(pop);
333 i = pop->idxplus1_by_fd[ev->ev_fd] - 1;
338 pfd = &pop->event_set[i];
341 pop->event_r_back[i] = NULL;
345 pop->event_w_back[i] = NULL;
347 poll_check_ok(pop);
353 pop->idxplus1_by_fd[ev->ev_fd] = 0;
355 --pop->nfds;
356 if (i != pop->nfds) {
361 memcpy(&pop->event_set[i], &pop->event_set[pop->nfds],
363 pop->event_r_back[i] = pop->event_r_back[pop->nfds];
364 pop->event_w_back[i] = pop->event_w_back[pop->nfds];
365 pop->idxplus1_by_fd[pop->event_set[i].fd] = i + 1;
368 poll_check_ok(pop);
375 struct pollop *pop = arg;
377 if (pop->event_set)
378 free(pop->event_set);
379 if (pop->event_r_back)
380 free(pop->event_r_back);
381 if (pop->event_w_back)
382 free(pop->event_w_back);
383 if (pop->idxplus1_by_fd)
384 free(pop->idxplus1_by_fd);
386 memset(pop, 0, sizeof(struct pollop));
387 free(pop);