On Sat, 14 May 2011, Jim Cromie wrote:

> >> drivers/tty/tty_io.c: unregister_chrdev_region(MKDEV(driver->major,
> >> driver->minor_start),
> >> drivers/tty/tty_io.c:     register_chrdev_region(MKDEV(TTYAUX_MAJOR,
> >> 0), 1, "/dev/tty") < 0)
> >> drivers/tty/tty_io.c:     register_chrdev_region(MKDEV(TTYAUX_MAJOR,
> >> 1), 1, "/dev/console") < 0)
> >>
> >> Ive tried this rule to fix it:
> >>
> >> @ mdev_inline @
> >> dev_t devid;
> >> expression ct, name;
> >> expression major, minor;
> >> position p;
> >> @@
> >>
> >>  {
> >>  @p
> >>  ...
> >> - register_chrdev_region(MKDEV(major, minor), ct, name)
> >>  ...
> >>  }
> >>
> >>  @p
> >> + dev_t devid = MKDEV(major, minor);
> >>
> >> + register_chrdev_ids(devid, ct, name)
> >
> > I'm not sure what you mean here.  Are the last three lines a separate
> > rule?
> 
> 
> I hadnt intended it, but accept that it might be necessary.
> @p was supposed to mark the beginning of the inner {scope}
> where its legal to insert a local variable decl with the first +line
> 
> The "rule" (sarcastic air-quotes)
> had the ... between the beginning of scope and the -line,
> but didnt capture it for reuse.
> 
> >
> > Also, a position variable has to be attached to something, which is the
> > token that comes just before it.
> 
> does '{'  ie 'open new scope' count ?

Yes, anything except ... <... ...> <+... ...+>

> > Finally, register_chrdev_ids(devid, ct, name) is an expression, not a
> > statement (missing semicolon).
> 
> That was intended.  Some of the uses are embedded inside
> if (-here-) so wouldnt be a complete statement.

Actually, what I cited was the + code.  If you have eg:

+ foo();
+ bar()

that won't make a legal program, because a statement has to be followed by 
another statement.

julia

> > If you make a second rule
> >
> > @@
> > position rule1.p; // assuming the first was called rule1
> > @@
> >
> > {@p
> > + dev_t devid = MKDEV(major, minor);
> > + register_chrdev_ids(devid, ct, name);
> > ...
> > }
> >
> > then it should put the declaration at the top of the innermost pair of
> > braces.
> 
> ok, that seems to confirm my question:  {@p is meaningful.
> (and better written on same line - clearer intent)
> 
> > julia
> >
> 
> thanks again.  I'll go try this now,
> 
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to