c - Linux内核模块:我的变量在线程函数中使用时丢失了它的值
问题描述
我正在开发一个 Linux 内核模块,它读取我的嵌入式板按钮代码并使用它来打开/关闭板 LED。
当我按下按钮时,模块会正确地将按钮代码(260)发送到用户空间。
现在,从用户空间,我使用 write 函数来重新发送这个代码内核模块:
write(fd, buf_wr, strlen(buf_wr));
其中fd是我的模块的文件描述符,而buf_wr是将写入文件的缓冲区。
在内核空间中,我write_pid
以这种方式使用该函数:
static ssize_t write_pid(struct file *pfile, const char __user *buffer,
size_t length, loff_t *offset)
{
char cod_buf[12];
printk("WE ARE IN WRITE_PID FUNCTION\n");
copy_from_user(cod_buf, buffer, length);
sscanf(cod_buf, "%i", &lcode);
printk("lcode = %i\n", lcode);
return 0;
}
我lcode
在我的内核模块中定义为一个全局变量:
int lcode = 0;
我可以看到它正在接收正确的按钮代码,即 260。
现在,我在模块中创建了一个线程,我希望这个线程根据按钮代码运行一些指令:
int write_in_thread(void *data) {
printk("Under write_in_thread, lcode = %i\n", lcode);
switch (lcode) {
case 260:
//instructions....
//instructions....
//instructions....
break;
default :
//instructions....
break;
}
return 0;
}
这里的问题,我可以看到,Under write_in_thread, lcode = 0
。这不是260。所以 case 语句正在运行我在这里不需要的默认语句。
如何修复lcode
变量以将其值保留在线程函数中?
谢谢!
解决方案
推荐阅读
- awk - 仅打印一次“else”语句的条件 awk 命令
- node.js - 使用 animate.css 包解决 npm run serve 上的“无法读取未定义的属性 'unprefixed'”
- php - 当用户订购产品时计数
- amazon-web-services - 无需我注册设备并创建事物或事物类型,我的 iot 设备能否将消息发布到 AWS IoT 核心消息代理?
- r - R 错误:代码返回 1 列而不是 4 列
- facebook - Facebook 信使错误此消息在此应用程序上不可用
- excel - 在 VBA 中复制和粘贴表格的行
- javascript - 如何在 JavaScript 中使用 Teachable Machine 在视频而不是网络摄像头上运行姿势估计推断?
- python-3.x - 编辑python脚本
- angular - 嵌套延迟加载模块上的 RouteConfigLoadStart