kernels/linux-2.4.0/include/asm-alpha/semaphore.h
/* When a reader does a release, the only significant case is when there
   was a writer waiting, and we've bumped the count to 0, then we must
   wake the writer up.  */
When a reader does a release, the only significant case is when there
was a writer waiting, and we've bumped the count to 0, then we must
wake the writer up.
When a reader does a release the only significant case is when there was a writer waiting and we ' ve bumped the count to 0 then we must wake the writer up .
static inline void __up_read(struct rw_semaphore *sem)
{
	long count;
	mb();
	count = atomic_inc_return(&sem->count);
	if (__builtin_expect(count == 0, 0))
		__rwsem_wake(sem, 0);
}
static inline void __up_read ( struct rw_semaphore * sem ) { long count ; mb ( ) ; count = atomic_inc_return ( & sem -> count ) ; if ( __builtin_expect ( count == 0 , 0 ) ) __rwsem_wake ( sem , 0 ) ; }
When a reader does a release, the only significant case is when there
was a writer waiting, and we've bumped the count to 0, then we must
wake the writer up.
When a reader does a release the only significant case is when there was a writer waiting and we ' ve bumped the count to 0 then we must wake the writer up .