Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

lock(2) [plan9 man page]

LOCK(2) 							System Calls Manual							   LOCK(2)

NAME
lockinit, lock, canlock, unlock - shared memory spin lock SYNOPSIS
#include <lock.h> void lockinit(void); void lock(Lock *lk); int canlock(Lock *lk); void unlock(Lock *lk); /* Alef only */ adt Lock { void lock(*Lock); void unlock(*Lock); int canlock(*Lock); }; adt QLock { void lock(*Lock); void unlock(*Lock); int canlock(*Lock); }; adt RWlock { void Rlock(*RWlock); void Runlock(*RWlock); void Wlock(*RWlock); void Wunlock(*RWlock); }; adt Ref { int inc(*Ref); int dec(*Ref); int ref(*Ref); }; DESCRIPTION
These routines are used by processes sharing memory to synchronize using spin locks. Lockinit must be called before the first use of the other routines. Lock blocks until the lock has been obtained. Canlock is non-blocking. It tries to obtain a lock and returns a non-zero value if it was successful, 0 otherwise. Unlock releases a lock. Alef Alef locks have similar functionality, but no special initialization is required. The ADT Lock has functions lock, unlock, and canlock, just like locks in C. QLocks have the same interface but are not spin locks; instead if the lock is taken QLock.lock will suspend execu- tion of the calling task until it is released. Although Locks are the more primitive lock, their use is discouraged and even erroneous for most purposes. For example, Locks cannot syn- chronize between tasks in the same proc. Use QLocks instead. RWlocks manage access to a data structure that has distinct readers and writers. RWlock.Rlock grants read access; RWlock.Runlock releases it. RWlock.Wlock grants write access; RWlock.Wunlock releases it. There may be any number of simultaneous readers, but only one writer. Moreover, if write access is granted no one may have read access until write access is released. Refs manage reference counters. Ref.inc increments the counter and returns the old value; Ref.dec decrements the counter and returns the new value. Ref.ref returns the current value. SOURCE
/sys/src/liblock SEE ALSO
rfork in fork(2) LOCK(2)

Check Out this Related Man Page

plock(3C)						   Standard C Library Functions 						 plock(3C)

NAME
plock - lock or unlock into memory process, text, or data SYNOPSIS
#include <sys/lock.h> int plock(int op); DESCRIPTION
The plock() function allows the calling process to lock or unlock into memory its text segment (text lock), its data segment (data lock), or both its text and data segments (process lock). Locked segments are immune to all routine swapping. The effective user ID of the calling process must be super-user to use this call. The plock() function performs the function specified by op: PROCLOCK Lock text and data segments into memory (process lock). TXTLOCK Lock text segment into memory (text lock). DATLOCK Lock data segment into memory (data lock). UNLOCK Remove locks. RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error. ERRORS
The plock() function fails and does not perform the requested operation if: EAGAIN Not enough memory. EINVAL The op argument is equal to PROCLOCK and a process lock, a text lock, or a data lock already exists on the calling process; the op argument is equal to TXTLOCK and a text lock or a process lock already exists on the calling process; the op argument is equal to DATLOCK and a data lock or a process lock already exists on the calling process; or the op argument is equal to UNLOCK and no lock exists on the calling process. EPERM The {PRIV_PROC_LOCK_MEMORY} privilege is not asserted in the effective set of the calling process. USAGE
The mlock(3C) and mlockall(3C) functions are the preferred interfaces for process locking. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
exec(2), exit(2), fork(2), memcntl(2), mlock(3C), mlockall(3C), attributes(5) SunOS 5.10 22 Mar 2004 plock(3C)
Man Page