Re: [PATCH v2 13/22] rv: Add support for LTL monitors

From: Nam Cao
Date: Fri Apr 11 2025 - 10:17:35 EST


On Fri, Apr 11, 2025 at 01:17:30PM +0200, Gabriele Monaco wrote:
> On Fri, 2025-04-11 at 09:37 +0200, Nam Cao wrote:
> > +struct ltl_monitor {
> > +#ifdef CONFIG_RV_LTL_MONITOR
> > + DECLARE_BITMAP(states, RV_MAX_BA_STATES);
> > + DECLARE_BITMAP(atoms, RV_MAX_LTL_ATOM);
> > + DECLARE_BITMAP(unknown_atoms, RV_MAX_LTL_ATOM);
> > +#endif
> > +};
>
> Mmh, we have a lot of those ifdefs in quite inappropriate places, but I
> think we can do better than this.
>
> What about something like:
>
> #ifdef CONFIG_RV_LTL_MONITOR
>
> struct ltl_monitor {
> DECLARE_BITMAP(states, RV_MAX_BA_STATES);
> DECLARE_BITMAP(atoms, RV_MAX_LTL_ATOM);
> DECLARE_BITMAP(unknown_atoms, RV_MAX_LTL_ATOM);
> };
>
> static inline bool rv_ltl_valid_state(struct ltl_monitor *mon)
> {
> ...
> }
>
> static inline bool rv_ltl_all_atoms_known(struct ltl_monitor *mon)
> {
> ...
> }
>
> #else
>
> /*
> * Leave the struct empty not to use up space
> * In a later patch we could do the same for DAs..
> */
> struct ltl_monitor { };
>
> #endif

I have no preference for either, so sure!

> > diff --git a/include/rv/ltl_monitor.h b/include/rv/ltl_monitor.h
> > new file mode 100644
> > index 000000000000..78f5a1197665
> > --- /dev/null
> > +++ b/include/rv/ltl_monitor.h
>
> You hate macros don't you? :)

YES!

> Anyway I really like your approach, very neat.

Thank you! I'm very happy to have found a way to escape the macros.

> > +static struct ltl_monitor *ltl_get_monitor(struct task_struct *task)
> > +{
> > + return &task->rv[ltl_monitor_slot].ltl_mon;
> > +}
>
> This means ltl monitors only support per-task, right?

Yes.

> It shouldn't take much effort putting an ifdef chain here and defining e.g.
> PER_CPU in the header file to choose a different get_monitor.
> Or directly an ltl_monitor_implicit.h

Yes, either can work.

> I think this patch is ready without it, just trying to brainstorm how we could
> potentially extend this.
>
> I need more time to play with these, but it looks promising.

Thank you,
Nam