[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: The missing membar_X() directive
On 14.07.2010 18:26, Dennis Ferguson wrote:
> On 14 Jul 2010, at 07:50 , Christos Zoulas wrote:
>>> I have a route lookup data structure which is fairly speedy and
>>> which is designed to be modified (i.e. routes added or deleted)
>>> while lookups are concurrently being done. This is part of a
>>> project to produce a fully SMP-capable networking stack.
>> Would RCU be helpful in your scenario?
> I didn't know there was a name for that but, yes, that's how it
> works. When something is removed from the structure the memory
> allocator needs to hang on to the now-detached memory and keep
> it unchanged until it can prove that all lookups which might have
> started before the change have finished. The (only) thing which
> requires the memory barriers is that when you add something to the
> structure you first initialize the new memory to the state it
> needs to be in when it is added, and then modify pointers in the
> existing structure to point at the new memory. The initialization
> done needs to be visible to all processors before the changes to
> the pointers become visible.
> The wikipedia article on RCU, here
> in section 3 actually mentions the problem with the Alpha which
> requires the read memory barriers for that processor only.
IIRC, you cannot implement RCU in non GPL software (unless IBM gives
approval for it).
Main Index |
Thread Index |