nginx源码学习_数据结构(ngx_int_t)

nginx中关于整型的数据结构位于src/core/ngx_config.h中

结构比较简单,就是一个typedef的操作,具体如下:

1 typedef intptr_t        ngx_int_t;
2 typedef uintptr_t       ngx_uint_t;
3 typedef intptr_t        ngx_flag_t;

里面的intptr_t和uintptr_t的定义位于/usr/include/stdint.h中

 1 /* Types for `void *‘ pointers.  */
 2 #if __WORDSIZE == 64
 3 # ifndef __intptr_t_defined
 4 typedef long int        intptr_t;
 5 #  define __intptr_t_defined
 6 # endif
 7 typedef unsigned long int   uintptr_t;
 8 #else
 9 # ifndef __intptr_t_defined
10 typedef int         intptr_t;
11 #  define __intptr_t_defined
12 # endif
13 typedef unsigned int        uintptr_t;
14 #endif

另外,C99 标准定义了 intptr_t 和 uintptr_t 类型给一个可以持有一个指针值的整型变量。这是因为它们的大小和指针的大小一样,因此也有了注释中的/* Types for `void *‘ pointers. */这句话。

时间: 2024-10-26 07:59:45

nginx源码学习_数据结构(ngx_int_t)的相关文章

nginx源码学习资源

http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html 2012-06-13 21:32 by 轩脉刃, 26499 阅读, 5 评论, 收藏, 编辑 nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,

nginx源码学习资源(不断更新)

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份: https://github.com/jianfengye/nginx-1.0.14_comment 这份注释版源码会不断进行更新的 好了,第一个问题, nginx的main函数在哪里呢?

nginx源码学习资源(不断更新)转

原文地址:http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份: https://github.com/jianfengy

nginx源码学习(二)

上一篇文章主要介绍了nginx在win和Linux平台上的安装.本章节主要介绍nginx源码学习方法和源码结构,以及nginx启动时main方法的位置,参数信息.后面的章节主要是linux平台,你要问为何是linux,而不是win.我只能说nginx是基于linux平台开发出来的,我也习惯了linux平台开发.   上一篇文章我讲了安装,现在打开MobaXterm,连接上nginx服务器.输入whereis nginx命令查看安装目录:   是的我的安装目录在  /usr/local/nginx

nginx源码学习 资料

首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码. 现在你最希望要的是一份注释版的nginx源码,可以从下面的链接中下载一份: https://github.com/jianfengye/nginx-1.0.14_comment 这份注释版源码会不断进行更新的 好了,第一个问题, nginx的main函数在哪里呢? src/core/nginx.c 第二个问题,nginx启动的时候都做了哪些事情

nginx源码学习(三)

接着上一篇,我们学习nginx的main方法. 用gdb工具调试nginx,首先gdb nginx.如下: gdb调试工具有很多的命令,上一篇为了找main方法用了 b 命令,也就是breakpoint的意思.输入b main. 要调试必须得先启动nginx,输入 r 命令,也就是run的意思. ok,到这里我们就启动了nginx.到win系统下我们拷贝的源代码中,我们来看看main方法中到底有什么.每个部分又有什么作用. 这里是一部分main方法,也就是今天要讲的内容. 首先,我们看看,mai

nginx源码学习(四)

这篇文章我们继续学习main方法,我们先来看看 ngx_debug_init() 这个方法.从方法名我们也知道,debug初始化.我们先看看方法位置在哪.我们来断点在这个方法上面. Function "ngx_debug_init" not defined. 我们去源码里面查找,grep "ngx_debug_init" -r *. 通过搜索结果大家应该知道,这个函数主要用于跨操作系统的东西.在Linux系统中应该是src/os/unix/ngx_linux_con

Linux内核源码学习之 数据结构

本篇记录在学习Linux内核源码过程中对一些知道但不熟悉不会用的数据结构进行记录. union 是在学习进程复制函数do_fork中遇到的: <sched.h> union thread_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE/sizeof(long)]; }; struct  thread_info和stack被声明为union 共享空间 "联合"是一种特殊的类,也是一

Nginx源码分析(2)-数据结构-ngx_pool_t

1. 数据结构: //清理回调 struct ngx_pool_cleanup_s { ngx_pool_cleanup_pt handler; //回调函数 void *data; //清理的数据指针 ngx_pool_cleanup_t *next; //下一个清理结构 }; typedef struct ngx_pool_large_s ngx_pool_large_t; //大数据块 struct ngx_pool_large_s { ngx_pool_large_t *next; //