tech-net archive

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

Re: patch make struct protosw pr_input non-variadic





On 5/14/2016 3:29 PM, Christos Zoulas wrote:
On May 14,  7:11pm, campbell+netbsd-tech-net%mumble.net@localhost (Taylor R Campbell) wrote:
-- Subject: Re: patch make struct protosw pr_input non-variadic

|    Date: Sat, 14 May 2016 16:47:28 +0000
|    From: Taylor R Campbell <campbell+netbsd-tech-net%mumble.net@localhost>
|
|       Date: Fri, 13 May 2016 23:14:13 +0000 (UTC)
|       From: christos%astron.com@localhost (Christos Zoulas)
|
|       In article <20160513195611.GA8625@pris>,
|       Tyler Retzlaff  <rtr%netbsd.org@localhost> wrote:
|       >This patch:
|       >[...]
|       >* converts domain::dom_protosw to an array of pointers
|
|       Why? What's the point of the extra indirection? You could just stick
|       and & in front of the array element assignment.
|
|    [...]
|    Changing dom_protosw to be an array of pointers to struct protosw
|    instead of an array of struct protosw grants us flexibility in using
|    struct <protospecific>protosw structure and still get real type
|    checking for everything -- we simply fill dom_protosw with pointers to
|    an embedded struct protosw inside struct <protospecific>protosw.
|
| I should add that I believe this indirection does not affect any hot
| paths.  For example, in the packet-processing path, ip_input still
| uses the direct array, which dom_protosw is an array of pointers into;
| the actual machine code in ip_input shouldn't change at all.
|
| As far as I could tell, dom_protosw is used only in cold paths, such
| as in ip_init, in domain_attach, in route-changing ctlinput packet
| processing, &c., and only for linear scans through the whole array
| anyway.

But you are casting structs now... How is that safe?
You might as well make it an array for void *'s...

The only casts I see in the patch are those producing the address of struct protosw that are the product of a designated initialization? Or am I missing something?



Home | Main Index | Thread Index | Old Index