ngx_memzero(&init_cycle, sizeof(ngx_cycle_t));
init_cycle.log = log;
ngx_cycle = &init_cycle;
// 创建内存池 1KB
init_cycle.pool = ngx_create_pool(1024, log);
if (init_cycle.pool == NULL) {
return 1;
}
// 保存调用参数到全局变量,init_cycle 只用于提供 log 参数
if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) {
return 1;
}
// 保存配置文件路径、程序运行路径、调用参数到 init_cycle
if (ngx_process_options(&init_cycle) != NGX_OK) {
return 1;
}
// 获取操作系统信息、CPU信息、最大连接数、是否支持非阻塞连接等
if (ngx_os_init(log) != NGX_OK) {
return 1;
}
/*
* ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init()
*/
// 对齐校验表
if (ngx_crc32_table_init() != NGX_OK) {
return 1;
}
// 获取所有继承连接fd的相关信息
if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) {
return 1;
}
// struct ngx_pool_data_t
// 内存池数据块结构 {{{
typedef struct {
u_char *last; // 当前内存分配的结束位置
u_char *end; // 内存池的结束位置
ngx_pool_t *next; // 下一内存池
ngx_uint_t failed; // 内存分配失败计数
} ngx_pool_data_t; // }}}
// struct ngx_pool_s
// 内存池结构 {{{
struct ngx_pool_s {
ngx_pool_data_t d; // 内存池数据块
size_t max; // 待分配内存大小
ngx_pool_t *current; // 指向当前内存池起始位置
ngx_chain_t *chain;
ngx_pool_large_t *large; // 指向大块内存分配
ngx_pool_cleanup_t *cleanup; // 析构函数
ngx_log_t *log; // 内存分配相关的log
}; // }}}
#if (NGX_HAVE_POSIX_MEMALIGN)
// void * ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
// 用数据对齐的方式进行内存分配 {{{
void *
ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
{
void *p;
int err;
// size 单位是 byte 而不是 bit
err = posix_memalign(&p, alignment, size);
if (err) {
ngx_log_error(NGX_LOG_EMERG, log, err,
"posix_memalign(%uz, %uz) failed", alignment, size);
p = NULL;
}
ngx_log_debug3(NGX_LOG_DEBUG_ALLOC, log, 0,
"posix_memalign: %p:%uz @%uz", p, size, alignment);
return p;
} // }}}
#elif (NGX_HAVE_MEMALIGN)
// void * ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
// 用数据对齐的方式进行内存分配 {{{
void *
ngx_memalign(size_t alignment, size_t size, ngx_log_t *log)
$23 = (ngx_pool_t *) 0x80fe9f0
(gdb) p *init_cycle.pool
$24 = {
d = {
last = 0x80fea18,
end = 0x80fedf0,
next = 0x0,
failed = 0
},
max = 984,
current = 0x80fe9f0,
chain = 0x0,
large = 0x0,
cleanup = 0x0,
log = 0x80e3020 <ngx_log>
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有