Где инициализируется total_forks из forks.c? - PullRequest
2 голосов
/ 11 февраля 2011

Привет! Я пытаюсь создать счетчик, который будет просто подсчитывать количество вызовов системного вызова vfork () в fork.c в исходном коде ядра Linux. Я буду следить за тем, как реализовано total_forks. Total_forks определяется в sched.h. Но я не могу найти, где он инициализируется до нуля.

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Полагаю, вы говорите о ядре Linux, и переменная объявлена ​​ в sched.h и определена здесь . Это глобальная переменная (определенная в области видимости файла, а не static) - она ​​неявно инициализируется нулем. Попробуйте это в своем собственном коде:

#include <stdio.h>

int var;

int main( int argc, char* argv[] ) {
    printf( "var is %d\n", var );
    return 0;
}
0 голосов
/ 11 февраля 2011

Я незнаком с источником, который вы просматриваете, но на ум приходят несколько мыслей:

Может быть инициализировано 1, когда init запущено.

Этоможет быть инициализирован в 0, потому что он находится в сегменте BSS ;система времени выполнения знает, как инициализировать часть памяти для переменных, и очищает ее перед передачей в основной процесс ядра при ранней загрузке.

...