On Wed, Jun 04, 2003 at 02:43:20PM +0100, Doug Rabson wrote: > On Wed, 2003-06-04 at 14:16, Paul Richards wrote: > > On Wed, Jun 04, 2003 at 01:33:46PM +0100, Doug Rabson wrote: > > > > > Interfaces actually can be added at runtime. Existing objects (i.e. > > > objects instantiated before the new interface was added) will continue > > > to work as before. If methods from the new interface are called on old > > > objects, the default method will be called. > > > > How can you add an interface at runtime? > > By loading a kernel module. If I load e.g. the agp kernel module, I add > the agp_if interface to the kernel. Yes, I know that you can load a pre-compiled interface at runtime and thereby add that interface, but you can only "create" interfaces at build time because each method in the interface is uniquely identified by a kobjop_desc struct, which is what I was referring to. > The code which is doing the method dispatch has no real idea what > methods (or what interfaces for that matter) that the object's class > implements. You can't use the classes method table layout for the ops > table since the caller has no way of knowing that layout (and the layout > will be different for almost every class in the system). > > One possible way of making this slightly simpler might be to make the > class point at a table indexed by interface ID, each entry of which is a > table indexed by a method ID from that interface. This sounds fine in > theory but in practice, it would end up slower due to the two memory > accesses. That's along the lines of what I suggested at the start of the thread :-) -- Tis a wise thing to know what is wanted, wiser still to know when it has been achieved and wisest of all to know when it is unachievable for then striving is folly. [Magician]Received on Thu Jun 05 2003 - 05:51:43 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:10 UTC