<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 14, 2014 at 12:38 PM, Le Tan <span dir="ltr">&lt;<a href="mailto:tamlokveer@gmail.com" target="_blank">tamlokveer@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><font size="4">Thanks very much! I will try that later. What you mentioned is another amazing sight. But I am confused that why it can&#39;t work if I export a function from my module and call it in the kvm? Do I have to modify the makefile of kvm? How? I have referenced to the doc of KBuild. It said that :</font><div>


<div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    Sometimes, an external module uses exported symbols from</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    another external module. kbuild needs to have full knowledge of</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    all symbols to avoid spliitting out warnings about undefined</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    symbols. <font color="#ff0000">Three solutions exist for this situation.</font></div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    NOTE: The method with a top-level kbuild file is recommended</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    but may be impractical in certain situations.</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


    <font color="#ff0000">Use a top-level kbuild file</font></div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        If you have two modules, foo.ko and bar.ko, where</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        foo.ko needs symbols from bar.ko, you can use a</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        common top-level kbuild file so both modules are</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        compiled in the same build. Consider the following</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        directory layout:</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        ./foo/ &lt;= contains foo.ko</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        ./bar/ &lt;= contains bar.ko</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        The top-level kbuild file would then look like:</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        #./Kbuild (or ./Makefile):</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


            obj-y := foo/ bar/</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        And executing</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


            $ make -C $KDIR M=$PWD</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        will then do the expected and compile both modules with</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        full knowledge of symbols from either module.</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


<font color="#ff0000">    Use an extra Module.symvers file</font></div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        When an external module is built, a Module.symvers file</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        is generated containing all exported symbols which are</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        not defined in the kernel. To get access to symbols</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        from bar.ko, copy the Module.symvers file from the</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        compilation of bar.ko to the directory where foo.ko is</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        built. During the module build, kbuild will read the</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        Module.symvers file in the directory of the external</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        module, and when the build is finished, a new</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        Module.symvers file is created containing the sum of</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        all symbols defined and not part of the kernel.</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


 </div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


<font color="#ff0000">    Use &quot;make&quot; variable KBUILD_EXTRA_SYMBOLS</font></div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        If it is impractical to copy Module.symvers from</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        another module, you can assign a space separated list</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        of files to KBUILD_EXTRA_SYMBOLS in your build file.</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        These files will be loaded by modpost during the</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


        initialization of its symbol tables.</div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


<span style="font-size:large;font-family:arial;line-height:normal;color:rgb(34,34,34)"><br></span></div><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


<span style="font-size:large;font-family:arial;line-height:normal;color:rgb(34,34,34)">But I have tried those methods. They don&#39;t work. Why?</span></div></div><div style="line-height:20px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">


<font size="4">Thanks for your help very much!</font></div></div></blockquote><div> </div><div>Please show your kvm module makefile, </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">

<span style="font-family:arial;font-size:small;line-height:normal"> </span><br></div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">

<div style="line-height:20px;font-size:14.285715103149414px;font-family:&#39;Microsoft YaHei UI&#39;,&#39;Microsoft YaHei&#39;,SimSun,&#39;Segoe UI&#39;,Tahoma,Helvetica,sans-serif,&#39;Microsoft YaHei&#39;,Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif">

</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014/1/14 Henrique Rodrigues <span dir="ltr">&lt;<a href="mailto:henriquesilvar@gmail.com" target="_blank">henriquesilvar@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Le,<div><br></div><div>You can do that by exporting a function pointer from the kvm code that is only called if it is not null. Then, when you load your module, you set that exported function pointer (I&#39;m assuming that you want to call your module&#39;s function from the kvm code... ). Here is a post on how to do that:</div>




<div><br></div><div><a href="http://stackoverflow.com/questions/11463184/how-to-use-exported-symbols-in-the-linux-kernel" target="_blank">http://stackoverflow.com/questions/11463184/how-to-use-exported-symbols-in-the-linux-kernel</a><br>




</div><div><a href="http://stackoverflow.com/questions/1196944/can-i-replace-a-linux-kernel-function-with-a-module" target="_blank">http://stackoverflow.com/questions/1196944/can-i-replace-a-linux-kernel-function-with-a-module</a><br>


</div>

<div><div><br></div><div>Best,</div></div><div class="gmail_extra"><div><div dir="ltr"><div>--</div>Henrique Rodrigues<br><div><a href="http://www.dcc.ufmg.br/~hsr" target="_blank">http://www.dcc.ufmg.br/~hsr</a></div></div>




</div>
<br><br><div class="gmail_quote"><div><div>On Mon, Jan 13, 2014 at 2:47 AM, Le Tan <span dir="ltr">&lt;<a href="mailto:tamlokveer@gmail.com" target="_blank">tamlokveer@gmail.com</a>&gt;</span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div dir="ltr">Hello! I am writing a device driver module. I define some functions in the module, for example print_record(). I am doing something in the kvm, so I want to call print_record() in the file of kvm module, for example, I may call print_record() in file /arch/x86/kvm/x86.c to put something into my device driver module.<div>





Now comes the question.</div><div>1. Where should I put the codes of my device driver module? It&#39;s the first time I write the device driver.</div><div>2. After compiling my module, I encounter an error when I compile the kvm module.</div>





<div>     ERROR: &quot;print_record&quot; [arch/x86/kvm/kvm.ko] undefined!</div><div>    I use EXPORT_SYMBOL(print_record) in my module file. I use &quot;extern&quot; to declare print_record() and then call print_record()  in file x86.c. </div>





<div>    To solve this problem, I have tried to copy the Module.symvers from my module folder to /arch/x86/kvm/. But it doesn&#39;t work. I have also tried to add <strong style="vertical-align:baseline;line-height:18px;font-size:14px;font-family:Arial,&#39;Liberation Sans&#39;,&#39;DejaVu Sans&#39;,sans-serif;margin:0px;border:0px;padding:0px">KBUILD_EXTRA_SYMBOLS </strong>to the Makefile of kvm. It doesn&#39;t work either.</div>





<div>    I cat /proc/kallsyms and find that the type of symbol &quot;print_record&quot; is &quot;t&quot; ( local text). What should I do? How to call functions defined in my own module from kvm? Maybe there is something wrong in Makefiles?</div>





<div><br></div><div>Any suggestion is appreciated!</div><div>Thanks!</div></div>
<br></div></div>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>


<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></blockquote></div><br></div></div>
</blockquote></div><br></div>
<br>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></blockquote></div><br></div></div>