lockless file descriptor lookup
Jeff Roberson
jroberson at jroberson.net
Wed May 13 00:25:56 UTC 2009
On Tue, 12 May 2009, Dag-Erling Sm?rgrav wrote:
> Jeff Roberson <jroberson at jroberson.net> writes:
>> I'd also appreciate it if someone could look at my volatile cast and
>> make sure I'm actually forcing the compiler to refresh the fd_ofiles
>> array here:
>>
>> + if (fp == ((struct file *volatile*)fdp->fd_ofiles)[fd])
>
> The problem is that since it is not declared as volatile, some other
> piece of code may have modified it but not yet flushed it to RAM.
That is an acceptable race due to other guarantees. If it hasn't been
committed to memory yet, the old table still contains valid data. I only
need to be certain that the compiler doesn't cache the original ofiles
value. It can't anyway because atomics use inline assembly on all
platforms but I'd like it to be explicit anyway.
Thanks,
Jeff
>
> DES
> --
> Dag-Erling Sm?rgrav - des at des.no
>
More information about the freebsd-arch
mailing list