Date: Mon, 12 May 1997 22:02:44 +0200 From: Stefan Esser <se@FreeBSD.ORG> To: Doug Rabson <dfr@nlsystems.com> Cc: current@FreeBSD.ORG Subject: Re: Backwards compatibiliy for isa_driver Message-ID: <19970512220244.64858@x14.mi.uni-koeln.de> In-Reply-To: <Pine.BSF.3.95q.970507144303.3261H-100000@herring.nlsystems.com>; from Doug Rabson on Wed, May 07, 1997 at 02:55:13PM %2B0100 References: <Pine.BSF.3.95q.970507144303.3261H-100000@herring.nlsystems.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On May 7, Doug Rabson <dfr@nlsystems.com> wrote: > So far in my modularisation work, I have managed to keep a high level of > binary compatibility (and a moderate level of source compatibility) with > previous releases. The structures isa_device and isa_driver and all > low-level functions in isa.c are unchanged. In particular my binary > release of OSS still works :-). > > Unfortunately the situation with isa_driver is getting pretty ugly and I > *really* want to add a detach function to it. If I add a detach function > to it, I'm going to add a bunch of other stuff to simplify some of the > rest of the code. My question is, how much will break if I change > isa_driver? I think OSS will still work from looking at its symbol table > since it calls register_intr directly instead of going through > config_isadev. I have for some time been thinking about better support for different bus types in FreeBSD. What I'd like to see changed is that bus specific code may be attached to struct isa_device and the other device structures. For example, a pointer to a function that produces the name of the device (from information found in isa_device) should be contained, but also a function that allows to check for resource conflicts. This new data structure should apply to all bus types, of course. There appear to be 3 ways to attach those functions to struct isa_device: 1) Add a pointer to the new structure as the first element of struct isa_device (and the corresponding data structures for other bus types). 2) Add the pointers to functions to the beginning of isa_structure. 3) Create the new structure and make it the primary data object, which will contain a pointer to the bus specific structure (e.g. struct isa_device). I have code to check for resource conflicts between PCI and ISA, for example, that could take advantage of such a change. Since I'm currently rewriting the PCI code from scratch (for userconfig support, for example), I'd like to see a possible change to the device structures go into FreeBSD now ... Regards, STefan partially completed)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970512220244.64858>