Problems with semaphores, mutexes, and atomic?

Arnd Bergmann arnd at arndb.de
Mon Jun 20 04:03:06 EDT 2011


On Monday 20 June 2011 09:44:16 Dave Hylands wrote:
> On Mon, Jun 20, 2011 at 12:20 AM, saeed bishara <saeed.bishara at gmail.com> wrote:
> > On Mon, Jun 20, 2011 at 9:39 AM, Dave Hylands <dhylands at gmail.com> wrote:
> >> Hi,
> >>
> >> I wrote a small test module to test semaphores, mutexes and atomic
> >> increments, and I've tested it with CONFIG_SMP=y with 1 and 2
> >> processors and with CONFIG_SMP disabled.
> >>
> >> My test code can be found here:
> >> http://svn.hylands.org/linux/test-mutex/test-mutex.c
> >> (it's about 133 lines long).
> > yout code is not complete, the DEFINE_SEMAPHORE and DEFINE_SEMAPHORE
> > definitions are missing
> 
> I don't follow. Line 7 & 8 has
> 
> DEFINE_MUTEX( lock );
> DEFINE_SEMAPHORE( sem_lock );
> 
> and line 19 has
> 
> DEFINE_SEMAPHORE( thread_wait );

DEFINE_SEMAPHORE needs another argument, your code won't compile.

You should basically never use semaphores anyway. In order to wait
for a kthread to finish, use kthread_stop(). Do not use a semaphore
when you want a mutex.

	Arnd



More information about the linux-arm-kernel mailing list