tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: General device properties API



> On Sep 12, 2021, at 1:58 AM, Taylor R Campbell <campbell+netbsd-tech-kern%mumble.net@localhost> wrote:
> 
> Why is this a requirement/problem?
> 
> The current mechanism still needs space in the kernel for the text of
> the name (the string "i2c-enumerate-devices").  Why refuse to expose
> that name to the linker so it can detect typos and namespace
> collisions?

Because is possible to construct situations where there are collisions that aren’t really errors, and avoiding them is complicated.

>> I suppose I should adjust my #2 property above... in addition to not
>> causing a link failure if e.g. ACPI doesn't provide some method, nor
>> should there be a link failure if ACPI provides enumeration support
>> for I2C but the I2C module isn't currently loaded.
> 
> Only a .c file for the interface -- not the whole i2c subsystem --
> needs to be included.

So, let’s consider the following…

User builds modular kernel w/o i2c subsystem, so ACPI needs to include the interface binding object because it still have the i2c-enumerate-devices device call lurking inside of it.

User then loads the i2c subsystem.  But, does the i2c subsystem also have the interface binding object?  If it does, then you get a link error due to colliding symbols.  If not, then what happens if you try to load the i2c module on a system that does not have ACPI or OFW or whatever?  Do you get a link error this time because of an unresolved symbol?  Do you have to make the interface binding object **a separate module**?  And under what circumstances do you ensure it’s inclusion in a non-modular kernel?

Doing this with symbols is a mess.

-- thorpej



Home | Main Index | Thread Index | Old Index