我有兩個Linux內核模塊,其中一個可能會爲另一個提供一些功能。但是使用該功能並不重要,即使第一個模塊不存在,第二個模塊也可能(也應該)工作。Linux內核之間的模塊間通信
如果我只是從第一個模塊導出函數並在第二個模塊中使用它,則第二個模塊依賴於該符號,如果沒有第一個模塊就不能加載。
其中一個解決方案是讓用戶腳本查看第一個模塊中函數的/ proc/kallsym,如果它存在,腳本將其地址作爲參數傳遞給第二個模塊,指針掉了。但由於顯而易見的原因,我不喜歡這種解決方案。
如果有更多的正確和優雅的解決方案,將允許第二個模塊去獲取第一個模塊中的某個符號的地址,但避免硬依賴?
即使根本沒有模塊A,模塊B也需要工作(假設A提供了某個機器上不存在的某種硬件加速器的接口)。 – Eugene
2.4中有query_module()接口,幾乎完全符合我的需求,但它在2.6中被刪除。我想知道是否有一些替代品... – Eugene