2015-03-22 6 views
1

Я пытаюсь изменить механизм планирования в Minix203. Мне нужно по какой-то причине глобальной переменнойИнициализация глобальной переменной ядра

unsigned short QuantTime[3] = {1,1,1}; 

Я положил его в файл /usr/src/kernel/proc.c, а затем добавил

extern unsigned short QuantTime[3]; 

в/USR/SRC/ядро ​​/ Proc. ч

Я сделал системный вызов, который принимает значения из массива, но это, кажется, массив остается инициализируется 0, даже если я инициализируюсь его с 1.

системным вызов работает хорошо, потому что с другой я могу установить значение го является массивом, и они снова читают их, получая ожидаемые результаты.

Я сделать SYSCALL таким образом: тест программы -> _syscall -> _taskcall -> здесь /usr/src/kernel/system.c Im получение значения

Как я могу инициализировать этот массив тогда?

ответ

0
extern int var = 0; 
int main(void) 
{ 
var = 10; 
return 0; 
} 

Когда extern используется с переменной, он объявляется не определенным. однако, как исключение, когда внешняя переменная объявляется с инициализацией (как и в вашем случае), она берется также как определение переменной.

+1

Итак, ответ: «он должен работать правильно»? Это не имеет смысла для меня ... Итак, extern переменной с инициализацией делает копию? –

+0

Да должен работать. – ashish

0

Кажется, что-то пошло не так в другом месте. Я взял новую версию minix 2.0.3 и не имел никаких проблем с этим массивом.