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