On Wed, Jul 08, 2020 at 05:58:13PM +0200, Ahmed S. Darwish wrote: > > I even considered: > > > > #define __SEQPROP(name, prop, expr) \ > > static __always_inline __seqprop_##prop##_t \ > > __seqprop##name##_##prop(seqcount##name##_t *s) \ > > { \ > > expr; \ > > } > > > > Such that we could write: > > > > __SEQPROP(, ptr, return s) > > __SEQPROP(, preempt, return false) > > __SEQPROP(, assert, ) > > > > __SEQPROP(_##locktype, ptr, return &s->seqcount) \ > > __SEQPROP(_##locktype, preempt, return preempt) \ > > __SEQPROP(_##locktype, assert, > > __SEQCOUNT_LOCKDEP(lockdep_assert_held(s->lockmember))) \ > > > > But I figured _that_ might've been one step too far ;-) > > Initially I implemented something like this during internal, > pre-upstream, versions of this patch series. We've decided afterwards > that the macro compression level is so high that the whole thing is not > so easily understandable.
I've been reading too much tracing code lately... :-) This is only 2 levels of expansion and fits on a single screen.