Nginx之main初探ngx_init_cycle()(上)
由于ngx_init_cycle()函数非常庞大,这里只给出前400+行的函数调用关系,后400+将在后面的文章中给出。
-->ngx_init_cycle(&init_cycle)
-->ngx_timezone_update()
-->time()
-->localtime()注1:
-->ngx_timeofday()
-->ngx_time_update()
-->ngx_gettimeofday() -- gettimeofday()
-->ngx_gmtime()
-->ngx_localtime()
-->ngx_memory_barrier()
-->ngx_increase_pipe_generation()
-->ngx_create_pool()
-->ngx_memalign() -- ngx_alloc(size, log)
-->ngx_pcalloc()
-->ngx_palloc()
-->ngx_align_ptr()注2:
-->ngx_palloc_block()
-->ngx_memalign()
-->ngx_align_ptr()
-->ngx_palloc_large()
-->ngx_alloc()
-->malloc()
-->ngx_palloc()
-->ngx_memzero()
-->memset()
-->ngx_list_init()
-->ngx_palloc()
-->ngx_queue_init()
-->ngx_strlen() -- strlen()
-->ngx_pnalloc()
-->ngx_palloc_block()
-->ngx_palloc_large()
-->ngx_strlow()
-->ngx_tolower() -- ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
-->ngx_array_create()
-->ngx_palloc()
-->ngx_array_init()
-->ngx_palloc()
-->ngx_conf_param()
-->ngx_memzero()
-->ngx_conf_parse()
-->ngx_conf_parse()
-->ngx_open_file() -- open()
-->ngx_fd_info() -- fstat()
-->ngx_alloc()
-->ngx_conf_read_token()
-->ngx_file_size()
-->ngx_memmove() -- memmove()
-->ngx_read_file() -- read()
-->ngx_write_console() -- ngx_write_fd()
--> write()
-->ngx_array_push()
-->ngx_conf_handler()
-->ngx_show_dso_directives()
-->ngx_get_conf()
-->ngx_is_dynamic_module()
-->ngx_get_conf()
-->ngx_test_lockfile()
-->ngx_open_file()
-->ngx_close_file()
-->ngx_delete_file()
-->ngx_create_paths()
-->ngx_create_dir() -- mkdir()
-->ngx_file_info()
-->ngx_log_open_default()
-->ngx_conf_open_file()
下面是陌生函数的用法和小知识点:
注1:time()与localtime()函数不是Nginx自己实现的,是库函数。其用法以下
/**
* filename: test_localtime.c
* description: used to see the usage of function localtime()
* date: 2015-03-06
* author: HowardKing
* version: 1.0
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
time_t timer; // time_t is long int
struct tm *tblock;
time(NULL);
tblock = localtime(&timer);
printf("Local time is: %s", asctime(tblock));
return 0;
}
程序输出结果:
<span style="white-space:pre"> </span>Local time is: Fri Jul 31 05:00:00 4461676
注2:C语言中long类型是与机器字长相对应的,而int型来讲1般都是4字节。
/**
* filename: test_unsigned_long.c
* description: find out the size of type long
* date: 20150306
* author: HowardKing
* version: v1.0
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int ii = 100;
unsigned long ll = 100;
printf("%d
", sizeof(ii));
printf("%d
", sizeof(ll));
return 0;
}
程序输出结果:
4
8