_spin_trylock(3synch) _spin_trylock(3synch)
NAME
_spin_trylock - conditionally lock a spin lock
SYNOPSIS
cc [options] -Kthread file
#include <synch.h>
int _spin_trylock(spin_t *lock);
Parameters
lock pointer to spin lock to be locked
DESCRIPTION
_spin_trylock attempts once to lock the spin lock pointed to
by lock.
If lock is available, _spin_trylock will return successfully
with lock locked. If lock is already locked, _spin_trylock
immediately returns EBUSY to the caller without acquiring lock
or spinning.
lock must previously have been initialized (see _spin_init).
Return Values
_spin_trylock returns zero for success and an error number for
failure, as described below.
Errors
If one of the following conditions occurs, _spin_trylock
returns the corresponding value:
EBUSY lock is already locked.
USAGE
Because spin locks waste system resources, most applications
should use mutexes instead of spin locks for mutual exclusion.
In general, _spin_trylock, like _spin_lock is used when the
resources are held exclusively for such short durations that
the expected spin is less costly than blocking and resuming
the thread.
Spin locks should only be used when there is a guarantee that
the thread will not be preempted or blocked while holding a
spin lock.
Copyright 1994 Novell, Inc. Page 1
_spin_trylock(3synch) _spin_trylock(3synch)
The locks acquired with _spin_trylock should be released with
_spin_unlock.
Warnings
Spin locks must not be used on a uniprocessor. In the best
case, a spin lock on a uniprocessor will waste resources,
slowing down the owner of the lock; in the worst case, it will
deadlock the processor.
REFERENCES
_spin(3synch), _spin_destroy(3synch), _spin_init(3synch),
_spin_lock(3synch), _spin_unlock(3synch), synch(3synch)
Copyright 1994 Novell, Inc. Page 2