From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751606AbcGNRBe (ORCPT ); Thu, 14 Jul 2016 13:01:34 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:60085 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751265AbcGNRBb (ORCPT ); Thu, 14 Jul 2016 13:01:31 -0400 X-IronPort-AV: E=Sophos;i="5.28,363,1464645600"; d="scan'208";a="184852200" Date: Thu, 14 Jul 2016 19:01:26 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien To: Amitoj Kaur Chawla cc: Julia.Lawall@lip6.fr, Gilles.Muller@lip6.fr, nicolas.palix@imag.fr, mmarek@suse.com, cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Coccinelle: Script to use roundup and DIV_ROUND_UP In-Reply-To: <20160714164732.GA2963@amitoj-Inspiron-3542> Message-ID: References: <20160714164732.GA2963@amitoj-Inspiron-3542> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 14 Jul 2016, Amitoj Kaur Chawla wrote: > This script replaces manual calculations by using the predefined > macros in kernel.h, DIV_ROUND_UP and roundup for readability purposes. > > Signed-off-by: Amitoj Kaur Chawla Acked-by: Julia Lawall > --- > scripts/coccinelle/api/roundup.cocci | 215 +++++++++++++++++++++++++++++++++++ > 1 file changed, 215 insertions(+) > create mode 100644 scripts/coccinelle/api/roundup.cocci > > diff --git a/scripts/coccinelle/api/roundup.cocci b/scripts/coccinelle/api/roundup.cocci > new file mode 100644 > index 0000000..af97cd2 > --- /dev/null > +++ b/scripts/coccinelle/api/roundup.cocci > @@ -0,0 +1,215 @@ > +/// Use DIV_ROUND_UP and roundup to improve readability > +/// > +// Confidence: High > +// Copyright: (C) 2016 Amitoj Kaur Chawla > + > +virtual patch > +virtual context > +virtual org > +virtual report > + > +@haskernel@ > +@@ > + > +#include > + > +@round1 depends on haskernel && patch && !context && !org && !report@ > +expression x, y; > +@@ > + > +( > +- (((x + (y - 1)) / y) * y) > ++ roundup(x, y) > +| > +- (((x + y - 1) / y) * y) > ++ roundup(x, y) > +) > + > +@round2 depends on haskernel && patch && !context && !org && !report > + disable paren@ > +expression x, y; > +@@ > + > +- roundup((x), y) > ++ roundup(x, y) > + > +@round3 depends on haskernel && patch && !context && !org && !report > + disable paren@ > +expression x, y; > +@@ > + > +- roundup(x, (y)) > ++ roundup(x, y) > + > +@round4 depends on haskernel && patch && !context && !org && !report@ > +expression n,d; > +@@ > + > +( > +- ((n + d - 1) / d) > ++ DIV_ROUND_UP(n,d) > +| > +- ((n + (d - 1)) / d) > ++ DIV_ROUND_UP(n,d) > +) > + > +@round5 depends on haskernel && patch && !context && !org && !report > + disable paren@ > +expression n,d; > +@@ > + > +- DIV_ROUND_UP((n),d) > ++ DIV_ROUND_UP(n,d) > + > +@round6 depends on haskernel && patch && !context && !org && !report > + disable paren@ > +expression n,d; > +@@ > + > +- DIV_ROUND_UP(n,(d)) > ++ DIV_ROUND_UP(n,d) > + > +// ---------------------------------------------------------------------------- > + > +@round1_context depends on haskernel && !patch && (context || org || report)@ > +expression e, x, y; > +position j,j0; > +@@ > + > +( > +* (((x@j + (y - 1)) / y) *@e@j0 y) > +| > +* (((x@j + y - 1) / y) *@e@j0 y) > +) > + > +@round2_context depends on haskernel && !patch && (context || org || report) > + disable paren@ > +expression x, y; > +position j0; > +@@ > + > +* roundup@j0((x), y) > + > +@round3_context depends on haskernel && !patch && (context || org || report) > + disable paren@ > +expression x, y; > +position j0; > +@@ > + > +* roundup@j0(x, (y)) > + > +@round4_context depends on haskernel && !patch && (context || org || report)@ > +expression e, d, n; > +position j!=round1_context.j; > +position j0; > +@@ > + > +( > +* ((n@j + d - 1) /@e@j0 d) > +| > +* ((n@j + (d - 1)) /@e@j0 d) > +) > + > +@round5_context depends on haskernel && !patch && (context || org || report) > + disable paren@ > +expression d, n; > +position j0; > +@@ > + > +* DIV_ROUND_UP@j0((n),d) > + > +@round6_context depends on haskernel && !patch && (context || org || report) > + disable paren@ > +expression d, n; > +position j0; > +@@ > + > +* DIV_ROUND_UP@j0(n,(d)) > + > +// ---------------------------------------------------------------------------- > + > +@script:python round1_org depends on org@ > +j0 << round1_context.j0; > +@@ > + > +msg = "WARNING: Replace with roundup." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python round2_org depends on org@ > +j0 << round2_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the first argument of roundup." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python round3_org depends on org@ > +j0 << round3_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the second argument of roundup." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python round4_org depends on org@ > +j0 << round4_context.j0; > +@@ > + > +msg = "WARNING: Replace with DIV_ROUND_UP." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python round5_org depends on org@ > +j0 << round5_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the first argument of DIV_ROUND_UP." > +coccilib.org.print_todo(j0[0], msg) > + > +@script:python round6_org depends on org@ > +j0 << round6_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the second argument of DIV_ROUND_UP." > +coccilib.org.print_todo(j0[0], msg) > + > +// ---------------------------------------------------------------------------- > + > +@script:python round1_report depends on report@ > +j0 << round1_context.j0; > +@@ > + > +msg = "WARNING: Replace with roundup." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python round2_report depends on report@ > +j0 << round2_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the first argument of roundup." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python round3_report depends on report@ > +j0 << round3_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the second argument of roundup." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python round4_report depends on report@ > +j0 << round4_context.j0; > +@@ > + > +msg = "WARNING: Replace with DIV_ROUND_UP." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python round5_report depends on report@ > +j0 << round5_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the first argument of DIV_ROUND_UP." > +coccilib.report.print_report(j0[0], msg) > + > +@script:python round6_report depends on report@ > +j0 << round6_context.j0; > +@@ > + > +msg = "WARNING: Unneeded parentheses in the second argument of DIV_ROUND_UP." > +coccilib.report.print_report(j0[0], msg) > -- > 1.9.1 > >