2011-02-11 82 views
2

嗨我想创建一个计数器,只会计数系统调用vfork()在Linux内核源fork.c中调用的次数。我跟随total_forks的实现方式。 Total_forks在sched.h中定义。但我无法找到它被初始化为零的位置。forks.c的total_forks在哪里初始化?

回答

4

我猜你是在谈论Linux内核,以及可变sched.h宣布定义here。它是一个全局变量(在文件范围内定义,而不是static) - 它们隐式初始化为零。在你自己的代码试试这个:

#include <stdio.h> 

int var; 

int main(int argc, char* argv[]) { 
    printf("var is %d\n", var); 
    return 0; 
} 
0

我不熟悉你要找的来源,但一些想法涌现在脑海里:

init启动它可以被初始化为1。

它可能被初始化为0,因为它位于BSS段;运行时系统知道为变量初始化一部分内存,并在早期启动时将其清除到“主”内核进程之前将其清除。

相关问题