當我試圖利用inode的i_private和存儲在它的名字和塊數的結構:提領「無效*」指針使用結構
struct osffs_inode_private_info* info;
inode->i_private = kzalloc(sizeof(struct osffs_inode_private_info), GFP_KERNEL);
inode->i_private = info;
strncpy(inode->i_private->name, "private succ", OSFFS_MAX_NAME_LEN);
凡結構定義如下:
struct osffs_inode_private_info {
char name[OSFFS_MAX_NAME_LEN];
__be64 block;
};
當我嘗試編譯,我得到一個警告,我
「解引用 'void *的' 指針」
和錯誤
在我做「的東西請求成員的名字'不是一個結構或聯合」
strncpy()
行
。
我知道有很多關於解除引用void指針的線程/問題,而且好像我只需要執行一次cast或類似的操作。但不幸的是,我不知道如何將其應用於我的問題。
什麼是'inode'的定義是什麼? – MikeCAT
'inode-> i_private = info;'你爲什麼在kmallo()之後賦值?你可能需要一個「深層」的拷貝(memcpy) – wildplasser
@MikeCAT,['struct inode *'](http://lxr.free-electrons.com/source/include/linux/fs.h) – ikegami