lkml.org 
[lkml]   [2005]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 1/19] MUTEX: Introduce simple mutex implementation
    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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-12-15 16:55    [W:0.019 / U:14.664 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site