nxt_main.h (65:10688b89aa16) nxt_main.h (75:63205c12a84b)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#ifndef _NXT_LIB_H_INCLUDED_
8#define _NXT_LIB_H_INCLUDED_
9
10
11#include <nxt_auto_config.h>
12
13#include <nxt_unix.h>
14#include <nxt_clang.h>
15#include <nxt_types.h>
16#include <nxt_time.h>
17#include <nxt_mp.h>
18#include <nxt_array.h>
19
20typedef struct nxt_port_s nxt_port_t;
21typedef struct nxt_task_s nxt_task_t;
22typedef struct nxt_port_recv_msg_s nxt_port_recv_msg_t;
23typedef void (*nxt_port_handler_t)(nxt_task_t *task, nxt_port_recv_msg_t *msg);
24typedef struct nxt_sig_event_s nxt_sig_event_t;
25typedef struct nxt_runtime_s nxt_runtime_t;
26typedef uint16_t nxt_port_id_t;
27
28#include <nxt_queue.h>
29#include <nxt_process.h>
30
31typedef struct nxt_thread_s nxt_thread_t;
32#include <nxt_thread_id.h>
33
34#include <nxt_errno.h>
35#include <nxt_file.h>
36
37#include <nxt_random.h>
38#include <nxt_string.h>
39#include <nxt_utf8.h>
40#include <nxt_file_name.h>
41
42typedef struct nxt_log_s nxt_log_t;
43#include <nxt_log.h>
44
45
46#include <nxt_atomic.h>
47#include <nxt_rbtree.h>
48#include <nxt_sprintf.h>
49#include <nxt_parse.h>
50
51
52/* TODO: remove unused */
53
54typedef struct nxt_fd_event_s nxt_fd_event_t;
55typedef struct nxt_sockaddr_s nxt_sockaddr_t;
56
57
58#include <nxt_malloc.h>
59#include <nxt_mem_map.h>
60#include <nxt_socket.h>
61#include <nxt_spinlock.h>
62#include <nxt_dyld.h>
63
64#include <nxt_work_queue.h>
65
66
67typedef void *(*nxt_mem_proto_alloc_t)(void *pool, size_t size);
68typedef void (*nxt_mem_proto_free_t)(void *pool, void *p);
69
70typedef struct {
71 nxt_mem_proto_alloc_t alloc;
72 nxt_mem_proto_free_t free;
73} nxt_mem_proto_t;
74
75
76#include <nxt_mem_zone.h>
77#include <nxt_thread_time.h>
78
79typedef struct nxt_event_engine_s nxt_event_engine_t;
80#include <nxt_timer.h>
81#include <nxt_fiber.h>
82
83typedef struct nxt_thread_pool_s nxt_thread_pool_t;
84#include <nxt_thread.h>
85
86#include <nxt_signal.h>
87#if (NXT_THREADS)
88#include <nxt_semaphore.h>
89#endif
90
91#include <nxt_djb_hash.h>
92#include <nxt_murmur_hash.h>
93#include <nxt_lvlhsh.h>
94#include <nxt_hash.h>
95
96#include <nxt_sort.h>
97#include <nxt_vector.h>
98#include <nxt_list.h>
99
100#include <nxt_service.h>
101
102typedef struct nxt_buf_s nxt_buf_t;
103typedef struct nxt_port_mmap_s nxt_port_mmap_t;
104#include <nxt_buf.h>
105#include <nxt_buf_pool.h>
106#include <nxt_recvbuf.h>
107
108typedef struct nxt_conn_s nxt_conn_t;
109#include <nxt_sendbuf.h>
110
111#include <nxt_log_moderation.h>
112
113#if (NXT_SSLTLS)
114#include <nxt_ssltls.h>
115#endif
116
117
118#define nxt_thread() \
119 (nxt_thread_t *) nxt_thread_get_data(nxt_thread_context)
120
121nxt_thread_extern_data(nxt_thread_t, nxt_thread_context);
122
123
124#include <nxt_thread_log.h>
125
126#include <nxt_fd_event.h>
127#include <nxt_file_event.h>
128
129#include <nxt_port.h>
130#include <nxt_port_memory.h>
131#if (NXT_THREADS)
132#include <nxt_thread_pool.h>
133#endif
134
135
136typedef void (*nxt_event_conn_handler_t)(nxt_thread_t *thr, nxt_conn_t *c);
137#include <nxt_listen_socket.h>
138
139#include <nxt_conn.h>
140#include <nxt_event_engine.h>
141
142#include <nxt_job.h>
143#include <nxt_job_file.h>
144#include <nxt_buf_filter.h>
145
146#include <nxt_job_resolve.h>
147#include <nxt_sockaddr.h>
148
149#include <nxt_cache.h>
150
151#include <nxt_source.h>
152typedef struct nxt_upstream_source_s nxt_upstream_source_t;
153
154#include <nxt_http_parse.h>
155#include <nxt_stream_source.h>
156#include <nxt_upstream.h>
157#include <nxt_upstream_source.h>
158#include <nxt_http_source.h>
159#include <nxt_fastcgi_source.h>
160#include <nxt_runtime.h>
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#ifndef _NXT_LIB_H_INCLUDED_
8#define _NXT_LIB_H_INCLUDED_
9
10
11#include <nxt_auto_config.h>
12
13#include <nxt_unix.h>
14#include <nxt_clang.h>
15#include <nxt_types.h>
16#include <nxt_time.h>
17#include <nxt_mp.h>
18#include <nxt_array.h>
19
20typedef struct nxt_port_s nxt_port_t;
21typedef struct nxt_task_s nxt_task_t;
22typedef struct nxt_port_recv_msg_s nxt_port_recv_msg_t;
23typedef void (*nxt_port_handler_t)(nxt_task_t *task, nxt_port_recv_msg_t *msg);
24typedef struct nxt_sig_event_s nxt_sig_event_t;
25typedef struct nxt_runtime_s nxt_runtime_t;
26typedef uint16_t nxt_port_id_t;
27
28#include <nxt_queue.h>
29#include <nxt_process.h>
30
31typedef struct nxt_thread_s nxt_thread_t;
32#include <nxt_thread_id.h>
33
34#include <nxt_errno.h>
35#include <nxt_file.h>
36
37#include <nxt_random.h>
38#include <nxt_string.h>
39#include <nxt_utf8.h>
40#include <nxt_file_name.h>
41
42typedef struct nxt_log_s nxt_log_t;
43#include <nxt_log.h>
44
45
46#include <nxt_atomic.h>
47#include <nxt_rbtree.h>
48#include <nxt_sprintf.h>
49#include <nxt_parse.h>
50
51
52/* TODO: remove unused */
53
54typedef struct nxt_fd_event_s nxt_fd_event_t;
55typedef struct nxt_sockaddr_s nxt_sockaddr_t;
56
57
58#include <nxt_malloc.h>
59#include <nxt_mem_map.h>
60#include <nxt_socket.h>
61#include <nxt_spinlock.h>
62#include <nxt_dyld.h>
63
64#include <nxt_work_queue.h>
65
66
67typedef void *(*nxt_mem_proto_alloc_t)(void *pool, size_t size);
68typedef void (*nxt_mem_proto_free_t)(void *pool, void *p);
69
70typedef struct {
71 nxt_mem_proto_alloc_t alloc;
72 nxt_mem_proto_free_t free;
73} nxt_mem_proto_t;
74
75
76#include <nxt_mem_zone.h>
77#include <nxt_thread_time.h>
78
79typedef struct nxt_event_engine_s nxt_event_engine_t;
80#include <nxt_timer.h>
81#include <nxt_fiber.h>
82
83typedef struct nxt_thread_pool_s nxt_thread_pool_t;
84#include <nxt_thread.h>
85
86#include <nxt_signal.h>
87#if (NXT_THREADS)
88#include <nxt_semaphore.h>
89#endif
90
91#include <nxt_djb_hash.h>
92#include <nxt_murmur_hash.h>
93#include <nxt_lvlhsh.h>
94#include <nxt_hash.h>
95
96#include <nxt_sort.h>
97#include <nxt_vector.h>
98#include <nxt_list.h>
99
100#include <nxt_service.h>
101
102typedef struct nxt_buf_s nxt_buf_t;
103typedef struct nxt_port_mmap_s nxt_port_mmap_t;
104#include <nxt_buf.h>
105#include <nxt_buf_pool.h>
106#include <nxt_recvbuf.h>
107
108typedef struct nxt_conn_s nxt_conn_t;
109#include <nxt_sendbuf.h>
110
111#include <nxt_log_moderation.h>
112
113#if (NXT_SSLTLS)
114#include <nxt_ssltls.h>
115#endif
116
117
118#define nxt_thread() \
119 (nxt_thread_t *) nxt_thread_get_data(nxt_thread_context)
120
121nxt_thread_extern_data(nxt_thread_t, nxt_thread_context);
122
123
124#include <nxt_thread_log.h>
125
126#include <nxt_fd_event.h>
127#include <nxt_file_event.h>
128
129#include <nxt_port.h>
130#include <nxt_port_memory.h>
131#if (NXT_THREADS)
132#include <nxt_thread_pool.h>
133#endif
134
135
136typedef void (*nxt_event_conn_handler_t)(nxt_thread_t *thr, nxt_conn_t *c);
137#include <nxt_listen_socket.h>
138
139#include <nxt_conn.h>
140#include <nxt_event_engine.h>
141
142#include <nxt_job.h>
143#include <nxt_job_file.h>
144#include <nxt_buf_filter.h>
145
146#include <nxt_job_resolve.h>
147#include <nxt_sockaddr.h>
148
149#include <nxt_cache.h>
150
151#include <nxt_source.h>
152typedef struct nxt_upstream_source_s nxt_upstream_source_t;
153
154#include <nxt_http_parse.h>
155#include <nxt_stream_source.h>
156#include <nxt_upstream.h>
157#include <nxt_upstream_source.h>
158#include <nxt_http_source.h>
159#include <nxt_fastcgi_source.h>
160#include <nxt_runtime.h>
161#include <nxt_port_hash.h>
161
162
163#if (NXT_LIB_UNIT_TEST)
164#include <../test/nxt_lib_unit_test.h>
165#else
166#define NXT_LIB_UNIT_TEST_STATIC static
167#endif
168
169
170/*
171 * The envp argument must be &environ if application may
172 * change its process title with nxt_process_title().
173 */
174NXT_EXPORT nxt_int_t nxt_lib_start(const char *app, char **argv, char ***envp);
175NXT_EXPORT void nxt_lib_stop(void);
176
177
178NXT_EXPORT extern nxt_uint_t nxt_ncpu;
179NXT_EXPORT extern nxt_uint_t nxt_pagesize;
180NXT_EXPORT extern nxt_task_t nxt_main_task;
181NXT_EXPORT extern nxt_atomic_t nxt_task_ident;
182NXT_EXPORT extern nxt_random_t nxt_random_data;
183
184
185#endif /* _NXT_LIB_H_INCLUDED_ */
162
163
164#if (NXT_LIB_UNIT_TEST)
165#include <../test/nxt_lib_unit_test.h>
166#else
167#define NXT_LIB_UNIT_TEST_STATIC static
168#endif
169
170
171/*
172 * The envp argument must be &environ if application may
173 * change its process title with nxt_process_title().
174 */
175NXT_EXPORT nxt_int_t nxt_lib_start(const char *app, char **argv, char ***envp);
176NXT_EXPORT void nxt_lib_stop(void);
177
178
179NXT_EXPORT extern nxt_uint_t nxt_ncpu;
180NXT_EXPORT extern nxt_uint_t nxt_pagesize;
181NXT_EXPORT extern nxt_task_t nxt_main_task;
182NXT_EXPORT extern nxt_atomic_t nxt_task_ident;
183NXT_EXPORT extern nxt_random_t nxt_random_data;
184
185
186#endif /* _NXT_LIB_H_INCLUDED_ */