Subject: Re: if_delete * if_alloc
To: Matthias Drochner <drochner@zelux6.zel.kfa-juelich.de>
From: Matt Thomas <matt@3am-software.com>
List: tech-kern
Date: 07/09/1997 20:28:18
At 09:57 PM 7/9/97 +0200, Matthias Drochner wrote:
>> But the driver should be able to veto/delay of freeing of the
>> softc because there may be outstanding references to it
>> that the driver load/unload doesn't know about.  When asked
>> to unload, the driver will say no.  When ready, the driver
>> will inidicate that it can be deleted.  the unload code (from a
>> clean stack) will then free the softc and unload the driver.
>
>Yes, this would be ok from the driver LKM point of view.
>If I understand it correctly, it would boil down to a
>function which is called by the driver at unload time
>(let's call it detach function) and which tells if a given
>ifnet can be freed. The (userland) unload program has
>to retry in necessary.

No it doesn't.  The struct device of the driver should have a
pointer to the internal kernel structure describing the lkm.
The iffree should call device_release(struct device *) (ie. the
softc) which can decrement a reference count, free the softc,
and if 0, free the lkm.  It would not be a half open lkm since
all the forward pointers to the lkm should be cut.

-- 
Matt Thomas               Internet:   matt@3am-software.com
3am Software Foundry      WWW URL:    http://www.3am-software.com/bio/matt.html
Nashua, NH                Disclaimer: I disavow all knowledge of this message