2015-12-27 118 views
0

我想在/sys/class/mydev/bitmap中創建一個二進制文件來指示設備的高度。但似乎沒有Linux內核api(如:create_device_bin_file)在目錄 中創建二進制文件。我怎麼弄到的?如何在/ sys/class中創建bin屬性文件?

我已經創建人物屬性在mydev的 class.The代碼文件是:

static int __init module_init(void) 
{ 
    attr.show = pciex_devshow; 
    attr.store = pciex_devstore; 
    attr.attr.name = "state"; 
    attr.attr.mode = S_IRUSR | S_IWUSR; 
    class_create_file(pciex_class, &attr); 
} 

static ssize_t pciex_devshow(struct device *dev, struct device_attribute *attr, char *buf) 
{ 
    struct dev_private *pdev; 
    return snprintf(buf, PAGE_SIZE, "%c\r\n", dev_bitmap); 
} 

dev_bitmap是一個十六進制格式的變量,我怎麼可以探索其用戶空間?

回答

1

我相信你什麼是這些功能後:

  • class_create
  • class_destroy

等位於include/linux/device.h

Here的(有點過時了 - 功能簽名從那時起有所改變)教程如何使用這個接口。

drivers/s390/char/tape_class.c包含創建通過此接口進行通信的設備的一個很好的示例。

另外this answer看起來會有幫助。

+0

我通過調用* class_create_file *在*/sys/class/mydev/status *中創建了一個char屬性文件。文件*狀態*可以表達內核對象的字符,但我希望它以十六進制或二進制格式。換句話說,我想在現有的類中創建一個二進制格式。這有可能嗎? – hooao

+1

什麼能夠防止你按照你需要的方式解釋驅動程序本身的輸入/輸出? –