saved_command_line 在linux源码哪里定义的
时间: 2024-05-07 09:23:30 浏览: 186
`saved_command_line` 是 Linux 内核中一个全局变量,它在 `include/linux/kernel.h` 头文件中被声明:
```c
extern char saved_command_line[];
```
在源代码中,它的定义在 `init/main.c` 文件中,可以看到如下代码:
```c
char __initdata saved_command_line[COMMAND_LINE_SIZE];
```
其中 `__initdata` 是一个宏定义,表示该变量只会在内核初始化时被使用,之后不会再被访问。`COMMAND_LINE_SIZE` 定义在 `include/linux/kernel.h` 中,表示内核命令行的最大长度。
相关问题
GKI module 如何使用saved_command_line
GKI module 中的 saved_command_line 变量是在程序启动时记录命令行参数的字符串。您可以使用它来重新执行程序,而不必再键入命令行参数。
以下是一个使用 saved_command_line 变量的示例:
```python
import sys
if "--debug" in sys.argv:
print("Debug mode enabled")
# ... 程序代码 ...
# 重新执行程序
os.system(sys.executable + " " + saved_command_line)
```
在上面的示例中,如果在启动程序时传递了 "--debug" 参数,程序会打印出 "Debug mode enabled"。然后,程序会使用 saved_command_line 变量重新执行自己,这样就可以在不重新输入命令行参数的情况下重新运行程序。
请注意,saved_command_line 变量只在程序启动时设置,因此如果您需要在程序运行期间修改命令行参数,您需要使用其他方法来实现。
saved_command_line 能不能 EXPORT_SYMBOL
`EXPORT_SYMBOL` 是 Linux 内核中的一个宏,用于将一个符号(函数或变量)导出,以便外部模块可以使用它。而 `saved_command_line` 是一个全局变量,定义在内核代码中,已经被导出为 `EXPORT_SYMBOL(saved_command_line)`。
因此,在内核代码中,无需再使用 `EXPORT_SYMBOL` 导出 `saved_command_line`,因为它已经被导出了。而在外部模块中,如果需要使用 `saved_command_line`,则需要包含相应的头文件,并使用 `extern` 关键字声明该变量,以便编译器能够找到该变量的定义。
阅读全文