在我的样本Linux内核模块之一,我有一个变量Device_Open
声明为static的所有功能和功能device_open
内声明静态变量counter
之外。在device_open
里面,我增加了Device_Open
和counter
。该模块没有任何错误地插入内核,我为我的模块/ dev/chardev创建了一个设备文件。静态全局变量和静态局部变量
我做cat /dev/chardev
。我能看到的是,counter
每增加一个cat /dev/chardev
,但是Device_Open
总是保持为0.与行为差异相关的增量变量值的原因是什么?
下面的代码片段的理解
static int Device_Open = 0;
static int device_open(struct inode *inode, struct file *file)
{
static int counter = 0;
printk(KERN_INFO "Device_Open = %d", Device_Open);
printk(KERN_INFO "counter = %d", counter);
if (Device_Open)
return -EBUSY;
Device_Open++;
counter++;
try_module_get(THIS_MODULE);
return SUCCESS;
}
您确定在关闭设备(调用device_close()时)时不会递减Device_Open吗? – Antti 2011-05-14 09:44:25
@感谢Antti ...我得到了缺失的链接。 – 2011-05-14 09:55:34
在提问之前,请花更多时间阅读您自己的代码。 – moorray 2011-05-14 11:49:12