Thread (22 messages) 22 messages, 7 authors, 2014-09-16

Re: [PATCH 0/3] Implement /proc/built-in file similar to /proc/modules

From: Kirill Tkhai <hidden>
Date: 2014-09-14 18:05:56
Also in: lkml

On 14.09.2014 21:39, Greg KH wrote:
On Sun, Sep 14, 2014 at 09:31:58PM +0400, Kirill Tkhai wrote:
quoted
On 14.09.2014 19:38, Greg KH wrote:
quoted
On Sun, Sep 14, 2014 at 02:18:13PM +0400, Kirill Tkhai wrote:
quoted
This series implements a possibility to show the list of built-in drivers
to userspace. The names of drivers will be the same as when they are modules.
Have you looked at /sys/modules/ ?  Doesn't that show what you want
here?
There are only the drivers in "/sys/module" which have parameters.
Drivers without parameters do not appear there.
Ah, didn't realize that.  Should be easy to fix though, if you really
wanted to list the modules.  Much better than a random proc file that
you have to parse :)
But it looks like one file is better than many new directories.
Furthermore some utils already may consider /sys/module directory as
a directory where all drivers have parameters. Is it good if we add
new ones of different type there?
quoted
quoted
quoted
So, if your system has "loop" driver then it appears either in /proc/modules
or in /proc/built-in and userspace will be able to know about this.

Now this is impossible. The only way to get kernel configuration is
/proc/config.gz, but CONFIG_* names can change from time to time. Module
names are more or less standardized.
Module names aren't "standardized", we change them at times when needed,
just like CONFIG_ names.

What is your end goal here?  As you say, config.gz is the real kernel
configuration, just having a list of modules built in isn't going to
help much in getting a working kernel config without it.
It looks like userspace applications oriented on modules names rather
than on CONFIG_XXX parameters. /proc/config.gz is optional and userspace
applications can't base on it.

For example, when I compile "loop" module built-in and "loop" is in
/etc/modules, init script warns about this module is not present and
can't be autoloaded. The script does not store CONFIG_XXX <-> module_xxx
conformity. And nobody stores it.

When iptables wants extra functionality, it requests a module. Etc.

Nobody is oriented on CONFIG_XXX parameters. It would be simple for
userspace to add a support of /proc/built-in analysing. It's very
similar to /proc/modules.
Shouldn't userspace focus on the functionality a module provides, not
the module name itself?  Can't a test for the loop "module" just test to
see if the loop control device is present?  Same for iptables (there's
modprobe rules for iptable modules I think...)

In other words, don't focus on the module names, focus on the userspace
function a module provides, there should always be a way to check that
at run time (if not, then the module doesn't actually do much...)
Hm, I'm not sure that anybody stores CONFIG_XXX <-> module_xxx
conformity. Everybody bases on module name. If application is seeing
CONFIG_XXX=m, but the functionality, which it want's, is not available,
what it has to do? How should it convert CONFIG_XXX to module name?
So, many applications want module name instead of CONFIG_XXX, I believe.

Kirill
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help