看板 LinuxDev 關於我們 聯絡資訊
非常感謝仔細的講解大概有一點sense;:了 雖然driver還在摸索中 但是我想表達的架構大概如下(之前可能講錯了= =) A.c 有functionA 將會用來呼叫 functionB 這裡的functionA會有while(1) 作polling的動作 藉由functionB可以讀到一些值 然後想把這些值寫到 /proc/debug ? 然後userspace 可能有一支app 去讀/proc/debug然後作一些處理 ? 不知道這樣的觀念對不對 ? B.c 有functionB m.c 編譯成module的檔案 會有一個溝通介面 像是 /proc/debug 會有一個functionM_init 會去呼叫到functionA 1.m.c 的funcitonM_init會呼叫到functionA 但是在A.c 並沒有把functionA export出來 所以 A.c 看起來是編譯成*.o檔在跟 m.c編譯成module ? 如果functionA有被export出來的話 表示他是編譯在kernel 2.在kernel裡面有一些code被compiler 成 module表示 lsmod 就可以看到這些註冊的 device ? 3.所以產生/proc/debug 可以放到m.c去產生 像是debug_entry = create_proc_read_entry(...) 那我要在A.c 寫東西到 /proc/debug 這裡的話 就卡住了 要用什麼函數 把值丟進去? 有些觀念還不是很熟 請多多包含:D ※ 引述《richardhesid (張騫)》之銘言: : 用語上有些差異,請見諒! : 我的理解是,你想在A.c中的functionA中call functionB. : 這取決與你的A.c和B.c是如何compile的。 : 如果a.c和b.c都是compile into kernel。 : 你可以在a.c中call funtionB,只要在A.c開始處申明extern functionB(); : 如果A.c compile as module.你必須在B.c中export symbol functionB。 : 你必須在B.c中使用EXPORT_SYMBOL(functionB)。 : 然后同樣在A.c開始處,申明extern functionB(); : 產生proc跟是否compile as module沒有關系。 : ※ 引述《RiverJackson (JACK)》之銘言: : : 請問一下 : : 小弟對linux 還不是很熟 底下的描述如果有錯 還請多多指教 : : 假設我有兩個檔案 A.c 跟 B.c (他們應該都是在kernel mode底下) : : 然後他們都在不同的目錄下 : : 然後在B.c底下 有一個函數 functionB : : 我的目的是想呼叫B.c的functionB 該怎麼使用呢 : : 然後呼叫成功之後 想說丟一個檔案到proc吧 : : 目的是想在userspace底下 會有一之程式去讀這邊的值 : : 不過要產生proc的東西 好像要寫成module的方式? : : 可能問題問的不是很好 不知道有沒有什麼建議與想法:D -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.174.130