<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="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:baseline;color:rgb(0,0,0);font-family:Arial,&#39;Liberation Sans&#39;,&#39;DejaVu Sans&#39;,sans-serif;line-height:18px">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>