Thanks Pulkit, I can see better how it works now. Thanks everyone else too.
2009/11/9 Pulkit Goel <[email protected]> > Hi, > > *Add In Kernel Code::* > > # include<YourCharDriver.H> > OR > extern YourDriverFunctionName(); > > :::::from this Driver Function declaration Comes in Kernel Code > > > *Add In Driver Code::* > > EXPORT_SYMBOL_GPL(YourDriverFunctionName); > * > Calling Method in ""fs/readdir.c""* :: > > struct module *find_module(const char *YourDriverModuleName) > if(module != NULL) > { > YourDriverFunctionName(); > } > > > > > *Regards:* > Pulkit Goel > mail:[email protected] <mail%[email protected]> > > > On Mon, Nov 9, 2009 at 3:35 PM, Sam Carter <[email protected]> wrote: > >> 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. >> >> Any more thoughts on this? >> >> 2009/11/9 Zhu Yanhai <[email protected]> >> >> 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 <[email protected]>: >>> > 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 >>> > >>> > >>> >> >> >
