lkml.org 
[lkml]   [2005]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: 2.6.11-rc1-mm1
    From
    Karim Yaghmour writes:
    >
    > Christoph Hellwig wrote:
    > > the lockless mode is really just loops around cmpxchg. It's spinlocks
    > > reinvented poorly.

    Christoph,
    Sadly they're not the same, atomic operations provide a set of
    functionality that simple spin locks do not give you. Consider two
    different processes each executing the following code

    int global_val;

    modify_val_spin()
    {
    acquire_spin_lock()
    // calculate some_value based on global_val
    // for example c=global_val; if (c%0) some_value=10; else some_value=20;
    global_val = global_val + some_value
    release_spin_lock()
    }

    modify_val_atomic()
    {
    do
    // calculate some_value based on global_val
    // for example c=global_val; if (c%0) some_value=10; else some_value=20;
    global_val = global_val + some_value
    while (compare_and_store(global_val, , ))
    }

    What's the difference. The deal is if two processes execute this code
    simultaneously and one gets interrupted in the middle of modify_val_spin,
    then the other wastes its entire quantum spinning for the lock. In the
    modify_val_atomic if one process gets interrupted, no problem, the other
    process can proceed through, then when the first one runs again the CAS
    will fail, and it will go around the loop again. Now imagine it was the
    kernel involved...

    I don't claim to have all the answers and am happy to have discussion on
    something, but the attitude expressed by "It's spinlocks reinvented
    poorly." is not conducive to a useful exchange even if you were correct.

    >
    > I beg to differ. You have to use different spinlocks depending on
    > where you are:
    > - serving user-space
    > - bh-derivatives
    > - irq
    >
    > lockless is the same primitive regardless of your current state,
    > it's not the same as spinlocks.
    >
    > Karim
    > --
    > Author, Speaker, Developer, Consultant
    > Pushing Embedded and Real-Time Linux Systems Beyond the Limits
    > http://www.opersys.com || karim@opersys.com || 1-866-677-4546

    Robert Wisniewski
    The K42 MP OS Project
    http://www.research.ibm.com/K42/
    bob@watson.ibm.com
    -
    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-03-22 14:09    [W:3.158 / U:0.724 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site