1.ngx_cdecl-宏定义,保留做兼容
最近在看nginx源代码的时候,在很多函数定义的地方都带有ngx_cdecl这个宏定义。如:
int ngx_cdecl
main(int argc, char *const *argv);
void ngx_cdecl
ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
结果一看它有声明,仅仅只是一个定义为空的宏.
#define ngx_cdecl
然后查询了相关资料后,觉得应该是多平台之间不同的编译器有不同的编译选项,只是为了以后其它平台有
需要添加的或扩展的编译时选项而预留的.
例如在VC环境下进行回调函数的声明时,很多时候都会加上_stdcall、_cdecl、 _fastcall这三个在
windows平台下指定函数调用的方式的编译选项.
所以,这种定义为空的宏的作用是预留下以后平台移植时的其它选项的定义,该仅仅是为了移植的方便.
2.ngx_get_options-函数,获取命令行参数并解析
static ngx_int_t ngx_get_options(int argc, char *const *argv)
{...}
3.ngx_time_init-函数,初始化时间变量
// ngx_times.c,初始化各个cache时间变量
// 调用ngx_time_update(),得到当前的时间
4.NGX_PCRE-宏定义,是否启用正则
D:\005-代码\001-开源项目源码\003-nginx-1.13.7\objs\ngx_auto_config.h
#define NGX_PCRE 1
D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
#if (NGX_PCRE)
ngx_regex_init();
#endif
5.worker_processesr如何成为一个命令的
D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
// ngx_core_module定义的核心指令,都在main域配置
// 配置结构体是ngx_core_conf_t,定义在ngx_cycle.h
// typedef struct ngx_command_s ngx_command_t
// 初始化nginx命令的结构体对象数组
static ngx_command_t ngx_core_commands[]
6.ngx_set_worker_processes
D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
static char *
ngx_set_worker_processes(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{...}
7.ngx_strerror_init()-初始化错误信息
8.ngx_regex_init()--nginx中的正则初始化
博客围绕Nginx展开,介绍了ngx_cdecl宏定义用于兼容,ngx_get_options函数解析命令行参数,ngx_time_init函数初始化时间变量等。还提及了worker_processes成为命令的情况,以及ngx_strerror_init、ngx_regex_init等函数的相关内容。
1万+

被折叠的 条评论
为什么被折叠?



