Re: [PATCH 1/19] MUTEX: Introduce simple mutex implementation
From: Nikita Danilov
Date: Thu Dec 15 2005 - 10:51:47 EST
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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/