Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [patch V3 50/64] locking/rtmutex: Extend the rtmutex core to support ww_mutex | Date | Fri, 06 Aug 2021 13:19:15 +0200 |
| |
On Fri, Aug 06 2021 at 13:00, Peter Zijlstra wrote:
> On Thu, Aug 05, 2021 at 05:13:50PM +0200, Thomas Gleixner wrote: >> static __always_inline bool __waiter_less(struct rb_node *a, const struct rb_node *b) >> { >> - return rt_mutex_waiter_less(__node_2_waiter(a), __node_2_waiter(b)); > > Given ^ > >> + struct rt_mutex_waiter *aw = __node_2_waiter(a); >> + struct rt_mutex_waiter *bw = __node_2_waiter(b); >> + >> + if (rt_mutex_waiter_less(aw, bw)) >> + return 1; > > We can, with this new build_ww_mutex(), do: > > if (!build_ww_mutex()) > return 0; > > here, to preserve the old behaviour. > >> + if (rt_mutex_waiter_less(bw, aw)) >> + return 0; >> + >> + /* NOTE: relies on waiter->ww_ctx being set before insertion */ >> + if (build_ww_mutex() && aw->ww_ctx) { > > Then it can go away here.
Pretty obvious. Indeed.
| |