Messages in this thread | | | Subject | Re: [PATCH 1/6] mlock: only hold mmap_sem in shared mode when faulting in pages | From | Peter Zijlstra <> | Date | Fri, 10 Dec 2010 12:12:49 +0100 |
| |
On Thu, 2010-12-09 at 22:39 -0800, Michel Lespinasse wrote: > I think rwsem_is_contended() actually sounds better than fiddling with > constants, but OTOH maybe the mlock use case is not significant enough > to justify introducing that new API.
Right, so I don't see the problem with _is_contended() either. In fact, I introduce mutex_is_contended() in the mmu_preempt series to convert existing (spin) lock break tests.
If you want to do lock-breaks like cond_resched_lock() all you really have is *_is_contended(), sleeping locks will schedule unconditional.
int cond_break_mutex(struct mutex *mutex) { int ret = 0; if (mutex_is_contended(mutex)) { mutex_unlock(mutex); ret = 1; mutex_lock(mutex); } return 1; }
Or more exotic lock breaks, like the mmu-gather stuff, which falls out of its nested page-table loops and restarts the whole affair.
| |