From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1955528AbdDZC4f (ORCPT ); Tue, 25 Apr 2017 22:56:35 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:19960 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753430AbdDZC4U (ORCPT ); Tue, 25 Apr 2017 22:56:20 -0400 From: Vaishali Thakkar To: Julia.Lawall@lip6.fr Cc: Gilles.Muller@lip6.fr, nicolas.palix@imag.fr, mmarek@suse.com, linux-kernel@vger.kernel.org, cocci@systeme.lip6.fr, Vaishali Thakkar Subject: [PATCH] Coccinelle: api: Add offset_in_page.cocci Date: Wed, 26 Apr 2017 08:24:48 +0530 Message-Id: <1493175288-5279-1-git-send-email-vaishali.thakkar@oracle.com> X-Mailer: git-send-email 2.7.4 X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use of offset_in_page is preferable instead of open coding. This patch adds coccinelle script for suggesting the use of macro offset_in_page. Signed-off-by: Vaishali Thakkar --- scripts/coccinelle/api/offset_in_page.cocci | 77 +++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 scripts/coccinelle/api/offset_in_page.cocci diff --git a/scripts/coccinelle/api/offset_in_page.cocci b/scripts/coccinelle/api/offset_in_page.cocci new file mode 100644 index 0000000..d083109 --- /dev/null +++ b/scripts/coccinelle/api/offset_in_page.cocci @@ -0,0 +1,77 @@ +/// Use offset_in_page instead of duplicating its implementation +/// +// Confidence: High +// Copyright: (C) 2017 Vaishali Thakkar, Oracle. GPLv2. +// Options: --no-includes --include-headers +// Keywords: offset_in_page + +virtual patch +virtual context +virtual org +virtual report + +@r_patch depends on patch@ +expression e; +identifier i; +@@ +- unsigned long i = (unsigned long)e & ~PAGE_MASK; +... +- i ++ offset_in_page(e) + +@r1_patch depends on patch@ +expression e1; +@@ + +( +- (unsigned long)e1 & ~PAGE_MASK ++ offset_in_page(e1) +| +- (unsigned long)e1 % PAGE_SIZE ++ offset_in_page(e1) +) + +@r_context depends on !patch@ +expression e; +identifier i; +position p; +@@ + +* unsigned long i = (unsigned long)e@p & ~PAGE_MASK; +... +* i + +@r1_context depends on !patch@ +expression e1; +position p1; +@@ + +( +* (unsigned long)e1@p1 & ~PAGE_MASK +| +* (unsigned long)e1@p1 % PAGE_SIZE +) + +@script:python depends on org@ +p << r_context.p; +@@ + +coccilib.org.print_todo(p[0], "WARNING opportunity for offset_in_page") + +@script:python depends on org@ +p << r1_context.p1; +@@ + +coccilib.org.print_todo(p[0], "WARNING opportunity for offset_in_page") + +@script:python depends on report@ +p << r_context.p; +@@ + +coccilib.report.print_report(p[0], "WARNING opportunity for offset_in_page") + +@script:python depends on report@ +p << r1_context.p1; +@@ + +coccilib.report.print_report(p[0], "WARNING opportunity for offset_in_page") -- 2.7.4