[Toybox] [PATCH] Re: modinfo...
Rob Landley
rob at landley.net
Sun Jun 23 12:39:14 PDT 2013
On 06/20/2013 11:24:48 PM, Isaac wrote:
> On Wed, Jun 19, 2013 at 11:44:08PM -0500, Rob Landley wrote:
> > On 06/18/2013 08:55:42 AM, Isaac wrote:
> > >
> > >Oh, there's a trivial option to add to modinfo: -b <basedir>
> > >(used for constructing an initrd-it locates the modules within
> > >a given directory).
> >
> > Um, where's this from? My host's modinfo hasn't got it, and I don't
> > know of an actual standard for this...
> >
>
> I noticed it on my Lucid system:
Ok.
> So I don't see a high priority; on the other hand, it might
> hypothetically be
> useful if firmware requirements change in a new kernel version.
> In other words, sounds like something to hold off on.
I haven't got an objection if it's actually being used somewhere, I
just didn't see it on my system.
> > >I have a patch to add it, but I'm wondering why
> > >NEWTOY(..."<b:F:0"...)
> > >GLOBALS(
> > > char *field;
> > > char *basedir;
> > >..
> > >works right, and putting the GLOBALS in the same order as the
> > >option string breaks (tested on glibc and musl).
> >
> > The option strings parse from right to left. F: is the rightmost
> > captured string so it goes in the first slot, b: is in the next
> > rightmost captured string, so it goes in the second slot.
> >
> > The documentation describes this:
> > http://landley.net/toybox/code.html#lib_args
> >
> > >modinfo also should support specifying an absolute or relative path
> > >to a module; the one complication is that modinfo_file() takes a
> > >struct dirtree, not a filename; can dirtree_read handle a filename
> > >or a relative path?
> >
> > Yes: http://landley.net/toybox/code.html#lib_dirtree
>
> Thanks for the answer; I missed that, probably due to trying to read
> rather late.
I feel I should make the documentation more clear, but dunno how.
> I have a patch that assumes that the presence of the string ".ko"
> indicates
> use of a path to a module (*.ko.xz and similar included, but not
> supported).
Wouldn't the presence of a / character indicate use of a path?
> While I am not aware of any rules forbidding a module like
> "barf.ko.ko",
> an strace of module-init-tools modinfo indicates that they use
> similar logic.
Hmmm... I guess an actual file is going to have the .ko extension,
although strstr() doesn't confirm it _ends_ with .ko...
The difference between if (strchr(str, '/')) and checking for .ko is
that "modinfo filename.ko" would work with the second but not the
first. We could also always check for the argument as a file, but that
would mean if you do have a file in the current directory of the same
name it would load that file, and that's a bit like not having "." in
the $PATH by default...
Eh, changing behavior based on extension is normalish. I'd like to add
a check to make sure it's actually at the end until the further
extension support is implemented.
> It adds 6 lines, with 41 bytes increase in binary size (GCC 4.4,
> glibc/dynamic and musl/static, according to make baseline/bloatcheck).
> I'm not sure if the void->int change was needed, though it does keep
> GCC
> quiet. But perror_exit; -> perror_msg; return; was needed.
Except it's still xopen(), so it'll abort if unable to open the file,
but return error if it can't map it. (And leak the filehandle.) Hmmm...
all modinfo_file() actually uses is the filename, no reason to go
through dirtree() for that... Nothing is actually _checking_ the return
value of modinfo_file()... Huh, and this thing is doing a blob of
global data (I try to combine globals into the union)...
Checking in a cleanup on top of your commit. (And I need to dig up the
-b patch...)
Thanks,
Rob
More information about the Toybox
mailing list