[Intel-xe] [PATCH v2 13/31] maple_tree: split up MA_STATE() macro
Matthew Brost
matthew.brost at intel.com
Wed May 10 00:29:44 UTC 2023
On Tue, May 09, 2023 at 03:21:56PM +0200, Thomas Hellström wrote:
>
> On 5/2/23 02:17, Matthew Brost wrote:
> > From: Danilo Krummrich <dakr at redhat.com>
> >
> > Split up the MA_STATE() macro such that components using the maple tree
> > can easily inherit from struct ma_state and build custom tree walk
> > macros to hide their internals from users.
>
> I might misunderstand the patch, but isn't the real purpose to provide an
> MA_STATE initializer,and the way to achieve that is to split up the MA_STATE
> macro?
>
This patch isn't mine and on dri-devel. Can you put your comments there?
https://patchwork.freedesktop.org/patch/530673/?series=112994&rev=4
Matt
> >
> > Example:
> >
> > struct sample_iterator {
> > struct ma_state mas;
> > struct sample_mgr *mgr;
> > };
> >
> > \#define SAMPLE_ITERATOR(name, __mgr, start) \
> > struct sample_iterator name = { \
> > .mas = MA_STATE_INIT(&(__mgr)->mt, start, 0), \
> > .mgr = __mgr, \
> > }
> >
> > \#define sample_iter_for_each_range(it__, entry__, end__) \
> > mas_for_each(&(it__).mas, entry__, end__)
> >
> > --
> >
> > struct sample *sample;
> > SAMPLE_ITERATOR(si, min);
> >
> > sample_iter_for_each_range(&si, sample, max) {
> > frob(mgr, sample);
> > }
> >
> > Signed-off-by: Danilo Krummrich <dakr at redhat.com>
> > ---
> > include/linux/maple_tree.h | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h
> > index 1fadb5f5978b..87d55334f1c2 100644
> > --- a/include/linux/maple_tree.h
> > +++ b/include/linux/maple_tree.h
> > @@ -423,8 +423,8 @@ struct ma_wr_state {
> > #define MA_ERROR(err) \
> > ((struct maple_enode *)(((unsigned long)err << 2) | 2UL))
> > -#define MA_STATE(name, mt, first, end) \
> > - struct ma_state name = { \
> > +#define MA_STATE_INIT(mt, first, end) \
> > + { \
>
> Naming: following the convention in, for example, the mutex and ww mutex
> code this should've been called
>
> __MA_STATE_INITIALIZER(),
>
> whereas the decapitalized name ma_state_init() would've been a (possibly
> inline) init function if it existed.
>
> But this all should ofc be run by the maple tree maintainer(s).
>
> FWIW, with these things addressed the change LGTM.
>
> /Thomas
>
>
> > .tree = mt, \
> > .index = first, \
> > .last = end, \
> > @@ -435,6 +435,9 @@ struct ma_wr_state {
> > .mas_flags = 0, \
> > }
> > +#define MA_STATE(name, mt, first, end) \
> > + struct ma_state name = MA_STATE_INIT(mt, first, end)
> > +
> > #define MA_WR_STATE(name, ma_state, wr_entry) \
> > struct ma_wr_state name = { \
> > .mas = ma_state, \
More information about the Intel-xe
mailing list