在我的樣本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