Lines Matching refs:engine

25 static nxt_int_t nxt_pollset_create(nxt_event_engine_t *engine,
27 static void nxt_pollset_free(nxt_event_engine_t *engine);
28 static void nxt_pollset_enable(nxt_event_engine_t *engine, nxt_fd_event_t *ev);
29 static void nxt_pollset_disable(nxt_event_engine_t *engine, nxt_fd_event_t *ev);
30 static nxt_bool_t nxt_pollset_close(nxt_event_engine_t *engine,
32 static void nxt_pollset_enable_read(nxt_event_engine_t *engine,
34 static void nxt_pollset_enable_write(nxt_event_engine_t *engine,
36 static void nxt_pollset_disable_read(nxt_event_engine_t *engine,
38 static void nxt_pollset_disable_write(nxt_event_engine_t *engine,
40 static void nxt_pollset_block_read(nxt_event_engine_t *engine,
42 static void nxt_pollset_block_write(nxt_event_engine_t *engine,
44 static void nxt_pollset_oneshot_read(nxt_event_engine_t *engine,
46 static void nxt_pollset_oneshot_write(nxt_event_engine_t *engine,
48 static void nxt_pollset_change(nxt_event_engine_t *engine, nxt_fd_event_t *ev,
50 static nxt_int_t nxt_pollset_commit_changes(nxt_event_engine_t *engine);
51 static void nxt_pollset_change_error(nxt_event_engine_t *engine,
53 static void nxt_pollset_remove(nxt_event_engine_t *engine, nxt_fd_t fd);
54 static nxt_int_t nxt_pollset_write(nxt_event_engine_t *engine,
56 static void nxt_pollset_poll(nxt_event_engine_t *engine, nxt_msec_t timeout);
90 nxt_pollset_create(nxt_event_engine_t *engine, nxt_uint_t mchanges, in nxt_pollset_create() argument
95 engine->u.pollset.ps = -1; in nxt_pollset_create()
96 engine->u.pollset.mchanges = mchanges; in nxt_pollset_create()
97 engine->u.pollset.mevents = mevents; in nxt_pollset_create()
104 engine->u.pollset.changes = changes; in nxt_pollset_create()
115 engine->u.pollset.write_changes = changes; in nxt_pollset_create()
117 engine->u.pollset.events = nxt_malloc(sizeof(struct pollfd) * mevents); in nxt_pollset_create()
118 if (engine->u.pollset.events == NULL) { in nxt_pollset_create()
122 engine->u.pollset.ps = pollset_create(-1); in nxt_pollset_create()
124 if (engine->u.pollset.ps == -1) { in nxt_pollset_create()
125 nxt_alert(&engine->task, "pollset_create() failed %E", nxt_errno); in nxt_pollset_create()
129 nxt_debug(&engine->task, "pollset_create(): %d", engine->u.pollset.ps); in nxt_pollset_create()
135 nxt_pollset_free(engine); in nxt_pollset_create()
142 nxt_pollset_free(nxt_event_engine_t *engine) in nxt_pollset_free() argument
146 ps = engine->u.pollset.ps; in nxt_pollset_free()
148 nxt_debug(&engine->task, "pollset %d free", ps); in nxt_pollset_free()
151 nxt_alert(&engine->task, "pollset_destroy(%d) failed %E", in nxt_pollset_free()
155 nxt_free(engine->u.pollset.events); in nxt_pollset_free()
156 nxt_free(engine->u.pollset.write_changes); in nxt_pollset_free()
157 nxt_free(engine->u.pollset.changes); in nxt_pollset_free()
158 nxt_fd_event_hash_destroy(&engine->u.pollset.fd_hash); in nxt_pollset_free()
160 nxt_memzero(&engine->u.pollset, sizeof(nxt_pollset_engine_t)); in nxt_pollset_free()
165 nxt_pollset_enable(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_enable() argument
170 nxt_pollset_change(engine, ev, NXT_POLLSET_ADD, POLLIN | POLLOUT); in nxt_pollset_enable()
175 nxt_pollset_disable(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_disable() argument
182 nxt_pollset_change(engine, ev, NXT_POLLSET_DELETE, 0); in nxt_pollset_disable()
203 nxt_pollset_close(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_close() argument
205 nxt_pollset_disable(engine, ev); in nxt_pollset_close()
212 nxt_pollset_enable_read(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_enable_read() argument
232 nxt_pollset_change(engine, ev, op, events); in nxt_pollset_enable_read()
240 nxt_pollset_enable_write(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_enable_write() argument
260 nxt_pollset_change(engine, ev, op, events); in nxt_pollset_enable_write()
268 nxt_pollset_disable_read(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_disable_read() argument
284 nxt_pollset_change(engine, ev, op, events); in nxt_pollset_disable_read()
289 nxt_pollset_disable_write(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_disable_write() argument
305 nxt_pollset_change(engine, ev, op, events); in nxt_pollset_disable_write()
310 nxt_pollset_block_read(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_block_read() argument
319 nxt_pollset_block_write(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_block_write() argument
328 nxt_pollset_oneshot_read(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_oneshot_read() argument
330 nxt_pollset_enable_read(engine, ev); in nxt_pollset_oneshot_read()
337 nxt_pollset_oneshot_write(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_oneshot_write() argument
339 nxt_pollset_enable_write(engine, ev); in nxt_pollset_oneshot_write()
357 nxt_pollset_change(nxt_event_engine_t *engine, nxt_fd_event_t *ev, in nxt_pollset_change() argument
363 engine->u.pollset.ps, ev->fd, op, events); in nxt_pollset_change()
365 if (engine->u.pollset.nchanges >= engine->u.pollset.mchanges) { in nxt_pollset_change()
366 (void) nxt_pollset_commit_changes(engine); in nxt_pollset_change()
371 change = &engine->u.pollset.changes[engine->u.pollset.nchanges++]; in nxt_pollset_change()
380 nxt_pollset_commit_changes(nxt_event_engine_t *engine) in nxt_pollset_commit_changes() argument
388 nxt_debug(&engine->task, "pollset %d changes:%ui", in nxt_pollset_commit_changes()
389 engine->u.pollset.ps, engine->u.pollset.nchanges); in nxt_pollset_commit_changes()
393 write_changes = engine->u.pollset.write_changes; in nxt_pollset_commit_changes()
394 change = engine->u.pollset.changes; in nxt_pollset_commit_changes()
395 end = change + engine->u.pollset.nchanges; in nxt_pollset_commit_changes()
401 nxt_debug(&engine->task, "pollset fd:%d op:%d ev:%04Xd", in nxt_pollset_commit_changes()
420 change = engine->u.pollset.changes; in nxt_pollset_commit_changes()
421 end = change + engine->u.pollset.nchanges; in nxt_pollset_commit_changes()
423 ret = nxt_pollset_write(engine, write_changes, n); in nxt_pollset_commit_changes()
428 nxt_pollset_change_error(engine, change->event); in nxt_pollset_commit_changes()
432 engine->u.pollset.nchanges = 0; in nxt_pollset_commit_changes()
441 ret = nxt_fd_event_hash_add(&engine->u.pollset.fd_hash, ev->fd, ev); in nxt_pollset_commit_changes()
444 nxt_pollset_change_error(engine, ev); in nxt_pollset_commit_changes()
449 nxt_fd_event_hash_delete(&engine->task, &engine->u.pollset.fd_hash, in nxt_pollset_commit_changes()
459 engine->u.pollset.nchanges = 0; in nxt_pollset_commit_changes()
466 nxt_pollset_change_error(nxt_event_engine_t *engine, nxt_fd_event_t *ev) in nxt_pollset_change_error() argument
471 nxt_work_queue_add(&engine->fast_work_queue, ev->error_handler, in nxt_pollset_change_error()
474 nxt_fd_event_hash_delete(&engine->task, &engine->u.pollset.fd_hash, in nxt_pollset_change_error()
477 nxt_pollset_remove(engine, ev->fd); in nxt_pollset_change_error()
482 nxt_pollset_remove(nxt_event_engine_t *engine, nxt_fd_t fd) in nxt_pollset_remove() argument
492 n = pollset_query(engine->u.pollset.ps, &pfd); in nxt_pollset_remove()
494 nxt_debug(&engine->task, "pollset_query(%d, %d): %d", in nxt_pollset_remove()
495 engine->u.pollset.ps, fd, n); in nxt_pollset_remove()
503 nxt_alert(&engine->task, "pollset_query(%d, %d) failed %E", in nxt_pollset_remove()
504 engine->u.pollset.ps, fd, nxt_errno); in nxt_pollset_remove()
510 nxt_debug(&engine->task, "pollset %d remove fd:%d", in nxt_pollset_remove()
511 engine->u.pollset.ps, fd); in nxt_pollset_remove()
517 nxt_pollset_write(engine, &ctl, 1); in nxt_pollset_remove()
522 nxt_pollset_write(nxt_event_engine_t *engine, struct poll_ctl *ctl, int n) in nxt_pollset_write() argument
526 ps = engine->u.pollset.ps; in nxt_pollset_write()
528 nxt_debug(&engine->task, "pollset_ctl(%d) changes:%d", ps, n); in nxt_pollset_write()
538 nxt_alert(&engine->task, "pollset_ctl(%d) failed: %d %E", ps, n, nxt_errno); in nxt_pollset_write()
545 nxt_pollset_poll(nxt_event_engine_t *engine, nxt_msec_t timeout) in nxt_pollset_poll() argument
555 if (engine->u.pollset.nchanges != 0) { in nxt_pollset_poll()
556 if (nxt_pollset_commit_changes(engine) != NXT_OK) { in nxt_pollset_poll()
562 nxt_debug(&engine->task, "pollset_poll(%d) timeout:%M", in nxt_pollset_poll()
563 engine->u.pollset.ps, timeout); in nxt_pollset_poll()
565 nevents = pollset_poll(engine->u.pollset.ps, engine->u.pollset.events, in nxt_pollset_poll()
566 engine->u.pollset.mevents, timeout); in nxt_pollset_poll()
570 nxt_thread_time_update(engine->task.thread); in nxt_pollset_poll()
572 nxt_debug(&engine->task, "pollset_poll(%d): %d", in nxt_pollset_poll()
573 engine->u.pollset.ps, nevents); in nxt_pollset_poll()
578 nxt_log(&engine->task, level, "pollset_poll(%d) failed %E", in nxt_pollset_poll()
579 engine->u.pollset.ps, err); in nxt_pollset_poll()
586 pfd = &engine->u.pollset.events[i]; in nxt_pollset_poll()
590 ev = nxt_fd_event_hash_get(&engine->task, &engine->u.pollset.fd_hash, in nxt_pollset_poll()
594 nxt_alert(&engine->task, in nxt_pollset_poll()
597 engine->u.pollset.ps, fd, pfd->events, events); in nxt_pollset_poll()
599 nxt_pollset_remove(engine, fd); in nxt_pollset_poll()
608 engine->u.pollset.ps, fd, pfd->events, events); in nxt_pollset_poll()
610 nxt_work_queue_add(&engine->fast_work_queue, ev->error_handler, in nxt_pollset_poll()
626 nxt_pollset_disable_read(engine, ev); in nxt_pollset_poll()
641 nxt_pollset_disable_write(engine, ev); in nxt_pollset_poll()