• Home
  • Raw
  • Download

Lines Matching refs:sop

97 static int select_resize(struct selectop *sop, int fdsz);
102 struct selectop *sop; in select_init() local
108 if (!(sop = calloc(1, sizeof(struct selectop)))) in select_init()
111 select_resize(sop, howmany(32 + 1, NFDBITS)*sizeof(fd_mask)); in select_init()
115 return (sop); in select_init()
120 check_selectop(struct selectop *sop) in check_selectop() argument
123 for (i = 0; i <= sop->event_fds; ++i) { in check_selectop()
124 if (FD_ISSET(i, sop->event_readset_in)) { in check_selectop()
125 assert(sop->event_r_by_fd[i]); in check_selectop()
126 assert(sop->event_r_by_fd[i]->ev_events & EV_READ); in check_selectop()
127 assert(sop->event_r_by_fd[i]->ev_fd == i); in check_selectop()
129 assert(! sop->event_r_by_fd[i]); in check_selectop()
131 if (FD_ISSET(i, sop->event_writeset_in)) { in check_selectop()
132 assert(sop->event_w_by_fd[i]); in check_selectop()
133 assert(sop->event_w_by_fd[i]->ev_events & EV_WRITE); in check_selectop()
134 assert(sop->event_w_by_fd[i]->ev_fd == i); in check_selectop()
136 assert(! sop->event_w_by_fd[i]); in check_selectop()
142 #define check_selectop(sop) do { (void) sop; } while (0) argument
149 struct selectop *sop = arg; in select_dispatch() local
151 check_selectop(sop); in select_dispatch()
153 memcpy(sop->event_readset_out, sop->event_readset_in, in select_dispatch()
154 sop->event_fdsz); in select_dispatch()
155 memcpy(sop->event_writeset_out, sop->event_writeset_in, in select_dispatch()
156 sop->event_fdsz); in select_dispatch()
158 res = select(sop->event_fds + 1, sop->event_readset_out, in select_dispatch()
159 sop->event_writeset_out, NULL, tv); in select_dispatch()
161 check_selectop(sop); in select_dispatch()
177 check_selectop(sop); in select_dispatch()
178 i = random() % (sop->event_fds+1); in select_dispatch()
179 for (j = 0; j <= sop->event_fds; ++j) { in select_dispatch()
181 if (++i >= sop->event_fds+1) in select_dispatch()
185 if (FD_ISSET(i, sop->event_readset_out)) { in select_dispatch()
186 r_ev = sop->event_r_by_fd[i]; in select_dispatch()
189 if (FD_ISSET(i, sop->event_writeset_out)) { in select_dispatch()
190 w_ev = sop->event_w_by_fd[i]; in select_dispatch()
200 check_selectop(sop); in select_dispatch()
207 select_resize(struct selectop *sop, int fdsz) in select_resize() argument
219 n_events_old = (sop->event_fdsz/sizeof(fd_mask)) * NFDBITS; in select_resize()
221 if (sop->event_readset_in) in select_resize()
222 check_selectop(sop); in select_resize()
224 if ((readset_in = realloc(sop->event_readset_in, fdsz)) == NULL) in select_resize()
226 sop->event_readset_in = readset_in; in select_resize()
227 if ((readset_out = realloc(sop->event_readset_out, fdsz)) == NULL) in select_resize()
229 sop->event_readset_out = readset_out; in select_resize()
230 if ((writeset_in = realloc(sop->event_writeset_in, fdsz)) == NULL) in select_resize()
232 sop->event_writeset_in = writeset_in; in select_resize()
233 if ((writeset_out = realloc(sop->event_writeset_out, fdsz)) == NULL) in select_resize()
235 sop->event_writeset_out = writeset_out; in select_resize()
236 if ((r_by_fd = realloc(sop->event_r_by_fd, in select_resize()
239 sop->event_r_by_fd = r_by_fd; in select_resize()
240 if ((w_by_fd = realloc(sop->event_w_by_fd, in select_resize()
243 sop->event_w_by_fd = w_by_fd; in select_resize()
245 memset((char *)sop->event_readset_in + sop->event_fdsz, 0, in select_resize()
246 fdsz - sop->event_fdsz); in select_resize()
247 memset((char *)sop->event_writeset_in + sop->event_fdsz, 0, in select_resize()
248 fdsz - sop->event_fdsz); in select_resize()
249 memset(sop->event_r_by_fd + n_events_old, 0, in select_resize()
251 memset(sop->event_w_by_fd + n_events_old, 0, in select_resize()
254 sop->event_fdsz = fdsz; in select_resize()
255 check_selectop(sop); in select_resize()
268 struct selectop *sop = arg; in select_add() local
273 check_selectop(sop); in select_add()
278 if (sop->event_fds < ev->ev_fd) { in select_add()
279 int fdsz = sop->event_fdsz; in select_add()
288 if (fdsz != sop->event_fdsz) { in select_add()
289 if (select_resize(sop, fdsz)) { in select_add()
290 check_selectop(sop); in select_add()
295 sop->event_fds = ev->ev_fd; in select_add()
299 FD_SET(ev->ev_fd, sop->event_readset_in); in select_add()
300 sop->event_r_by_fd[ev->ev_fd] = ev; in select_add()
303 FD_SET(ev->ev_fd, sop->event_writeset_in); in select_add()
304 sop->event_w_by_fd[ev->ev_fd] = ev; in select_add()
306 check_selectop(sop); in select_add()
318 struct selectop *sop = arg; in select_del() local
320 check_selectop(sop); in select_del()
324 if (sop->event_fds < ev->ev_fd) { in select_del()
325 check_selectop(sop); in select_del()
330 FD_CLR(ev->ev_fd, sop->event_readset_in); in select_del()
331 sop->event_r_by_fd[ev->ev_fd] = NULL; in select_del()
335 FD_CLR(ev->ev_fd, sop->event_writeset_in); in select_del()
336 sop->event_w_by_fd[ev->ev_fd] = NULL; in select_del()
339 check_selectop(sop); in select_del()
346 struct selectop *sop = arg; in select_dealloc() local
349 if (sop->event_readset_in) in select_dealloc()
350 free(sop->event_readset_in); in select_dealloc()
351 if (sop->event_writeset_in) in select_dealloc()
352 free(sop->event_writeset_in); in select_dealloc()
353 if (sop->event_readset_out) in select_dealloc()
354 free(sop->event_readset_out); in select_dealloc()
355 if (sop->event_writeset_out) in select_dealloc()
356 free(sop->event_writeset_out); in select_dealloc()
357 if (sop->event_r_by_fd) in select_dealloc()
358 free(sop->event_r_by_fd); in select_dealloc()
359 if (sop->event_w_by_fd) in select_dealloc()
360 free(sop->event_w_by_fd); in select_dealloc()
362 memset(sop, 0, sizeof(struct selectop)); in select_dealloc()
363 free(sop); in select_dealloc()