Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 285831
b: refs/heads/master
c: 22e0059
h: refs/heads/master
i:
  285829: bd6cd95
  285827: 2ccac6e
  285823: ecd5eff
v: v3
  • Loading branch information
Julia Lawall authored and Michal Marek committed Jan 14, 2012
1 parent 4a57e16 commit c07eb6b
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f95ab20972cfefa8ee5428d6c3afd4cb8eacabf4
refs/heads/master: 22e0059af301ec163d563c3590d2277c2a557d4f
105 changes: 105 additions & 0 deletions trunk/scripts/coccinelle/api/devm_request_and_ioremap.cocci
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
/// Reimplement a call to devm_request_mem_region followed by a call to ioremap
/// or ioremap_nocache by a call to devm_request_and_ioremap.
/// Devm_request_and_ioremap was introduced in
/// 72f8c0bfa0de64c68ee59f40eb9b2683bffffbb0. It makes the code much more
/// concise.
///
///
// Confidence: High
// Copyright: (C) 2011 Julia Lawall, INRIA/LIP6. GPLv2.
// Copyright: (C) 2011 Gilles Muller, INRIA/LiP6. GPLv2.
// URL: http://coccinelle.lip6.fr/
// Comments:
// Options: -no_includes -include_headers

virtual patch
virtual org
virtual report
virtual context

@nm@
expression myname;
identifier i;
@@

struct platform_driver i = { .driver = { .name = myname } };

@depends on patch@
expression dev,res,size;
@@

-if (!devm_request_mem_region(dev, res->start, size,
- \(res->name\|dev_name(dev)\))) {
- ...
- return ...;
-}
... when != res->start
(
-devm_ioremap(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
|
-devm_ioremap_nocache(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
)
... when any
when != res->start

// this rule is separate from the previous one, because a single file can
// have multiple values of myname
@depends on patch@
expression dev,res,size;
expression nm.myname;
@@

-if (!devm_request_mem_region(dev, res->start, size,myname)) {
- ...
- return ...;
-}
... when != res->start
(
-devm_ioremap(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
|
-devm_ioremap_nocache(dev,res->start,size)
+devm_request_and_ioremap(dev,res)
)
... when any
when != res->start


@pb depends on org || report || context@
expression dev,res,size;
expression nm.myname;
position p1,p2;
@@

*if
(!devm_request_mem_region@p1(dev, res->start, size,
\(res->name\|dev_name(dev)\|myname\))) {
...
return ...;
}
... when != res->start
(
*devm_ioremap@p2(dev,res->start,size)
|
*devm_ioremap_nocache@p2(dev,res->start,size)
)
... when any
when != res->start

@script:python depends on org@
p1 << pb.p1;
p2 << pb.p2;
@@
cocci.print_main("INFO: replace by devm_request_and_ioremap",p1)
cocci.print_secs("",p2)
@script:python depends on report@
p1 << pb.p1;
p2 << pb.p2;
@@
msg = "INFO: devm_request_mem_region followed by ioremap on line %s can be replaced by devm_request_and_ioremap" % (p2[0].line)
coccilib.report.print_report(p1[0],msg)

0 comments on commit c07eb6b

Please sign in to comment.