On Wed, 15 Nov 2000, Harald Koerfgen wrote:
> On 15-Nov-00 Jun Sun wrote:
> [R3000 UP userland spinlocks]
> > In fact, I don't think you can perform automic operation ONLY based on
> > the knowledge whether a context switch has happened during a specified
> > period. (It should be interesting to see if we can actually "prove"
> > it.)
>
> I doubt this as well, although I'd love to be proven wrong.
Well, on UP the only events that can break atomicity are exceptions (here
I treat interrupts as exceptions as well) and DMA accesses. I don't think
we do DMA to user space, so this should not be a problem. So if we can
detect an exception occured we may assume an operation failed and retry.
It's not a problem for an exception handler to clobber k0 or k1 upon exit.
Unfortunately we cannot use this implementation in the userland or we
risk problems when running on SMP systems -- an ISA-I user binary might
very well be run on an ISA-II (or higher) SMP system. But we can use it
in the kernel, for sysmips() and everything else. All we have to be
careful about is not to allow DMA accesses to spinlocks. I don't think
this is a problem in reality.
Maciej
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
|