作者RiverJackson (JACK)
看板LinuxDev
标题Re: [问题] kernel function 呼叫问题
时间Sun Apr 12 15:17:45 2009
非常感谢仔细的讲解大概有一点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