Jarek Poplawski wrote, On 11/28/2007 11:56 PM: > Jarek Poplawski wrote, On 11/28/2007 11:45 PM: > >> Larry Finger wrote, On 11/28/2007 04:41 PM: >> >>> Andreas Schwab wrote: >>>> Larry Finger <[EMAIL PROTECTED]> writes: >>>> >>>>> If a particular routine needs to lock a mutex, but it may be entered with >>>>> that mutex already locked, >>>>> would the following code be SMP safe? >>>>> >>>>> hold_lock = mutex_trylock() >>>>> >>>>> ... >>>>> >>>>> if (hold_lock) >>>>> mutex_unlock() >>>> When two CPUs may enter the critical region at the same time, what is >>>> the point of the mutex? Also, the first CPU may unlock the mutex while >>>> the second one is still inside the critical region. >>> Thank you for that answer. I think that I'm finally beginning to understand. >> Probably it would be faster without these "...", which look like >> no man's land... >> >> hold_lock = mutex_trylock() >> if (hold_lock) { >> /* SMP safe */ >> ... >> mutex_unlock() >> } else { >> /* SMP unsafe */
...But, not for sure! If our caller holds the lock and we can check this... >> ... >> /* maybe try again after some break or check */ > > > OOPS! Of course, since it can be called with this lock held, > any break is not enough: we can only check if there is a > possibility that another thread is holding the lock. > >> } >> >> Regards, >> Jarek P. > > - 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/