nxt_event_engine.c (1266:22a29a8b15e2) nxt_event_engine.c (1267:74acbd89400a)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 662 unchanged lines hidden (view full) ---

671 }
672
673done:
674
675 nxt_mp_free(engine->mem_pool, p);
676}
677
678
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 662 unchanged lines hidden (view full) ---

671 }
672
673done:
674
675 nxt_mp_free(engine->mem_pool, p);
676}
677
678
679void *
680nxt_event_engine_buf_mem_alloc(nxt_event_engine_t *engine, size_t size)
681{
682 nxt_buf_t *b;
683 uint8_t hint;
684
685 hint = NXT_EVENT_ENGINE_NO_MEM_HINT;
686
687 b = nxt_event_engine_mem_alloc(engine, &hint, NXT_BUF_MEM_SIZE + size);
688 if (nxt_slow_path(b == NULL)) {
689 return NULL;
690 }
691
692 nxt_memzero(b, NXT_BUF_MEM_SIZE);
693
694 b->cache_hint = hint;
695 b->data = engine;
696 b->completion_handler = nxt_event_engine_buf_mem_completion;
697
698 if (size != 0) {
699 b->mem.start = nxt_pointer_to(b, NXT_BUF_MEM_SIZE);
700 b->mem.pos = b->mem.start;
701 b->mem.free = b->mem.start;
702 b->mem.end = b->mem.start + size;
703 }
704
705 return b;
706}
707
708
709void
710nxt_event_engine_buf_mem_free(nxt_event_engine_t *engine, nxt_buf_t *b)
711{
712 size_t size;
713
714 size = NXT_BUF_MEM_SIZE + nxt_buf_mem_size(&b->mem);
715
716 nxt_event_engine_mem_free(engine, b->cache_hint, b, size);
717}
718
719
720void
721nxt_event_engine_buf_mem_completion(nxt_task_t *task, void *obj, void *data)
722{
723 nxt_event_engine_t *engine;
724 nxt_buf_t *b, *parent;
725
726 b = obj;
727 parent = data;
728
729 nxt_debug(task, "buf completion: %p %p", b, b->mem.start);
730
731 engine = b->data;
732 nxt_event_engine_buf_mem_free(engine, b);
733
734 nxt_buf_parent_completion(task, parent);
735}
736
737
679#if (NXT_DEBUG)
680
681void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine)
682{
683 nxt_work_queue_thread_adopt(&engine->fast_work_queue);
684 nxt_work_queue_thread_adopt(&engine->accept_work_queue);
685 nxt_work_queue_thread_adopt(&engine->read_work_queue);
686 nxt_work_queue_thread_adopt(&engine->socket_work_queue);
687 nxt_work_queue_thread_adopt(&engine->connect_work_queue);
688 nxt_work_queue_thread_adopt(&engine->write_work_queue);
689 nxt_work_queue_thread_adopt(&engine->shutdown_work_queue);
690 nxt_work_queue_thread_adopt(&engine->close_work_queue);
691}
692
693#endif
738#if (NXT_DEBUG)
739
740void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine)
741{
742 nxt_work_queue_thread_adopt(&engine->fast_work_queue);
743 nxt_work_queue_thread_adopt(&engine->accept_work_queue);
744 nxt_work_queue_thread_adopt(&engine->read_work_queue);
745 nxt_work_queue_thread_adopt(&engine->socket_work_queue);
746 nxt_work_queue_thread_adopt(&engine->connect_work_queue);
747 nxt_work_queue_thread_adopt(&engine->write_work_queue);
748 nxt_work_queue_thread_adopt(&engine->shutdown_work_queue);
749 nxt_work_queue_thread_adopt(&engine->close_work_queue);
750}
751
752#endif