[cgl_discussion] Question for TEMs/ISVs/OEMs regarding pthread requirements

Pradeep Kathail pkathail at cisco.com
Sun Feb 2 13:43:12 PST 2003


Instructions are called 

  LL - Load linked
  SC - Store Conditional

Typically these are used in a loop, to take care of higher priority 
process or other CPUs accessing the same data. Typical instruction 
sequence looks like:

  For Attomic increment, instruction sequence will look like:

L1:
  LL    reg, <address>
  ADD   reg, 1
  ## You can do more instructions here.
  SC   reg, <address>
  BEQ  L1
  NOP

Brgds.
Pradeep

At 1/31/2003 10:11 PM -0600, Corey Minyard wrote:
>Pradeep Kathail wrote:
>
>>At 1/31/2003 04:57 PM -0600, Corey Minyard wrote:
>> 
>>
>>>You cannot correctly implement it without changing userland.  Sorry, it just can't be done.  With the current NPTL and NGPT implementation, you end up with a window where the mutex is locked but the owner is unknown (in fact I'm not sure if the owner is ever known).  If another process comes along in that timeframe, it won't be able to do the priority boosting, and it's not like it can just wait for a little while for the other process to finally identify itself, that would kind of defeat the purpose of the whole thing :-).
>>>
>>>Also, I don't think it's possible to do the userland-only lock on a machine that doesn't have compare-and-swap (MIPS, ARM, and old x86s don't have it, for instance).    
>>
>>MIPS supports load/ store-conditional that can be used to implement
>>userland MUTEX.
>I had looked at the MIPS spec, and didn't notice that.  Thanks for the info.  I did find the test-and-set-bit instructions, but I didn't see anything that would compare-and-swap a whole word of data.  I'll look again.
>
>-Corey




More information about the cgl_discussion mailing list