summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_process.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/nxt_process.h112
1 files changed, 64 insertions, 48 deletions
diff --git a/src/nxt_process.h b/src/nxt_process.h
index 702d39f2..92f673a2 100644
--- a/src/nxt_process.h
+++ b/src/nxt_process.h
@@ -4,62 +4,95 @@
* Copyright (C) NGINX, Inc.
*/
-#ifndef _NXT_UNIX_PROCESS_H_INCLUDED_
-#define _NXT_UNIX_PROCESS_H_INCLUDED_
+#ifndef _NXT_PROCESS_H_INCLUDED_
+#define _NXT_PROCESS_H_INCLUDED_
-typedef pid_t nxt_pid_t;
+typedef enum {
+ NXT_PROCESS_SINGLE = 0,
+ NXT_PROCESS_MASTER,
+ NXT_PROCESS_CONTROLLER,
+ NXT_PROCESS_ROUTER,
+ NXT_PROCESS_WORKER,
+} nxt_process_type_t;
-#define \
-nxt_sched_yield() \
- sched_yield()
+typedef pid_t nxt_pid_t;
+typedef uid_t nxt_uid_t;
+typedef gid_t nxt_gid_t;
-#define \
-nxt_process_id() \
- nxt_pid
+typedef struct {
+ const char *user;
+ nxt_uid_t uid;
+ nxt_gid_t base_gid;
+ nxt_uint_t ngroups;
+ nxt_gid_t *gids;
+} nxt_user_cred_t;
+typedef struct nxt_process_init_s nxt_process_init_t;
+typedef nxt_int_t (*nxt_process_star_t)(nxt_task_t *task, nxt_runtime_t *rt);
-/*
- * Solaris declares abort() as __NORETURN,
- * raise(SIGABRT) is mostly the same.
- */
-#define \
-nxt_abort() \
- (void) raise(SIGABRT)
+struct nxt_process_init_s {
+ nxt_process_star_t start;
+ const char *name;
+ nxt_user_cred_t *user_cred;
+ nxt_port_t *port;
+ nxt_port_t *master_port;
+ nxt_port_handler_t *port_handlers;
+ const nxt_sig_event_t *signals;
-typedef void (*nxt_process_start_t)(void *data);
+ nxt_process_type_t type:8; /* 3 bits */
+};
-NXT_EXPORT nxt_pid_t nxt_process_create(nxt_process_start_t start, void *data,
- const char *name);
-NXT_EXPORT nxt_pid_t nxt_process_execute(char *name, char **argv, char **envp);
-NXT_EXPORT nxt_int_t nxt_process_daemon(void);
+
+typedef struct {
+ nxt_pid_t pid;
+ nxt_array_t *ports; /* of nxt_port_t */
+ nxt_process_init_t *init;
+} nxt_process_t;
+
+
+NXT_EXPORT nxt_pid_t nxt_process_create(nxt_task_t *task,
+ nxt_process_init_t *process);
+NXT_EXPORT nxt_pid_t nxt_process_execute(nxt_task_t *task, char *name,
+ char **argv, char **envp);
+NXT_EXPORT nxt_int_t nxt_process_daemon(nxt_task_t *task);
NXT_EXPORT void nxt_nanosleep(nxt_nsec_t ns);
-NXT_EXPORT void nxt_process_arguments(char **orig_argv, char ***orig_envp);
+NXT_EXPORT void nxt_process_arguments(nxt_task_t *task, char **orig_argv,
+ char ***orig_envp);
#if (NXT_HAVE_SETPROCTITLE)
-#define \
-nxt_process_title(title) \
- setproctitle("%s", title)
+#define nxt_process_title(task, fmt, ...) \
+ setproctitle(fmt, __VA_ARGS__)
#elif (NXT_LINUX || NXT_SOLARIS || NXT_MACOSX)
#define NXT_SETPROCTITLE_ARGV 1
-NXT_EXPORT void nxt_process_title(const char *title);
+NXT_EXPORT void nxt_process_title(nxt_task_t *task, const char *fmt, ...);
-#else
+#endif
-#define \
-nxt_process_title(title)
-#endif
+#define nxt_sched_yield() \
+ sched_yield()
+/*
+ * Solaris declares abort() as __NORETURN,
+ * raise(SIGABRT) is mostly the same.
+ */
+
+#define nxt_abort() \
+ (void) raise(SIGABRT)
+
+NXT_EXPORT nxt_int_t nxt_user_cred_get(nxt_task_t *task, nxt_user_cred_t *uc,
+ const char *group);
+NXT_EXPORT nxt_int_t nxt_user_cred_set(nxt_task_t *task, nxt_user_cred_t *uc);
NXT_EXPORT extern nxt_pid_t nxt_pid;
NXT_EXPORT extern nxt_pid_t nxt_ppid;
@@ -67,21 +100,4 @@ NXT_EXPORT extern char **nxt_process_argv;
NXT_EXPORT extern char ***nxt_process_environ;
-typedef uid_t nxt_uid_t;
-typedef gid_t nxt_gid_t;
-
-
-typedef struct {
- const char *user;
- nxt_uid_t uid;
- nxt_gid_t base_gid;
- nxt_uint_t ngroups;
- nxt_gid_t *gids;
-} nxt_user_cred_t;
-
-
-NXT_EXPORT nxt_int_t nxt_user_cred_get(nxt_user_cred_t *uc, const char *group);
-NXT_EXPORT nxt_int_t nxt_user_cred_set(nxt_user_cred_t *uc);
-
-
-#endif /* _NXT_UNIX_PROCESS_H_INCLUDED_ */
+#endif /* _NXT_PROCESS_H_INCLUDED_ */