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