Hi all,

I'm very new to coccinelle, so sorry if the question is irrelevant or was 
already asked.

I'm trying to add a new argument to a function which has a couple of callbacks.

The original function is:

static inline int cpuhp_setup_state(enum cpuhp_state state,
                                    int (*startup)(unsigned int cpu),
                                    int (*teardown)(unsigned int cpu));

I would like to pass a private pointer when setting the state and then pass
this pointer to the 'startup' / 'teardown' callbacks where there signature will 
be
different and all call sites must change their callbacks signature also.

I tried to first add the new argument to the function, in order to have:

static inline int cpuhp_setup_state(enum cpuhp_state state,
                                    int (*startup)(unsigned int cpu),
                                    int (*teardown)(unsigned int cpu),
                                    void *data);

... with the rule:

@rule@
identifier cpuhp_setup_state;
identifier state, name, startup, teardown, data;
@@

static inline int cpuhp_setup_state(enum cpuhp_state state,
                                    const char *name,
                                    int (*startup)(unsigned int cpu),
                                    int (*teardown)(unsigned int cpu),
                                    void *data)
{
        ...
}

@@
identifier rule.cpuhp_setup_state;
expression E1, E2, E3, E4;
@@

cpuhp_setup_state(E1, E2, E3, E4
+                 , NULL
                 )

But the parsing gives:

...

cpuhp_setup_state(E1, E2, E3, E4
                    >>> , NULL
                  )


grep tokens
cpuhp_state || cpu
No query
warning: line 8: should cpu be a metavariable?
warning: line 9: should cpu be a metavariable?

And I don't have the expected result, well actually I have no output.

Can someone give me some hints or help to implement this change ?

Thanks in advance

  -- Daniel
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to