本文主要介绍一下ngx_cpuinfo.
1. core/ngx_cpuinfo.c源文件
源文件内容如下:
2. 相应宏测试
在具体分析源代码之前,我们先来对其中的一些宏定义进行测试(test4.c):
编译运行:
root@ubuntu:~/test-src# gcc -o test4 test4.c
root@ubuntu:~/test-src# ./test4
__i386__
__i386
__GNUC__
由上我们看到对于我们当前操作系统环境,定义了如下宏:
3. 测试ngx_cpuid()函数
通过上面相应宏测试
我们再对相应的ngx_cpuid()函数进行测试:
编译运行:
root@ubuntu:~/test-src# gcc -o test5 test5.c
root@ubuntu:~/test-src# ./test5
vbuf[0]: 13
vendor: AuthenticAMD
cpu[0]: 6360833
3. ngx_cpuinfo()函数
由上我们可知,vendor为AuthenticAMD
, 最后求得ngx_cacheline_size为64。
[参看]:
-
linux C语言调用Intel处理器CPUID指令的实例
-
Linux下C编程 – 得到系统的CPU信息(cpuid)
-
ngxin源代码完全注释
-
进程异常退出导致死锁的解决办法
-
最牛X的GCC 内联汇编
-
Inline assembly for x86 in Linux
-
GCC-Inline-Assembly-HOWTO
-
C语言函数调用及栈帧结构
-
深入理解C语言的函数调用过程
-
深入理解C语言的函数调用过程