簡體   English   中英

如何在kernel模塊(B)中調用kernel模塊(A)的函數和變量,然后向用戶空間發送通知?

[英]How to call functions and variables from the kernel module (A) in the kernel module (B) and then send notification to the user space?

我正在開發一個應用程序(用戶空間),它通過 .network 發送值更改通知。

我想開發一個 kernel 模塊 (A),以便在其他 kernel 模塊 (B) 中的參數值發生變化時通知我的應用程序(用戶空間)。

  1. 如何將信號從 kernel 模塊 (A) 發送到我的用戶空間應用程序?
  2. 如何將數據從 kernel 模塊 (A) 發送到我的用戶空間應用程序?
  3. 如何在kernel模塊(B)中調用kernel模塊(A)的函數和變量?

從模塊 A 訪問模塊 B

在模塊 B 中定義一個 header 就像普通的 C header 一樣,其中包含 A 想要使用的變量/函數,當然還有#include it in A。

在B的其中一個源文件中,寫入:

EXPORT_SYMBOL(your_symbol);

對於每個變量/函數。

在模塊 A 的 Makefile 中,確保在 KBUILD_EXTRA_SYMBOLS 中添加 B 的KBUILD_EXTRA_SYMBOLS的路徑,以消除依賴警告,如果您的 kernel 已配置CONFIG_MODVERSIONS ,則能夠加載模塊

向用戶態進程發出信號

老實說,這個我不太了解。 我個人使用實時擴展 Linux (RTAI) 為我的工作編寫代碼,我有我認為不存在於普通 Linux 中的設施。這些設施共享 memory(在 kernel 和用戶之間),以及共享信號量(再次在kernel 和用戶)等。 如果你能在Linux找到這樣的東西,那你就可以用了。

如果這些不可用(我相信它們不可用),您總是可以簡單地編寫一個 /sys 或 /proc 文件來輸出一個簡單的 0/1 來顯示用戶空間應用程序是否需要發出信號。 然后用戶空間應用程序可以輪詢這個文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM