IEEE 1394 bus programming

Back to /wiki


Documentation: []
Function reference: []


What does the "raw1394_start_lock64" function that "initiates a 64-bit compare-swap lock transaction" actually do?

This is needed for atomic manipulations of registers. This transaction contains an "argument" and a "data" value. Both values and the targeted register are 64 bits wide.

  • If the argument matches the old value of the register, data gets written into the register.
  • Otherwise, the register remains unchanged.

The old value of the register is returned in the transaction response.

This kind of access is in other contexts also known as compare-exchange function. It allows a register to be consistently updated by multiple concurrent requesters.