2011-02-11 5 views
2

안녕하세요, 저는 시스템 호출 vfork()가 Linux 커널 소스의 fork.c에서 호출 된 횟수를 계산할 카운터를 만들려고합니다. 나는 total_forks가 어떻게 구현되는지에 따라 다음과 같이 설명한다. Total_forks는 sched.h에 정의됩니다. 하지만 어디로 0으로 초기화되어 찾을 수 없습니다.forks.c의 total_forks 초기화 위치는 어디입니까?

답변

4

난 당신이 리눅스 커널에 대해 얘기 같은데요, 변수 sched.h을 선언 here을 정의했다. 전역 변수 (파일 범위에 정의되어 있으며 static이 아닌)입니다. 이것은 암시 적으로 0으로 초기화됩니다.

#include <stdio.h> 

int var; 

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

난 당신이보고있는 소스에 익숙 해요,하지만 마음에 몇 가지 생각 스프링 : 당신이 자신의 코드에서 이것을 시도 init가 시작될 때

은 1로 초기화 할 수있다.

BSS 세그먼트에 있기 때문에 0으로 초기화 될 수 있습니다. 런타임 시스템은 변수에 대한 메모리 일부를 초기화하는 것을 알고 있으며, 초기 부팅시 '메인'커널 프로세스에 제공하기 전에이를 모두 지 웁니다.

관련 문제