Paul Durrant wrote:
> Garrett D'Amore wrote:
>> I like the idea of the free_func getting passed a third argument, 
>> which is the mblk_t * associated.  Then nobody needs to look at 
>> db_mblk.  I confess that I'd also feel better if the framework code 
>> reset the mblk fields to default, so that drivers were not required 
>> to know which fields to change and which not.  (The problem is what 
>> happens if sizeof (mblk_t) changes?)
>>
>> A way to achieve this without requiring a common switch case might be 
>> to add a new function, msgreset() or somesuch, which just clears the 
>> initial mblk header fields to reasonable defaults.  Then the free 
>> routine could call msgreset() before reusing the mblk.  Thoughts?
>
> I think you're going of at a slight tangent here ;-) There's no need 
> for an extra msgreset() call (although I did consider that option 
> myself) because the dblk_lastfree_xesb() code can reset the mblk_t 
> fields prior to calling free_func(). My code at 
> http://cr.opensolaris.org/~pdurrant/stream shows this; check out 
> http://cr.opensolaris.org/~pdurrant/stream/usr/src/uts/common/io/stream.c.html
>  
> lines 655-659; they are basically identical to lines 702-706 (in 
> gesballoc()).


You've made a good point, and I agree, dblk_lastfree_xesb() is the right 
place to do that.

    -- Garrett
>
>   Paul
>


Reply via email to