diff options
author | Matthew Wilcox <matthew@wil.cx> | 2008-03-14 14:35:22 -0400 |
---|---|---|
committer | Matthew Wilcox <willy@linux.intel.com> | 2008-04-17 10:42:54 -0400 |
commit | b17170b2fac96705db3188f093f89e8e838418e4 (patch) | |
tree | 3264d8a297cff20338b606559274c36fbf663f04 /include/linux/semaphore.h | |
parent | f1241c87a16c4fe9f4f51d6ed3589f031c505e8d (diff) |
Simplify semaphore implementation
By removing the negative values of 'count' and relying on the wait_list to
indicate whether we have any waiters, we can simplify the implementation
by removing the protection against an unlikely race condition. Thanks to
David Howells for his suggestions.
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Diffstat (limited to 'include/linux/semaphore.h')
-rw-r--r-- | include/linux/semaphore.h | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h index a107aebd9148..a7125daaff90 100644 --- a/include/linux/semaphore.h +++ b/include/linux/semaphore.h @@ -15,15 +15,12 @@ /* * The spinlock controls access to the other members of the semaphore. - * 'count' is decremented by every task which calls down*() and incremented - * by every call to up(). Thus, if it is positive, it indicates how many - * more tasks may acquire the lock. If it is negative, it indicates how - * many tasks are waiting for the lock. Tasks waiting for the lock are - * kept on the wait_list. + * 'count' represents how many more tasks can acquire this semaphore. + * Tasks waiting for the lock are kept on the wait_list. */ struct semaphore { spinlock_t lock; - int count; + unsigned int count; struct list_head wait_list; }; |