
petkovbb at googlemail
Nov 25, 2009, 9:45 AM
Post #2 of 2
(308 views)
Permalink
|
|
Re: Kernel module, undefined symbol show_regs
[In reply to]
|
|
On Wed, Nov 25, 2009 at 1:27 PM, Tanya Gornak <errizo [at] gmail> wrote: > Hello. I can't solve problem that happens while I'm making my kernel module. > > part of my module: > // ... > #include <linux/sched.h> > //.... > static u32 task_syscall_entry(enum utrace_resume_action action, > struct utrace_engine *engine, > struct task_struct *task, > struct pt_regs *regs){ > // ... > show_regs(regs); > > } > But, while making I get: > > WARNING: "show_regs" [/home/tehhi/module/trace.ko] undefined! > > extern void show_regs(struct pt_regs *); define in header > linux/sched.h, place of source code is > linux/arch/x86/kernel/process_32.c > It use extern void __show_regs(struct pt_regs *); and extern > asmlinkage void __backtrace(void); > I think that extern means that I can use it (and there are no static > symbols in this function). > > When trying to insert module, it predictably complains of an unknown > symbol show_regs. > > What am I missing here? You're using a function in a module which is not exported to modules. See http://lwn.net/images/pdf/LDD3/ch02.pdf for more details. -- Regards/Gruss, Boris -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo [at] vger More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|