Re: [PATCH 1/19] MUTEX: Introduce simple mutex implementation

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

 



Alan Cox writes:
 > On Iau, 2005-12-15 at 16:41 +0300, Nikita Danilov wrote:
 > > But this change is about fixing bugs: mutex assumes that
 > > 
 > >  - only owner can unlock, and
 > > 
 > >  - owner cannot lock (immediate self-deadlock).
 > 
 > So add mutex_up/mutex_down that use the same semaphores but do extra
 > checks if lock debugging is enabled. All you need is an owner field for
 > debugging.

And to convert almost all calls to down/up to mutex_{down,up}. At which
point, it no longer makes sense to share the same data-type for
semaphore and mutex.

Also, (as was already mentioned several times) having separate data-type
for mutex makes code easier to understand, as it specifies intended
usage.

To avoid duplicating code, mutex can be implemented on top of semaphore,
like

struct mutex {
        struct semaphore sema;
#ifdef DEBUG_MUTEX
        void *owner;
#endif
};

or something similar.

 > 
 > Now generate a trace dump on up when up and to check for sleeping on a
 > lock you already hold (for both sem and mutex).

Sleeping on a semaphore "held" by the current thread is perfectly
reasonable usage of a generic counting semaphore, as it can be upped by
another thread.

 > 
 > Alan

Nikita.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux