Re: [PATCH] Module alias and table support

Rusty Russell
2002-11-25T23:37:29Z

In message <20021125213617.GA25269@kroah.com> you write:
> On Mon, Nov 25, 2002 at 10:34:16AM +1100, Rusty Russell wrote:
> > > > + /* not matched against */
> > > > + kernel_long driver_info;
> > >
> > > Or is it because of "kernel_long"? I'm pretty sure this field is only
> > > used within the kernel, and userspace does not care at all about it.
> >
> > It sucks to reproduce this, yes. But you need to know the size of the
> > structure to grab it out of the object file. At least this way it's
> > in the kernel source where we can change it.
>
> But can't we still just use the structure from the kernel header and not
> have to retype it here? If needed, we can change the type of
> driver_info into something more portable than what it is today. That
> would be much easier in the long run.

Absolutely. But I didn't want to mess with your headers.

> > Which will simply match the alias such as:
> > usb:v0506p4601dl*dh*dc*dsc*dp*ic*isc*ip*
>
> Ah, you never told me about this plan :)

Oh, so I didn't explain the "clever" part of my clever plan? Oops.

> Yes, that would be very nice to have, pushing the logic out of the
> /sbin/hotplug code and into modprobe doesn't bother me. That just saved
> a _whole_ bunch of space in diethotplug, so you've made up for making
> the size smaller.
>
> How would modprobe know which driver to load based on the above line?
> Are you going to scan all module files, or rely on something like the
> modules.*map files of today?

0.7 scans all the files (since it has no modules.dep and needs the
dependencies anyway). 0.8 reintroduces modules.dep (thanks Adam!)
which is where the alias info logically belongs ("stuff extracted from
modules"). Or maybe a separate file (implementation handwave).

> Just realize that if you pre-process the information like you are
> proposing to do, you can't get it back later, which changes the way
> things work.

Well, you could, by sucking out the aliases which start with "usb:"
(the post-processing just turns the tables into aliases, doesn't
delete them or anything). You could also use the old-fashioned way
and suck it from the tables directly, but then you're back in
"intimate knowledge of kernel internals" land.

Cheers,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.