Skip site navigation (1)Skip section navigation (2)
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>