Subject: Re: Device Properties: The Next Generation
To: None <eeh@netbsd.org, nathanw@MIT.EDU>
From: None <eeh@netbsd.org>
List: tech-kern
Date: 02/22/2001 18:59:51
<eeh@netbsd.org> writes:
> The property is not overloaded; it is the same property
> but associated with a different device. The location of
> a property is part of the semantics. We are not talking
> about OOP here, we're talking about filesystems and `find'.
If it's not OOP, don't call it "inheritance". Inheritance implies OOP
to many people. Don't do that unless you *want* to be confusing.
O.K. Fine. The term `inheritance' (which is inherited
from Solaris, BTW) is causing too many problems. Consider
it officially renamed to `search' and the flag will now
be called `PROP_SEARCH'.
If it's a filesystem, use "..". Have devices look up "../propertyname"
and not rely on magic level-propagation hacks.
That's an interesting concept. There are several issues
with it:
1) it makes the code more complex.
Reimplementing a namei() that works
on device nodes will be painful.
2) just using "../propertyname" does not
help if you don't necessarily know where
the property resides, so you still need
`PROP_SEARCH'.
3) the names and locations of device nodes
vary, so a hard wired "./foo0/reg" will
not work if there is no "./foo0" device.
4) going down the device tree is difficult
since to find a child of a device node
you need to search the global device list
and look for a device who's parent pointer
matches.
5) because of 4, wildcarding will be very
difficult to implememnt.
With the current proposal, all these operations would
be implemented by the requestor walking the device tree
himself.
While allowing the use of strings to specify paths
in the style of a filesystem may look prettier, it
turns out harder to implement both inside the interface
and in the code that needs to generate strings at
runtime to query the interface.
Eduardo