我正在開發涉及kthreads的內核應用程序。我創建了一個結構數組,並在用戶空間中使用malloc分配內存。然後我調用一個系統調用(我實現了這個),並將數組的地址傳遞給內核空間。在我創建的系統調用處理程序中,我創建了2個將監視數組的kthreads。 kthread可以改變某些值,用戶空間線程也可以改變某些值。這個想法是使用數組作爲共享內存。但有些當我在內核空間訪問內存時(使用copy_from_user),數據會以某種方式更改。我可以在分配地址和內核時驗證地址是否相同。但是,當使用copy_from_user時,它會給出各種值,如垃圾值。用戶空間和內核線程之間的共享內存
也是下面的語句好嗎?
int kthread_run_function(void* data){
struct entry tmp;
copy_from_user(&tmp, data, sizeof(struct entry));
}
你完全正確。我正在考慮從系統調用保存上下文,並將這個上下文用於copy_from_user,但我想這可能不合適。我也在考慮mmap。你能否給我提供一個適用於Linux內核2.6的例子。 – max