C 创建全局内核变量时,我在哪里实际声明要使用的变量?

C 创建全局内核变量时,我在哪里实际声明要使用的变量?,c,linux-kernel,global-variables,system-calls,C,Linux Kernel,Global Variables,System Calls,因此,我正在为一个OS类做一个家庭作业,其中我们需要创建内核变量,用于系统调用。我理解,为了做到这一点,您必须使用类似以下代码: int全局变量; 导出符号(全局变量) 我的问题是-我应该把代码放在哪里?我已经写了一个包含系统调用的文件,但是我不知道应该把前面提到的两行放在哪里,在线查看让我更困惑,所以任何帮助都将不胜感激 (作为一个例子,我包含了一些使用上述全局变量的代码) 我的问题是-我应该把代码放在哪里?-把代码放在为内核编译的任何现存的.c文件中。或者创建一个新的源文件并修改相应的Mak

因此,我正在为一个OS类做一个家庭作业,其中我们需要创建内核变量,用于系统调用。我理解,为了做到这一点,您必须使用类似以下代码:

int全局变量;
导出符号(全局变量)

我的问题是-我应该把代码放在哪里?我已经写了一个包含系统调用的文件,但是我不知道应该把前面提到的两行放在哪里,在线查看让我更困惑,所以任何帮助都将不胜感激

(作为一个例子,我包含了一些使用上述全局变量的代码)


我的问题是-我应该把代码放在哪里?
-把代码放在为内核编译的任何现存的
.c
文件中。或者创建一个新的源文件并修改相应的Makefile,这样源文件将被编译到内核中。有关更多详细信息,请参阅。由于不创建内核模块,因此不需要构造
EXPORT\u SYMBOL
。EXPORT\u SYMBOL告诉内核变量是全局变量,它可以从其他内核部分或模块使用。若不导出符号,就无法从其他模块或内核部件按名称解析var的地址。导出符号是编译后链接的一部分。
我的问题是-我把代码放在哪里?
-把代码放在为内核编译的任何现有
.c
文件中。或者创建一个新的源文件并修改相应的Makefile,这样源文件将被编译到内核中。有关更多详细信息,请参阅。由于不创建内核模块,因此不需要构造
EXPORT\u SYMBOL
。EXPORT\u SYMBOL告诉内核变量是全局变量,它可以从其他内核部分或模块使用。若不导出符号,就无法从其他模块或内核部件按名称解析var的地址。导出符号是编译后链接的一部分。
    extern int global_var = 0;
    asmlinkage long sys_hello(void) {

     printk(kern_info "hello earth %i\n", global_variable);

     return 0;
}