Inter-module compatibility

Marc Aurele La France <[email protected]>
Newsgroups gmane.comp.xfree86.devel
Message-ID <[email protected]>
Hi.

I've something here I'd like to discuss.

Our loader scheme has been, and is, reasonably good at dealing with 
incompatibilities between modules and the core binary.  But it is not so good 
with ensuring modules are compatible with each other.

As a case in point, I am now faced with strong motivation to rework the three 
Vbe.*InfoBlock structures currently exported by vbe.h.

Now, it's not my purpose here to get into these motivations, but reworking 
these structures would have consequences, one of which I am unsure how to 
deal with.  At minimum, what I need to do is ...

a) prevent drivers compiled with the current vbe.h from using a vbe module
    created with the new vbe.h;  and
b) prevent drivers compiled with the new vbe.h from using a vbe module
    created with the current vbe.h.

The hammer approach would suggest bumping the video driver ABI version number 
all the way up to 1.0.  (It currently sits at 0.8).  This is overkill as 
doing so would prevent the loading of _any_ version 0.* module, 
vendor-provided or not, making this "politically" unwise.

Bumping this version number to 0.9 (or leaving it alone) is insufficient as 
it prevents neither "a)" nor "b)", so changes would be required.

I've prototyped a way of dealing with "a)".  Basically, I'd have the vbe 
module's Setup() function call the common layer to associate a (potentially 
extended) XF86ModReqInfo occurrence with the vbe module, which the loader 
would then use to check parent modules against.

Dealing with "b)" is trickier.  All I can think of right now would require 
changes to the way video drivers load the vbe module, something I'd like to 
stay away from, especially in the presence of vendor-provided source and/or 
binaries.

Any ideas?

Thanks.

Marc.

+----------------------------------+-----------------------------------+
|  Marc Aurele La France           |  work:   1-780-492-9310           |
|  Academic Information and        |  fax:    1-780-492-1729           |
|    Communications Technologies   |  email:  [email protected]          |
|  352 General Services Building   +-----------------------------------+
|  University of Alberta           |                                   |
|  Edmonton, Alberta               |     Standard disclaimers apply    |
|  T6G 2H1                         |                                   |
|  CANADA                          |                                   |
+----------------------------------+-----------------------------------+
XFree86 developer and VP.  ATI driver and X server internals.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.