zoukankan      html  css  js  c++  java
  • Nginx源码分析-ngx_module_s结构体

        该结构体是整个Nginx模块化架构最基本的数据结构体。它描述了Nginx程序中一个模块应该包括的基本属性,在tengine/src/core/ngx_conf_file.h中定义了该结构体

    105 struct ngx_module_s {
      106     ngx_uint_t            ctx_index;    // 所属分类标识.Nginx的模块分为4种,分别是core,http,event和mail,每个模块在使用的技术各不尽相同
      107     ngx_uint_t            index;                        //模块计数器,Nginx为了方便管理模块,定义了一个存放所有模块的数组ngx_modules[];
    // /objs/ngx_modules.c包含了此版本快速编译后所有模块的声明。
    108 109 ngx_uint_t spare0; 110 ngx_uint_t spare1; 111 ngx_uint_t abi_compatibility; 112 113 ngx_uint_t major_version; //模块版本 114 ngx_uint_t minor_version; 115 116 void *ctx; //模块上下文,不同模块的模块上下文结构不同 117 ngx_command_t *commands; // 模块支持的命令集 118 ngx_uint_t type; // 模块的种类 119 //回调函数 如果该模块需要发生这些行为时执行特定的功能,可以通过这些回调函数指针注册一个回调函数接口
    // 来实现 120 ngx_int_t (*init_master)(ngx_log_t *log); // 主进程初始化时调用 121 122 ngx_int_t (*init_module)(ngx_cycle_t *cycle); // 模块初始化时调用 123 124 ngx_int_t (*init_process)(ngx_cycle_t *cycle); // 工作进程初始化时调用 125 ngx_int_t (*init_thread)(ngx_cycle_t *cycle); // 线程初始化时调用 126 void (*exit_thread)(ngx_cycle_t *cycle); // 线程退出时调用 127 void (*exit_process)(ngx_cycle_t *cycle); // 工作进程退出时调用 128 129 void (*exit_master)(ngx_cycle_t *cycle); // 主进程退出时调用 130 // 以下预留成员暂未使用 131 uintptr_t spare_hook0; 132 uintptr_t spare_hook1; 133 uintptr_t spare_hook2; 134 uintptr_t spare_hook3; 135 uintptr_t spare_hook4; 136 uintptr_t spare_hook5; 137 uintptr_t spare_hook6; 138 uintptr_t spare_hook7; 139 };

    该结构体在初始化时,需要用到两个宏定义,在该文件中也能找到:

    101 #define NGX_MODULE_V1          0, 0, 0, 0,                              
      102         NGX_DSO_ABI_COMPATIBILITY, NGX_NUMBER_MAJOR, NGX_NUMBER_MINOR   //前七个成员的初始化
      103 #define NGX_MODULE_V1_PADDING  0, 0, 0, 0, 0, 0, 0, 0   //后八个成员的初始化
  • 相关阅读:
    AS3邮件
    JavaScript中this关键字使用方法详解
    AS3嵌入字体
    xp双击打不开jar包解决方案
    查询在表1表2中都存在,在表3中不存在的SQL(前提:表结构相同)
    这是否为复制Bug?求解!
    批处理添加允许弹出临时窗口站点
    SQL Server 合并IP
    C#学习笔记一(变量、属性、方法,构造函数)
    SQLServer事务的隔离级别
  • 原文地址:https://www.cnblogs.com/hubavyn/p/4433342.html
Copyright © 2011-2022 走看看