You will obviously need to include a header file from your
driver into kernel (Alternatively, declate the function as extern in the
kernel).
When I try to compile the kernel with my changes to readdir.c, my function in the driver is undefined and it therefore won't compile. This also happens after I've compiled my driver against the kernel tree with the EXPORT_SYMBOL in place.
From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto:kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of Sam Carter
Sent: Monday, November 09, 2009 3:35 PM
To: Zhu Yanhai
Cc: kernelnewbies@xxxxxxxxxxxx
Subject: Re: Calling driver functions from kernel space
Any more thoughts on this?
2009/11/9 Zhu Yanhai <zhu.yanhai@xxxxxxxxx>
EXPORT_SYMBOL_GPL(your func);
Then this function can be called outside.
For the second question, does this one work?
/* Search for module by name: must hold module_mutex. */
struct module *find_module(const char *name)
It's in kernel/module.c and has been exported.
Regards,
Zhu Yanhai
2009/11/8 Sam Carter <sam.w.carter@xxxxxxxxx>:
> Hi all,
>
> I have a char driver/module which compiles and loads into the linux kernel
> just fine. In this driver are some functions which I would like to access
> from the kernel file 'fs/readdir.c'. Additionally, how can I test if a
> driver is loaded?
>
> I need something like the following.
>
> if(myDriver is loaded){
>
> myDriver.functionCall();
> }
>
> All examples I've found on internet searches are doing it from userspace
> applications.
>
> Thanks for any help
>
>