From patchwork Sun Dec 3 02:00:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Nan X-Patchwork-Id: 120443 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp2903916qgn; Sat, 2 Dec 2017 18:03:47 -0800 (PST) X-Google-Smtp-Source: AGs4zMbGMERtEDpuuqy4lhytRnNDWAAtkFycigLRGkxndbce96tbrK8votZ+Nq4zeLC49svQp+jp X-Received: by 10.99.119.73 with SMTP id s70mr10007158pgc.451.1512266627609; Sat, 02 Dec 2017 18:03:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512266627; cv=none; d=google.com; s=arc-20160816; b=ieA8jiNKmH+ZfFvVYt8iK4/+wTzcAjv+rFYNnoH26JxkHLGdpO0jZsmEv+k7o0S6Eh yj0fnDMmQumK06f0k0B+SCnUpL25JKY0iIjY5oDdDvSUQT30S2dO0aZyJuCm2ZfhebOk +SwaCPPKqDOTBH6zHTUwTlNorlVA4/VlTpRQ4PA1Lh4teMIMWwn0YYCj7DABastkBO0U WSJ5GKsFupaMxVtb7BVV0WktFJ9kcqFySjnHiNN2NeyqnDkwWM8NwbYELNJEfwWjJ9te PiRQLbEBKAqZ9OiivwmLpbCFCE9pCwiTAOayrVNTZPqUHWkro0MCSQ+dwGqpiDRjoY6Y EzIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=0kZxEGJtzZ699v04BTEkp5dy1vn8zJb2ZBCfssruOOQ=; b=ajIfTpEyUO14l3G48MxcTvSnsnrfeMwjMZ1Z8DDSYHVgdejmZKhCXUgHvaBt+2LS24 iwefNApHyTbgXh6oEuBDdhkifSmPiuueArvddpiBElKaj46qRp6zaof6BrPmLhKHDsnP ++2rot+gB7/tZs0fqr96G9DGE3AbbN06gM5YVXzYafgfiyv7Tz6BoP+2o+NjG+KAM9no 7UpU8kkKKeCz3MF8OUtuAZgwyq87eZjk4gFop4QkyFrh6eHjU5G0Q0Fx4XtzbzR4kBx2 Ti69fsjTBY55XqLV+MGR3go25TkU2EFoTL4obSoLoF7UaD47oH1HiMxp3DUMJ2lthSdf n3ag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q1si3391897plb.29.2017.12.02.18.03.47; Sat, 02 Dec 2017 18:03:47 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752757AbdLCCDp (ORCPT + 28 others); Sat, 2 Dec 2017 21:03:45 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:2194 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751850AbdLCCDK (ORCPT ); Sat, 2 Dec 2017 21:03:10 -0500 Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id E98F27E6F6A83; Sun, 3 Dec 2017 10:02:50 +0800 (CST) Received: from linux-4hy3.site (10.107.193.248) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.361.1; Sun, 3 Dec 2017 10:02:42 +0800 From: Wang Nan To: , , , , CC: Wang Nan Subject: [PATCH v2 5/8] perf tools: Remove overwrite and check_messup from mmap read Date: Sun, 3 Dec 2017 02:00:41 +0000 Message-ID: <20171203020044.81680-6-wangnan0@huawei.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20171203020044.81680-1-wangnan0@huawei.com> References: <20171203020044.81680-1-wangnan0@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org All perf_mmap__read_forward() read from read-write ring buffer, so no need check_messup. Reading from backward ring buffer doesn't require check_messup because it never mess up. Cleanup arguments lists. Signed-off-by: Wang Nan --- tools/perf/util/evlist.c | 2 +- tools/perf/util/mmap.c | 28 ++++------------------------ tools/perf/util/mmap.h | 2 +- 3 files changed, 6 insertions(+), 26 deletions(-) -- 2.10.1 diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index a59134f..68c1f95 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -711,7 +711,7 @@ union perf_event *perf_evlist__mmap_read_forward(struct perf_evlist *evlist, int * No need for read-write ring buffer: kernel stop outputting when * it hit md->prev (perf_mmap__consume()). */ - return perf_mmap__read_forward(md, false); + return perf_mmap__read_forward(md); } union perf_event *perf_evlist__mmap_read_backward(struct perf_evlist *evlist, int idx) diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index 703ed41..3f262e7 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -21,33 +21,13 @@ size_t perf_mmap__mmap_len(struct perf_mmap *map) } /* When check_messup is true, 'end' must points to a good entry */ -static union perf_event *perf_mmap__read(struct perf_mmap *map, bool check_messup, +static union perf_event *perf_mmap__read(struct perf_mmap *map, u64 start, u64 end, u64 *prev) { unsigned char *data = map->base + page_size; union perf_event *event = NULL; int diff = end - start; - if (check_messup) { - /* - * If we're further behind than half the buffer, there's a chance - * the writer will bite our tail and mess up the samples under us. - * - * If we somehow ended up ahead of the 'end', we got messed up. - * - * In either case, truncate and restart at 'end'. - */ - if (diff > map->mask / 2 || diff < 0) { - fprintf(stderr, "WARNING: failed to keep up with mmap data.\n"); - - /* - * 'end' points to a known good entry, start there. - */ - start = end; - diff = 0; - } - } - if (diff >= (int)sizeof(event->header)) { size_t size; @@ -89,7 +69,7 @@ static union perf_event *perf_mmap__read(struct perf_mmap *map, bool check_messu return event; } -union perf_event *perf_mmap__read_forward(struct perf_mmap *map, bool check_messup) +union perf_event *perf_mmap__read_forward(struct perf_mmap *map) { u64 head; u64 old = map->prev; @@ -102,7 +82,7 @@ union perf_event *perf_mmap__read_forward(struct perf_mmap *map, bool check_mess head = perf_mmap__read_head(map); - return perf_mmap__read(map, check_messup, old, head, &map->prev); + return perf_mmap__read(map, old, head, &map->prev); } union perf_event *perf_mmap__read_backward(struct perf_mmap *map) @@ -138,7 +118,7 @@ union perf_event *perf_mmap__read_backward(struct perf_mmap *map) else end = head + map->mask + 1; - return perf_mmap__read(map, false, start, end, &map->prev); + return perf_mmap__read(map, start, end, &map->prev); } void perf_mmap__read_catchup(struct perf_mmap *map) diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h index 2c3d291..d640273 100644 --- a/tools/perf/util/mmap.h +++ b/tools/perf/util/mmap.h @@ -86,7 +86,7 @@ static inline void perf_mmap__write_tail(struct perf_mmap *md, u64 tail) pc->data_tail = tail; } -union perf_event *perf_mmap__read_forward(struct perf_mmap *map, bool check_messup); +union perf_event *perf_mmap__read_forward(struct perf_mmap *map); union perf_event *perf_mmap__read_backward(struct perf_mmap *map); int perf_mmap__push(struct perf_mmap *md, bool backward,