From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754223AbdEEOC1 (ORCPT ); Fri, 5 May 2017 10:02:27 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:21145 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751029AbdEEOCZ (ORCPT ); Fri, 5 May 2017 10:02:25 -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 v2] Coccinelle: api: Add offset_in_page.cocci Date: Fri, 5 May 2017 19:30:50 +0530 Message-Id: <1493992850-13283-1-git-send-email-vaishali.thakkar@oracle.com> X-Mailer: git-send-email 2.7.4 X-Source-IP: aserv0021.oracle.com [141.146.126.233] 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 --- Changes since v1: - Add parenthesis around rule for patch mode to avoid extra parenthesis in end result --- 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..4034864 --- /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