summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_master_process.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nxt_master_process.c')
-rw-r--r--src/nxt_master_process.c92
1 files changed, 47 insertions, 45 deletions
diff --git a/src/nxt_master_process.c b/src/nxt_master_process.c
index ceb44e1f..1e613b45 100644
--- a/src/nxt_master_process.c
+++ b/src/nxt_master_process.c
@@ -71,26 +71,27 @@ nxt_master_process_start(nxt_thread_t *thr, nxt_task_t *task,
static nxt_int_t
nxt_master_process_port_create(nxt_task_t *task, nxt_cycle_t *cycle)
{
- nxt_process_port_t *proc;
+ nxt_int_t ret;
+ nxt_port_t *port;
- proc = nxt_array_add(cycle->processes);
- if (nxt_slow_path(proc == NULL)) {
+ port = nxt_array_zero_add(cycle->ports);
+ if (nxt_slow_path(port == NULL)) {
return NXT_ERROR;
}
- proc->pid = nxt_pid;
- proc->engine = 0;
-
- proc->port = nxt_port_create(task, 0);
- if (nxt_slow_path(proc->port == NULL)) {
- return NXT_ERROR;
+ ret = nxt_port_socket_init(task, port, 0);
+ if (nxt_slow_path(ret != NXT_OK)) {
+ return ret;
}
+ port->pid = nxt_pid;
+ port->engine = 0;
+
/*
* A master process port. A write port is not closed
* since it should be inherited by worker processes.
*/
- nxt_port_read_enable(task, proc->port);
+ nxt_port_read_enable(task, port);
return NXT_OK;
}
@@ -143,24 +144,25 @@ nxt_master_start_worker_processes(nxt_task_t *task, nxt_cycle_t *cycle)
static nxt_int_t
nxt_master_create_worker_process(nxt_task_t *task, nxt_cycle_t *cycle)
{
- nxt_pid_t pid;
- nxt_process_port_t *proc;
+ nxt_int_t ret;
+ nxt_pid_t pid;
+ nxt_port_t *port;
- proc = nxt_array_add(cycle->processes);
- if (nxt_slow_path(proc == NULL)) {
+ port = nxt_array_zero_add(cycle->ports);
+ if (nxt_slow_path(port == NULL)) {
return NXT_ERROR;
}
- cycle->current_process = cycle->processes->nelts - 1;
+ cycle->current_process = cycle->ports->nelts - 1;
- proc->engine = 0;
- proc->generation = cycle->process_generation;
-
- proc->port = nxt_port_create(task, 0);
- if (nxt_slow_path(proc->port == NULL)) {
- return NXT_ERROR;
+ ret = nxt_port_socket_init(task, port, 0);
+ if (nxt_slow_path(ret != NXT_OK)) {
+ return ret;
}
+ port->engine = 0;
+ port->generation = cycle->process_generation;
+
pid = nxt_process_create(nxt_worker_process_start, cycle,
"start worker process");
@@ -175,12 +177,12 @@ nxt_master_create_worker_process(nxt_task_t *task, nxt_cycle_t *cycle)
default:
/* The master process created a new process. */
- proc->pid = pid;
+ port->pid = pid;
- nxt_port_read_close(proc->port);
- nxt_port_write_enable(task, proc->port);
+ nxt_port_read_close(port);
+ nxt_port_write_enable(task, port);
- nxt_process_new_port(task, cycle, proc);
+ nxt_port_send_new_port(task, cycle, port);
return NXT_OK;
}
}
@@ -250,24 +252,24 @@ static void
nxt_master_stop_previous_worker_processes(nxt_task_t *task, void *obj,
void *data)
{
- uint32_t generation;
- nxt_uint_t i, n;
- nxt_cycle_t *cycle;
- nxt_process_port_t *proc;
+ uint32_t generation;
+ nxt_uint_t i, n;
+ nxt_port_t *port;
+ nxt_cycle_t *cycle;
cycle = nxt_thread_cycle();
- proc = cycle->processes->elts;
- n = cycle->processes->nelts;
+ port = cycle->ports->elts;
+ n = cycle->ports->nelts;
generation = cycle->process_generation - 1;
- /* The proc[0] is the master process. */
+ /* The port[0] is the master process port. */
for (i = 1; i < n; i++) {
- if (proc[i].generation == generation) {
- (void) nxt_port_write(task, proc[i].port, NXT_PORT_MSG_QUIT,
- -1, 0, NULL);
+ if (port[i].generation == generation) {
+ (void) nxt_port_socket_write(task, &port[i],
+ NXT_PORT_MSG_QUIT, -1, 0, NULL);
}
}
@@ -278,7 +280,7 @@ nxt_master_stop_previous_worker_processes(nxt_task_t *task, void *obj,
void
nxt_master_stop_worker_processes(nxt_task_t *task, nxt_cycle_t *cycle)
{
- nxt_process_port_write(task, cycle, NXT_PORT_MSG_QUIT, -1, 0, NULL);
+ nxt_port_write(task, cycle, NXT_PORT_MSG_QUIT, -1, 0, NULL);
}
@@ -366,7 +368,7 @@ nxt_master_process_sigusr1_handler(nxt_task_t *task, void *obj, void *data)
nxt_list_each(file, cycle->log_files) {
- nxt_process_port_change_log_file(task, cycle, n, new_file[n].fd);
+ nxt_port_change_log_file(task, cycle, n, new_file[n].fd);
/*
* The old log file descriptor must be closed at the moment
* when no other threads use it. dup2() allows to use the
@@ -617,9 +619,9 @@ nxt_master_process_sigchld_handler(nxt_task_t *task, void *obj, void *data)
static void
nxt_master_cleanup_worker_process(nxt_task_t *task, nxt_pid_t pid)
{
- nxt_uint_t i, n, generation;
- nxt_cycle_t *cycle;
- nxt_process_port_t *proc;
+ nxt_uint_t i, n, generation;
+ nxt_port_t *port;
+ nxt_cycle_t *cycle;
cycle = nxt_thread_cycle();
@@ -630,15 +632,15 @@ nxt_master_cleanup_worker_process(nxt_task_t *task, nxt_pid_t pid)
return;
}
- proc = cycle->processes->elts;
- n = cycle->processes->nelts;
+ port = cycle->ports->elts;
+ n = cycle->ports->nelts;
for (i = 0; i < n; i++) {
- if (pid == proc[i].pid) {
- generation = proc[i].generation;
+ if (pid == port[i].pid) {
+ generation = port[i].generation;
- nxt_array_remove(cycle->processes, &proc[i]);
+ nxt_array_remove(cycle->ports, &port[i]);
if (nxt_exiting) {
nxt_debug(task, "processes %d", n);