Re: recursive locking in linux?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



El Mon, Mar 19, 2007 at 06:04:38PM +0530 Daniel Rodrick ha dit:

> On 3/19/07, Momchil Velikov <chill@xxxxxxxxx> wrote:
> >Daniel Rodrick wrote:
> >> I may be wrong, but from what I understand, the count passed in the
> >> semaphore initialization
> >>
> >> sema_init(sem, count);
> >>
> >> is the number of threads that are allowed to hold the semaphore
> >> simultaneously (no of threads that are allowed to enter their critical
> >> sections simultaneously). So can't a semaphore be actually held
> >> recursively?
> >
> >Semaphores are not "held". See below.
> >
> >> Also, the only difference I could find between a semaphore and mutes
> >> is that a mutex is a specail and most common form of semaphore where
> >> only one thread can get it at a time. Are there any other differences?
> >
> >The difference is that a semaphore has no owner.  Neither semaphores nor
> >mutexes are a "special form" of the other - they are fundamentally
> >distinct mechanisms.
> >
> 
> But I see mutexes implemented using semaphores only:
> 
> #define __DECLARE_SEMAPHORE_GENERIC(name,count) \
>        struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
> 
> #define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
> #define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)

that's the deprecated mutex API based on semaphores, AFAIK the one
described in http://lwn.net/Articles/167034/ should be used

m.

-- 
  Si deseas mantener tu libertad, debes estar preparado para defenderla
                          (Richard Stallman)
                                                                 .''`.
    using free software / Debian GNU/Linux | http://debian.org  : :'  :
                                                                `. `'`
gpg --keyserver keys.indymedia.org --recv-keys B9A88F6F           `-

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux