【问题标题】:Kernel's global variable initialization内核的全局变量初始化
【发布时间】:2015-03-22 15:54:47
【问题描述】:

我正在尝试更改 Minix203 中的调度机制。我出于某种原因需要全局变量

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

我把它放在/usr/src/kernel/proc.c文件中,然后添加了

extern unsigned short QuantTime[3];

到 /usr/src/kernel/proc.h

我做了一个系统调用,它从数组中获取值,但似乎数组保持初始化为 0,即使我用 1 对其进行了初始化。

系统调用运行良好,因为我可以使用另一个系统调用在这个数组中设置值,然后他们再次读取它们以获得预期的结果。

我是这样进行系统调用的: 测试程序 -> _syscall -> _taskcall -> 这里在 /usr/src/kernel/system.c 我得到了值

那我该如何初始化这个数组呢?

【问题讨论】:

    标签: variables initialization kernel global minix


    【解决方案1】:
    extern int var = 0;
    int main(void)
    {
     var = 10;
     return 0;
    }
    

    当 extern 与变量一起使用时,它只是声明为未定义。 但是作为一个例外,当使用初始化声明外部变量时(如您的情况),它也被视为变量的定义。

    【讨论】:

    • 所以答案是:“它应该可以正常工作”?这对我来说没有意义......所以初始化变量的外部复制?
    【解决方案2】:

    似乎其他地方出了点问题。我使用了一个新版本的 minix 2.0.3,并且对这个阵列没有更多的麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      相关资源
      最近更新 更多