Kernel Programming Questions

Greg KH greg at kroah.com
Sun May 25 15:32:00 UTC 2008


On Sat, May 24, 2008 at 05:47:15PM -0600, Vadim Klishko wrote:
> On Friday, May 23, 2008 5:01 PM, "Greg KH" wrote:
> 
> > On Fri, May 23, 2008 at 04:42:41PM -0600, Vadim Klishko wrote:
> >> On Friday, May 23, 2008 4:00 PM, "Greg KH" wrote:
> >> 
> >> > On Fri, May 23, 2008 at 02:32:46PM -0600, Vadim Klishko wrote:
> >> >> Hello Everybody,
> >> >> 
> >> >> Could anyone please tell me what functions I could call from a Linux kernel module to:
> >> >> 
> >> >> 1) dynamically load a library,
> >> > 
> >> > None.
> >> > 
> >> >> 2) get the address of an exported function,
> >> > 
> >> > None.
> >> > 
> >> >> 3) unload the library?
> >> > 
> >> > None.
> >> > 
> >> > None of these things are things that you should do from within a kernel
> >> > module.
> >> > 
> 
> First of all, I want to thank all those who answered for their
> suggestions.
> 
> Second of all, I suspect my question about loading a library within a
> kernel module may have been misunderstood. I am not talking about
> loading a user-space library. I am talking about loading my own
> library written specifically to be used in kernel space.

The kernel does not have "libraries", it allows the loading of kernel
"modules" at any time though.

> The idea is that the library is optional. If it is found on the
> system, then it is used. If it is not present, the module uses its
> internal, simpler algorithm. Any suggestions?

Just use the existing module loading functions to attempt to load your
module, if present.  But I would wonder why you would make such a thing
"optional" at all?  Either you need it or you do not, there should not
be a real issue here.

> >> >> Also, what are the functions that would allow me to read from and
> >> >> write to a binary or text file from within a kernel module?
> >> > 
> >> > None, this is not what a kernel module should ever be doing.
> >> > 
> >> > Let's turn it around the other way, what are you trying to achieve that
> >> > makes you think the above things are necessary to do?
> >> > 
> >> By reading a file, I am trying to load a system-wide device
> >> configuration. Of course, it could be hard-coded into the module, but
> >> why not try having it adjustable?
> > 
> > It's fine to be configurable, that's wonderful and something we do all
> > the time.
> > 
> > But it is userspace sending the data into the kernel driver, not the
> > other way around.  With the plethera of different filesystems, mount
> > points, boot sequences, namespaces and the like, the kernel can not
> > specific a single location of a config file and have it work with all
> > systems.
> > 
> > So have a startup script that parses the config file in userspace and
> > then writes the needed info into the driver using sysfs, or better yet,
> > configfs (which is sounds like what you need to use here.)
> 
> That would work. How do I read and write settings using configfs?

See the configfs documentation in the kernel tree :)

thanks,

greg k-h



More information about the devel mailing list