c - 在 Linux 内核文件中声明要在自定义 C 文件中使用的变量?
问题描述
所以我一直在不知疲倦地研究这个,似乎没有任何效果。我要做的就是在启动时将 int 初始化为 0。目前,我在 /kernel/sys.c 并且我有
/内核/sys.c
int process_log_level;
EXPORT_SYMBOL(process_log_level);
下面是一些简单地增加变量的自定义系统调用。系统调用在下面的文件中调用,如果你运行,变量会增加
sudo dmesg -c
但我只想让我的 C 文件读取 int process_log_level。我有这样声明的变量。 ../process_log/process_log.c
#include <unistd.h>
#include <linux/module.h>
#include <stdio.h>
#include "process_log.h"
extern int process_log_level;
int main(int argc, char *argv[])
{
printf("process_log_level = %d", process_log_level);
return 0;
}
每当我尝试编译该文件时,我都会被告知存在对“process_log_level”的未定义引用。我想要做的就是能够在 process_log.c 中访问这个变量。我在这里缺少什么吗?
解决方案
用户空间和内核通过系统调用进行通信。
下面是一些自定义系统调用
我想让我的 C 文件读取 int process_log_level。
所以只需添加另一个系统调用,将值返回给用户空间程序。然后从您的程序中调用该系统调用以从内核空间检索值。
推荐阅读
- python - mergeTwoLists:内存在 Python 中是如何工作的?
- c# - 如何让我的 writeline 输出显示数值到最接近的 2 位小数?
- django - 使用 django-storages 指向静态文件的 URL
- android - 找不到 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型对象的参数的方法 classpath()
- javascript - 如何根据 IF-ELSE 结果有条件地更改函数中的变量?
- python - 如何解决在 windows 中安装 setuptools python 时出错
- haskell - Haskell 类型签名:关于 lastButOne 程序类型签名的问题
- html - 与 HTML 链接的 CSS 文件在免费托管服务器上上传时不起作用
- javascript - 数组重新渲染问题
- java - 按 JPA 标准查询中的聚合字段过滤