On Mon, 18 Dec 2000, Jun Sun wrote:
> It looks like sometime after test5 the MIPS_ATOMIC_SET case in sys_sysmips()
> function in the CVS tree is changed. The new code now uses ll/sc instructions
> and handles syscall trace, etc..
>
> This change does not make sense to me. The userland typically uses
> MIPS_ATOMIC_SET when ll/sc instructions are not available. But the new code
> itself uses ll/sc, which pretty much forfeit the purpose. Or do I miss
> something else?
There is no problem with using ll/sc in sysmips() itself for machines
that support them.
> What do we offer to machines without ll/sc?
I asked Ralf for a clarification of the sysmips(MIPS_ATOMIC_SET, ...)
call before I write better code. No response so far. I'm now really
cosidering implementing the Ultrix atomic_op() syscall -- at least it has
a well-known defined behaviour.
> BTW, what is the wrong with previous code? I understand it may be broken in
> SMP case, but I think that is fixable. Comments?
The previous code was definitely broken -- depending on the path taken it
would return either the value fetched from memory or an error code. No
way to distinguish between them.
Maciej
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
|