Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Dennis Ferguson
On 20 Nov, 2014, at 11:07 , Masao Uebayashi wrote: > On Wed, Nov 19, 2014 at 2:49 PM, Dennis Ferguson > wrote: >> That's very true, but the code is only correct if the writes occur >> in the order the C code has them written (i.e. tqe_next in the >> new element is written before writing the tqe_

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Dennis Ferguson
On 19 Nov, 2014, at 21:00 , Taylor R Campbell wrote: > Since most machines don't need any barrier here it would be extremely > inefficient to add a membar_consumer() since that would make all machines > pay for the idiosyncrasies unique to the DEC Alpha. > > We could invent a membar_datad

Re: struct ifnet and ifaddr handling [was: Re: Making global variables of if.c MPSAFE]

2014-11-19 Thread Masao Uebayashi
Looks good to me. But you should test before commit. :)

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Masao Uebayashi
On Wed, Nov 19, 2014 at 2:49 PM, Dennis Ferguson wrote: > That's very true, but the code is only correct if the writes occur > in the order the C code has them written (i.e. tqe_next in the > new element is written before writing the tqe_next of the existing > list element to point at it). To ens

Re: struct ifnet and ifaddr handling [was: Re: Making global variables of if.c MPSAFE]

2014-11-19 Thread Ryota Ozaki
On Thu, Nov 20, 2014 at 11:51 AM, Masao Uebayashi wrote: > On Thu, Nov 20, 2014 at 11:38 AM, Ryota Ozaki wrote: >> Actually FreeBSD seems to have a callout for each interface. Even more >> they killed the common if_watchdog facility and each driver has its own. > > What happens if many (e.g. 1,00

Re: struct ifnet and ifaddr handling [was: Re: Making global variables of if.c MPSAFE]

2014-11-19 Thread Masao Uebayashi
On Thu, Nov 20, 2014 at 11:38 AM, Ryota Ozaki wrote: > Actually FreeBSD seems to have a callout for each interface. Even more > they killed the common if_watchdog facility and each driver has its own. What happens if many (e.g. 1,000) virtual ifs are present? > Anyway here is a patch: > http://w

Re: struct ifnet and ifaddr handling [was: Re: Making global variables of if.c MPSAFE]

2014-11-19 Thread Ryota Ozaki
On Wed, Nov 19, 2014 at 2:38 PM, Masao Uebayashi wrote: > On Wed, Nov 19, 2014 at 11:24 AM, Ryota Ozaki wrote: >> Weird :-/ > > I don't think so. For fast paths to access data really fast, slow > paths take a little way around (pre-allocation, etc). This is a fair > trade-off. If you can achie

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Masao Uebayashi
On Wed, Nov 19, 2014 at 10:00 PM, Taylor R Campbell wrote: >Date: Wed, 19 Nov 2014 17:11:18 +0800 >From: Dennis Ferguson > >On 19 Nov, 2014, at 01:53 , Taylor R Campbell > wrote: >> The one tricky detail is that after a reader has fetched the tqe_next >> pointer, it must iss

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Taylor R Campbell
Date: Wed, 19 Nov 2014 16:28:41 +0800 From: Dennis Ferguson On 19 Nov, 2014, at 01:54 , Taylor R Campbell wrote: > What type pun is that? I don't see it. I think this one: #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Taylor R Campbell
Date: Wed, 19 Nov 2014 17:11:18 +0800 From: Dennis Ferguson On 19 Nov, 2014, at 01:53 , Taylor R Campbell wrote: > The one tricky detail is that after a reader has fetched the tqe_next > pointer, it must issue a membar_consumer before dereferencing the > pointer: otherwise the

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Dennis Ferguson
On 19 Nov, 2014, at 01:53 , Taylor R Campbell wrote: > Date: Tue, 18 Nov 2014 23:13:34 +0900 > From: Masao Uebayashi > > In pserialize_perform(), context switches are made on all CPUs. After > pserialize_perform(), all readers on all CPUs see the update data. > The data old data ite

Re: pserialize(9) vs. TAILQ

2014-11-19 Thread Dennis Ferguson
On 19 Nov, 2014, at 01:54 , Taylor R Campbell wrote: > Date: Wed, 19 Nov 2014 00:05:05 +0800 > From: Dennis Ferguson > > Also, the TAILQ macros depend on a type pun fairly similar to the one > that did in the CIRCLEQ macros and hence have a lifetime which extends > only to some futu