summaryrefslogtreecommitdiff
path: root/include/linux/semaphore.h
diff options
context:
space:
mode:
authorMatthew Wilcox <matthew@wil.cx>2008-04-11 23:23:52 +0400
committerMatthew Wilcox <willy@linux.intel.com>2008-04-17 18:43:01 +0400
commit714493cd5468f42ca3c4f730a9c17c203abd5059 (patch)
tree9d087ad3b74cb1bd6fbd9be486fc2b361c6407dd /include/linux/semaphore.h
parentb17170b2fac96705db3188f093f89e8e838418e4 (diff)
downloadlinux-714493cd5468f42ca3c4f730a9c17c203abd5059.tar.xz
Improve semaphore documentation
Move documentation from semaphore.h to semaphore.c as requested by Andrew Morton. Also reformat to kernel-doc style and add some more notes about the implementation. Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Diffstat (limited to 'include/linux/semaphore.h')
-rw-r--r--include/linux/semaphore.h39
1 files changed, 2 insertions, 37 deletions
diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h
index a7125daaff90..9cae64b00d6b 100644
--- a/include/linux/semaphore.h
+++ b/include/linux/semaphore.h
@@ -4,8 +4,7 @@
*
* Distributed under the terms of the GNU GPL, version 2
*
- * Counting semaphores allow up to <n> tasks to acquire the semaphore
- * simultaneously.
+ * Please see kernel/semaphore.c for documentation of these functions
*/
#ifndef __LINUX_SEMAPHORE_H
#define __LINUX_SEMAPHORE_H
@@ -13,11 +12,7 @@
#include <linux/list.h>
#include <linux/spinlock.h>
-/*
- * The spinlock controls access to the other members of the semaphore.
- * 'count' represents how many more tasks can acquire this semaphore.
- * Tasks waiting for the lock are kept on the wait_list.
- */
+/* Please don't access any members of this structure directly */
struct semaphore {
spinlock_t lock;
unsigned int count;
@@ -46,41 +41,11 @@ static inline void sema_init(struct semaphore *sem, int val)
#define init_MUTEX(sem) sema_init(sem, 1)
#define init_MUTEX_LOCKED(sem) sema_init(sem, 0)
-/*
- * Attempt to acquire the semaphore. If another task is already holding the
- * semaphore, sleep until the semaphore is released.
- */
extern void down(struct semaphore *sem);
-
-/*
- * As down(), except the sleep may be interrupted by a signal. If it is,
- * this function will return -EINTR.
- */
extern int __must_check down_interruptible(struct semaphore *sem);
-
-/*
- * As down_interruptible(), except the sleep may only be interrupted by
- * signals which are fatal to this process.
- */
extern int __must_check down_killable(struct semaphore *sem);
-
-/*
- * As down(), except this function will not sleep. It will return 0 if it
- * acquired the semaphore and 1 if the semaphore was contended. This
- * function may be called from any context, including interrupt and softirq.
- */
extern int __must_check down_trylock(struct semaphore *sem);
-
-/*
- * As down(), except this function will return -ETIME if it fails to
- * acquire the semaphore within the specified number of jiffies.
- */
extern int __must_check down_timeout(struct semaphore *sem, long jiffies);
-
-/*
- * Release the semaphore. Unlike mutexes, up() may be called from any
- * context and even by tasks which have never called down().
- */
extern void up(struct semaphore *sem);
#endif /* __LINUX_SEMAPHORE_H */