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 */ ... /* maybe try again after some break or check */ } 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/