slide 31 of 35


Shared Memory Lock Code

void
s_lock(s_locktype *lock)
{
  do {
    /* Wait for lock to be open... */
    while (*lock != S_LOCKOPEN) {
      s_poll();
    }

    /* Try to grab it for us */
    *lock = IPROC;
    s_write(((uint8 *) lock), sizeof(*lock));

    /* Continue looping if we lost the race... */
  } while (*lock != IPROC);
}