Work queue thread assertions. Reset thread after fork.
This commit is contained in:
@@ -660,3 +660,19 @@ nxt_event_engine_request_find_remove(nxt_event_engine_t *engine,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#if (NXT_DEBUG)
|
||||
|
||||
void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine)
|
||||
{
|
||||
nxt_work_queue_thread_adopt(&engine->fast_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->accept_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->read_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->socket_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->connect_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->write_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->shutdown_work_queue);
|
||||
nxt_work_queue_thread_adopt(&engine->close_work_queue);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -531,5 +531,15 @@ nxt_thread_event_engine(void)
|
||||
return thr->engine;
|
||||
}
|
||||
|
||||
#if (NXT_DEBUG)
|
||||
|
||||
NXT_EXPORT void nxt_event_engine_thread_adopt(nxt_event_engine_t *engine);
|
||||
|
||||
#else
|
||||
|
||||
#define nxt_event_engine_thread_adopt(_engine)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _NXT_EVENT_ENGINE_H_INCLUDED_ */
|
||||
|
||||
@@ -50,6 +50,8 @@ nxt_process_create(nxt_task_t *task, nxt_process_t *process)
|
||||
|
||||
nxt_port_reset_next_id();
|
||||
|
||||
nxt_event_engine_thread_adopt(task->thread->engine);
|
||||
|
||||
/* Remove not ready processes */
|
||||
nxt_runtime_process_each(rt, p) {
|
||||
|
||||
|
||||
@@ -1273,6 +1273,8 @@ nxt_router_thread_start(void *data)
|
||||
|
||||
thread = nxt_thread();
|
||||
|
||||
nxt_event_engine_thread_adopt(engine);
|
||||
|
||||
/* STUB */
|
||||
thread->runtime = engine->task.thread->runtime;
|
||||
|
||||
|
||||
@@ -58,6 +58,26 @@ nxt_work_queue_thread_assert(nxt_work_queue_t *wq)
|
||||
nxt_abort();
|
||||
}
|
||||
|
||||
|
||||
void nxt_work_queue_thread_adopt(nxt_work_queue_t *wq)
|
||||
{
|
||||
nxt_thread_t *thread;
|
||||
|
||||
thread = nxt_thread();
|
||||
|
||||
wq->pid = nxt_pid;
|
||||
wq->tid = nxt_thread_tid(thread);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
nxt_work_queue_name(nxt_work_queue_t *wq, const char* name)
|
||||
{
|
||||
nxt_work_queue_thread_assert(wq);
|
||||
|
||||
wq->name = name;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define nxt_work_queue_thread_assert(wq)
|
||||
|
||||
@@ -104,15 +104,16 @@ NXT_EXPORT nxt_work_handler_t nxt_work_queue_pop(nxt_work_queue_t *wq,
|
||||
|
||||
#if (NXT_DEBUG)
|
||||
|
||||
#define \
|
||||
nxt_work_queue_name(_wq, _name) \
|
||||
(_wq)->name = _name
|
||||
NXT_EXPORT void nxt_work_queue_name(nxt_work_queue_t *wq, const char* name);
|
||||
NXT_EXPORT void nxt_work_queue_thread_adopt(nxt_work_queue_t *wq);
|
||||
|
||||
#else
|
||||
|
||||
#define \
|
||||
nxt_work_queue_name(_wq, _name)
|
||||
|
||||
#define nxt_work_queue_thread_adopt(_wq)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user