tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Lockless IP input queue, the pktqueue interface



On 27/05/2014 9:48 PM, Mindaugas Rasiukevicius wrote:
> Darren Reed <darrenr%netbsd.org@localhost> wrote:
>> <...>
>>> The patch makes the following changes:
>>> - Implements pktqueue interface (see pktqueue.{c,h} files).
>>> - Replaces ipintrq and ip6intrq with the pktqueue mechanism.
>>> - Eliminates kernel-lock from ipintr() and ip6intr().
>>> - Some preparation work to push softnet_lock out of ipintr().
>>>
>>
>> Some general feedback...
>>
>> push the struct into the .h file, maybe create two .h files, one that is 
>> exposed and one that is internal
> 
> No, there is no need to expose the structure.  Even if there would be
> another internal component using the structure(s) one should consider
> accessors/mutators.  Even if that component would have a good reason
> not to use accessors/mutators, the structure should be placed under
> #ifdef __SUBSYSTEM_PRIVATE (and certainly #ifdef _KERNEL).  However,
> I strongly discourage to start from the last step without having a
> necessity first.
> 
> One of the main reasons why we ended up with our network stack being
> such a mess is exactly this: the internal structures are exposed and
> accessed all over the place, there is a lack of strict interfacing,
> and the information hiding principle is not followed.

So if someone were to write a program to grovel through a crash dump
or /dev/mem and print out these structures, how would they get the
definition of it?

Darren




Home | Main Index | Thread Index | Old Index