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);
}