lkml.org 
[lkml]   [2012]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] coccinelle: semantic patch for simple_open()


    On Sat, 3 Mar 2012, Stephen Boyd wrote:

    > Find instances of an open-coded simple_open() and replace them
    > with calls to simple_open().
    >
    > Cc: Julia Lawall <Julia.Lawall@lip6.fr>
    > Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    > ---
    >
    > This seems to eat the definition of simple_open() as well. Is there
    > a way to say only remove both the function and the reference to
    > the function so that libfs survives?

    Try identifier open_f != simple_open;

    Is there a header file that should be present?

    Your transformation rules should include depends on patch in the very
    first line, after the rule name.

    Can you make a report rule? If not, I will do it. Someone asked for that
    to always be present.

    thanks,
    julia

    > scripts/coccinelle/api/simple_open.cocci | 34 ++++++++++++++++++++++++++++++
    > 1 file changed, 34 insertions(+)
    > create mode 100644 scripts/coccinelle/api/simple_open.cocci
    >
    > diff --git a/scripts/coccinelle/api/simple_open.cocci b/scripts/coccinelle/api/simple_open.cocci
    > new file mode 100644
    > index 0000000..956d04d
    > --- /dev/null
    > +++ b/scripts/coccinelle/api/simple_open.cocci
    > @@ -0,0 +1,34 @@
    > +// This removes an open coded simple_open() function
    > +// and replaces file operations references to the function
    > +// with simple_open() instead.
    > +//
    > +
    > +virtual patch
    > +virtual context
    > +
    > +@ open @
    > +identifier open_f;
    > +identifier i, f;
    > +@@
    > +-int open_f(struct inode *i, struct file *f)
    > +-{
    > +(
    > +-if (i->i_private)
    > +-f->private_data = i->i_private;
    > +|
    > +-f->private_data = i->i_private;
    > +)
    > +-return 0;
    > +-}
    > +
    > +@ has_open depends on open @
    > +identifier fops;
    > +identifier open.open_f;
    > +@@
    > +struct file_operations fops = {
    > +...
    > +-.open = open_f,
    > ++.open = simple_open,
    > +...
    > +};
    > +
    > --
    > Sent by an employee of the Qualcomm Innovation Center, Inc.
    > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
    >
    >


    \
     
     \ /
      Last update: 2012-03-03 13:13    [W:0.032 / U:0.236 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site