From patchwork Fri Aug 25 02:39:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364940 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B3714C6FA8F for ; Fri, 25 Aug 2023 02:41:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4Ph2kc8M/u8XGcZajB/i39ZGjKC/WzbFFkkwpPG4KrY=; b=ujgMZMLqZlNyCo NK4eY+U38lz0WlZf9eKsHxyYgMMHwaJSCmkPbRmKe75+7pgsR85bXumBB+V57jwyu8F3irwVCqTvN C97cfQoYAz/7zoV79J1LlDGHV0txkZcYJmN8p+00nRfJgKXcAuQtqRDhhHeAcumU6GW/Lm26Pm2R6 nfW1UDM7Rp5HMfmwogngY9UiOK17udlf8WBVOIxvad54VFM0UBPAX5zV3LJA8izR7Cz92f+yRNDyu XdggcRAUDPCwVJxpdAnZNJKE8SDJYwirwI9hxUgUctcAnpB0PVSL6ZeUV/ZuU8QJUxBhQPPgFefER vzXvnLOJM0DR6Z0nYYuA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkc-0048NH-1Y; Fri, 25 Aug 2023 02:40:42 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkS-0048In-0p for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:33 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d782a2ba9f9so1180215276.0 for ; Thu, 24 Aug 2023 19:40:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931230; x=1693536030; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=gleOx1R6bSswKzh9EuhLGrWijl71cST/VqhPvXlvs9U=; b=Cqu+Mpf9iSpDeRLvOSI3IVWLQssJ9tYBK0e1ZWdNFAycIwrIj1MxpQ1quvIleMZJB6 Drb5sCcEu+fxJtnG5dfoegKcS4mWhHZ523Dohm1QrgK8uHjNxutRRM2W/taS217gq+oI kHkSwnzlHIvea+nMmyhch28gwXtZtS4Q+i0/r1FVJ8rgPQ3Zgmo3DJUDTHva04iSuZ7j Pwog+gL+Ygwt5ML1nXOfFqaQvFCsUOw036pa3OrChBdWXOmot7F0ZhRNIpy1NkakWboa IV/zDZC3ynvtqUUfHShJiG/JbJzUmp13jVoZAVuTdnxcp6qj4ryVFvEGNKWJatT75FYw 4IyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931230; x=1693536030; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gleOx1R6bSswKzh9EuhLGrWijl71cST/VqhPvXlvs9U=; b=PKr4R7t6FVJOjrOyKJc2t7188pXD1ppAOknYCD9pQGDt00ETFdT4Q6l5N6vnL6XsUF JN3mntVjGl+aTSOQdN4KhWs3knD5Om0oA5I5k7RQ9EEencKdPhffLtnkIm+1jTmHUs0P i/+eNVpsfd5wzK4GUaj+FlyQpAux/irC6riO+89PGkezUZ1NpdDztAKUkngD7t7tspIr E4xm+V57m7ARlq5E/SsQ1Lh8c8tfLet/K263aRaJ24u8rqchvgGTWdAHx9GwOOb86fT/ VszVgo9N70a+LOjD/p14z0fSE2PUofTU3/9Zsa7Ixrmm0ku6+5uUs2cvA7md6OyYT2Do BAdw== X-Gm-Message-State: AOJu0YyIBHvXHudFDIoz1uuJSWfaEHcSA42hhBVR6C8WlQkkkUbJYZc2 MfUS74shdA9z0cyQpRM+4OqFg06hya17 X-Google-Smtp-Source: AGHT+IFi5wnjwMO3TOfHdkD/PK6fZ23/bjTAUd5coQ8Pvt3nE13DfLfuhsCiqnLwncG7b5sT0DyY9knVVA03 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a05:6902:691:b0:bd5:dc2d:9d7f with SMTP id i17-20020a056902069100b00bd5dc2d9d7fmr410342ybt.4.1692931229945; Thu, 24 Aug 2023 19:40:29 -0700 (PDT) Date: Thu, 24 Aug 2023 19:39:57 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-2-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 1/6] perf header: Fix missing PMU caps From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194032_295528_23BE1D2D X-CRM114-Status: GOOD ( 16.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org PMU caps are written as HEADER_PMU_CAPS or for the special case of the PMU "cpu" as HEADER_CPU_PMU_CAPS. As the PMU "cpu" is special, and not any "core" PMU, the logic had become broken and core PMUs not called "cpu" were not having their caps written. This affects ARM and s390 non-hybrid PMUs. Simplify the PMU caps writing logic to scan one fewer time and to be more explicit in its behavior. Reported-by: Wei Li Fixes: 178ddf3bad98 ("perf header: Avoid hybrid PMU list in write_pmu_caps") Signed-off-by: Ian Rogers --- tools/perf/util/header.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 52fbf526fe74..13c71d28e0eb 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -1605,8 +1605,15 @@ static int write_pmu_caps(struct feat_fd *ff, int ret; while ((pmu = perf_pmus__scan(pmu))) { - if (!pmu->name || !strcmp(pmu->name, "cpu") || - perf_pmu__caps_parse(pmu) <= 0) + if (!strcmp(pmu->name, "cpu")) { + /* + * The "cpu" PMU is special and covered by + * HEADER_CPU_PMU_CAPS. Note, core PMUs are + * counted/written here for ARM, s390 and Intel hybrid. + */ + continue; + } + if (perf_pmu__caps_parse(pmu) <= 0) continue; nr_pmu++; } @@ -1619,23 +1626,17 @@ static int write_pmu_caps(struct feat_fd *ff, return 0; /* - * Write hybrid pmu caps first to maintain compatibility with - * older perf tool. + * Note older perf tools assume core PMUs come first, this is a property + * of perf_pmus__scan. */ - if (perf_pmus__num_core_pmus() > 1) { - pmu = NULL; - while ((pmu = perf_pmus__scan_core(pmu))) { - ret = __write_pmu_caps(ff, pmu, true); - if (ret < 0) - return ret; - } - } - pmu = NULL; while ((pmu = perf_pmus__scan(pmu))) { - if (pmu->is_core || !pmu->nr_caps) + if (!strcmp(pmu->name, "cpu")) { + /* Skip as above. */ + continue; + } + if (perf_pmu__caps_parse(pmu) <= 0) continue; - ret = __write_pmu_caps(ff, pmu, true); if (ret < 0) return ret; From patchwork Fri Aug 25 02:39:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364939 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5691DC88CB2 for ; Fri, 25 Aug 2023 02:41:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Rj902mFRFkATQ2wBXZ3/JQyDzCPE0+xoSsFq2Z0Amd4=; b=mltW9wiSBHE8BY cXh3vIvOi6N6oevu7sPqLp0JBSoZmIjY/WCRNS94nwc4GVhjL6BQ1FJ40TCTX63mj+8Wh1Fi26J6g kJcyZWaqA13U/mm6i9ppd/zCDt4gbTQfYuZ37dsDp7D3MXnaMHfau+lXCy4Y8X/aYiGCyINaY8XGl vL8WWaJvHLB6eUPvECaYeX2HcCLub1gVcazeXnfwke6IpnhAWjv7KSZ+qTbdX4DnsZV/zNLbzu9Zz pGTg+AnUUpjXIDXoUKvNeB5vTVwGttlA3Ga2G16B+z/XxvDK3qd+wlJdham2LW3ibJfR1FM99+K/r 0s4E6GF11jR9UQVZMnlA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkc-0048NW-3A; Fri, 25 Aug 2023 02:40:42 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkT-0048Ja-15 for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:35 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-59294c55909so6856817b3.0 for ; Thu, 24 Aug 2023 19:40:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931232; x=1693536032; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=+0v6ZH91cRAWfBdufQXOgsVVfAmsDZGVPdtey97XoEE=; b=Btecnss5l4Wq7jLOEK/LGD64SV/s8pa43YQY1AffFs9TS+T6JdbuInYgZcTahf9+zo oxYgnfuFdzO79SpJh+LSgjXZtNjVxz7N8yTLT5TijYnZY8T8ORIAmgJVgCiNWlBj1oNX b2laVEfRwkZQlwtvYtoK+ybe1tT1I1cBfb8JYmc7zFfU+ENsOQLbBFdnvkWViObDswvk xz/BJiXEmam0+ZuFOS6uGYpoiqSmbk/ezm5pwW4aPP+dGLk421rA7WJvN0x9bqAkoSXq JLi5UMsQ1SjF1jmZ8OxHVl2pkGkYykxnp9R42abYgG5iFqDCQK/ZEXVpkfNIKaFLZtIw HOww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931232; x=1693536032; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+0v6ZH91cRAWfBdufQXOgsVVfAmsDZGVPdtey97XoEE=; b=RL/lTkc7SbAFMvtGmDajIBw9vyxYqiDzorh+qNHAeAS0vtKmH+g46pRnb2e1dKsCX8 fEmHOZ7LZ7reSvALIG0KYptLjj3fk81V097MIFwj0SlCQONRJgId1/H1PU6pdBZgtWAl qa3o0TgD3zx6O92+/9bhnpytiALK7GyNR6YEsbcS9ac8gpcJdt+VDWprFBokSrbuD86K Xoc+WrvE9GOe8mOAPtn2qyOUmq9MpTWsteozvlW4M2ZAW622uw3+ADrpF+dh1+iV98p8 yu2Q+aaZ5O4JprBIbn4KvIqtV6dFvU+5S5r9RhgSliRegRyfbTWGUJ9KNwphl42QobZK K3Ew== X-Gm-Message-State: AOJu0YyWwit4pwk6WbandNU5DndcErv/CwNI8+anxJ/Ld/momybn+FWv VAaH7Odvl2DIE6UxUEkk4PEgmNMwWuJc X-Google-Smtp-Source: AGHT+IHTePzpW1ONhHhLRkqg7uW8qhFGUhV+RL2W0FxSqbDMmfOWE3o3zh1BgpGWXmGcIcGYlGfHSapRZQiD X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a25:3c87:0:b0:d78:215f:ba5f with SMTP id j129-20020a253c87000000b00d78215fba5fmr118274yba.9.1692931232240; Thu, 24 Aug 2023 19:40:32 -0700 (PDT) Date: Thu, 24 Aug 2023 19:39:58 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-3-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 2/6] perf pmu: Remove logic for PMU name being NULL From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194033_398394_5FCA8D5A X-CRM114-Status: GOOD ( 24.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The PMU name could be NULL in the case of the fake_pmu. Initialize the name for the fake_pmu to "fake" so that all other logic can assume it is initialized. Add a const to the type of name so that a literal can be used to avoid additional initialization code. Propagate the cost through related routines and remove now unnecessary "(char *)" casts. Doing this located a bug in builtin-list for the pmu_glob that was missing a strdup. Signed-off-by: Ian Rogers --- tools/perf/arch/arm64/util/mem-events.c | 2 +- tools/perf/arch/powerpc/util/mem-events.c | 6 +++--- tools/perf/arch/x86/util/mem-events.c | 8 ++++---- tools/perf/arch/x86/util/pmu.c | 10 +++++----- tools/perf/builtin-list.c | 2 +- tools/perf/tests/pmu-events.c | 16 ++++++++-------- tools/perf/util/env.c | 8 ++------ tools/perf/util/header.c | 8 +------- tools/perf/util/mem-events.c | 16 ++++++++-------- tools/perf/util/mem-events.h | 2 +- tools/perf/util/parse-events.c | 7 ++----- tools/perf/util/parse-events.h | 2 +- tools/perf/util/parse-events.y | 2 +- tools/perf/util/pmu.c | 16 +++++++++------- tools/perf/util/pmu.h | 8 ++++---- 15 files changed, 51 insertions(+), 62 deletions(-) diff --git a/tools/perf/arch/arm64/util/mem-events.c b/tools/perf/arch/arm64/util/mem-events.c index df817d1f9f3e..3bcc5c7035c2 100644 --- a/tools/perf/arch/arm64/util/mem-events.c +++ b/tools/perf/arch/arm64/util/mem-events.c @@ -20,7 +20,7 @@ struct perf_mem_event *perf_mem_events__ptr(int i) return &perf_mem_events[i]; } -char *perf_mem_events__name(int i, char *pmu_name __maybe_unused) +const char *perf_mem_events__name(int i, const char *pmu_name __maybe_unused) { struct perf_mem_event *e = perf_mem_events__ptr(i); diff --git a/tools/perf/arch/powerpc/util/mem-events.c b/tools/perf/arch/powerpc/util/mem-events.c index 4120fafe0be4..78b986e5268d 100644 --- a/tools/perf/arch/powerpc/util/mem-events.c +++ b/tools/perf/arch/powerpc/util/mem-events.c @@ -3,10 +3,10 @@ #include "mem-events.h" /* PowerPC does not support 'ldlat' parameter. */ -char *perf_mem_events__name(int i, char *pmu_name __maybe_unused) +const char *perf_mem_events__name(int i, const char *pmu_name __maybe_unused) { if (i == PERF_MEM_EVENTS__LOAD) - return (char *) "cpu/mem-loads/"; + return "cpu/mem-loads/"; - return (char *) "cpu/mem-stores/"; + return "cpu/mem-stores/"; } diff --git a/tools/perf/arch/x86/util/mem-events.c b/tools/perf/arch/x86/util/mem-events.c index a8a782bcb121..191b372f9a2d 100644 --- a/tools/perf/arch/x86/util/mem-events.c +++ b/tools/perf/arch/x86/util/mem-events.c @@ -52,7 +52,7 @@ bool is_mem_loads_aux_event(struct evsel *leader) return leader->core.attr.config == MEM_LOADS_AUX; } -char *perf_mem_events__name(int i, char *pmu_name) +const char *perf_mem_events__name(int i, const char *pmu_name) { struct perf_mem_event *e = perf_mem_events__ptr(i); @@ -65,7 +65,7 @@ char *perf_mem_events__name(int i, char *pmu_name) if (!pmu_name) { mem_loads_name__init = true; - pmu_name = (char *)"cpu"; + pmu_name = "cpu"; } if (perf_pmus__have_event(pmu_name, "mem-loads-aux")) { @@ -82,12 +82,12 @@ char *perf_mem_events__name(int i, char *pmu_name) if (i == PERF_MEM_EVENTS__STORE) { if (!pmu_name) - pmu_name = (char *)"cpu"; + pmu_name = "cpu"; scnprintf(mem_stores_name, sizeof(mem_stores_name), e->name, pmu_name); return mem_stores_name; } - return (char *)e->name; + return e->name; } diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c index 65d8cdff4d5f..f428cffb0378 100644 --- a/tools/perf/arch/x86/util/pmu.c +++ b/tools/perf/arch/x86/util/pmu.c @@ -126,7 +126,7 @@ static int setup_pmu_alias_list(void) return ret; } -static char *__pmu_find_real_name(const char *name) +static const char *__pmu_find_real_name(const char *name) { struct pmu_alias *pmu_alias; @@ -135,10 +135,10 @@ static char *__pmu_find_real_name(const char *name) return pmu_alias->name; } - return (char *)name; + return name; } -char *pmu_find_real_name(const char *name) +const char *pmu_find_real_name(const char *name) { if (cached_list) return __pmu_find_real_name(name); @@ -149,7 +149,7 @@ char *pmu_find_real_name(const char *name) return __pmu_find_real_name(name); } -static char *__pmu_find_alias_name(const char *name) +static const char *__pmu_find_alias_name(const char *name) { struct pmu_alias *pmu_alias; @@ -160,7 +160,7 @@ static char *__pmu_find_alias_name(const char *name) return NULL; } -char *pmu_find_alias_name(const char *name) +const char *pmu_find_alias_name(const char *name) { if (cached_list) return __pmu_find_alias_name(name); diff --git a/tools/perf/builtin-list.c b/tools/perf/builtin-list.c index 7fec2cca759f..e74d0223deb7 100644 --- a/tools/perf/builtin-list.c +++ b/tools/perf/builtin-list.c @@ -502,7 +502,7 @@ int cmd_list(int argc, const char **argv) ret = -1; goto out; } - default_ps.pmu_glob = pmu->name; + default_ps.pmu_glob = strdup(pmu->name); } } print_cb.print_start(ps); diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c index 3dc1ebee4d9f..94937378647a 100644 --- a/tools/perf/tests/pmu-events.c +++ b/tools/perf/tests/pmu-events.c @@ -522,7 +522,7 @@ static int test_core_pmu_event_aliases_cb(void *state, struct pmu_event_info *al } /* Verify aliases are as expected */ -static int __test_core_pmu_event_aliases(char *pmu_name, int *count) +static int __test_core_pmu_event_aliases(const char *pmu_name, int *count) { struct perf_pmu_test_event const **test_event_table; struct perf_pmu *pmu; @@ -635,7 +635,7 @@ static int __test_uncore_pmu_event_aliases(struct perf_pmu_test_pmu *test_pmu) static struct perf_pmu_test_pmu test_pmus[] = { { .pmu = { - .name = (char *)"hisi_sccl1_ddrc2", + .name = "hisi_sccl1_ddrc2", .is_uncore = 1, }, .aliases = { @@ -644,7 +644,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"uncore_cbox_0", + .name = "uncore_cbox_0", .is_uncore = 1, }, .aliases = { @@ -655,7 +655,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"hisi_sccl3_l3c7", + .name = "hisi_sccl3_l3c7", .is_uncore = 1, }, .aliases = { @@ -664,7 +664,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"uncore_imc_free_running_0", + .name = "uncore_imc_free_running_0", .is_uncore = 1, }, .aliases = { @@ -673,7 +673,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"uncore_imc_0", + .name = "uncore_imc_0", .is_uncore = 1, }, .aliases = { @@ -682,7 +682,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"uncore_sys_ddr_pmu0", + .name = "uncore_sys_ddr_pmu0", .is_uncore = 1, .id = (char *)"v8", }, @@ -692,7 +692,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { }, { .pmu = { - .name = (char *)"uncore_sys_ccn_pmu4", + .name = "uncore_sys_ccn_pmu4", .is_uncore = 1, .id = (char *)"0x01", }, diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c index 9eabf3ec56e9..a164164001fb 100644 --- a/tools/perf/util/env.c +++ b/tools/perf/util/env.c @@ -324,11 +324,9 @@ int perf_env__read_pmu_mappings(struct perf_env *env) u32 pmu_num = 0; struct strbuf sb; - while ((pmu = perf_pmus__scan(pmu))) { - if (!pmu->name) - continue; + while ((pmu = perf_pmus__scan(pmu))) pmu_num++; - } + if (!pmu_num) { pr_debug("pmu mappings not available\n"); return -ENOENT; @@ -339,8 +337,6 @@ int perf_env__read_pmu_mappings(struct perf_env *env) return -ENOMEM; while ((pmu = perf_pmus__scan(pmu))) { - if (!pmu->name) - continue; if (strbuf_addf(&sb, "%u:%s", pmu->type, pmu->name) < 0) goto error; /* include a NULL character at the end */ diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 13c71d28e0eb..9f35d86a3351 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -746,20 +746,14 @@ static int write_pmu_mappings(struct feat_fd *ff, * Do a first pass to count number of pmu to avoid lseek so this * works in pipe mode as well. */ - while ((pmu = perf_pmus__scan(pmu))) { - if (!pmu->name) - continue; + while ((pmu = perf_pmus__scan(pmu))) pmu_num++; - } ret = do_write(ff, &pmu_num, sizeof(pmu_num)); if (ret < 0) return ret; while ((pmu = perf_pmus__scan(pmu))) { - if (!pmu->name) - continue; - ret = do_write(ff, &pmu->type, sizeof(pmu->type)); if (ret < 0) return ret; diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c index c07fe3a90722..39ffe8ceb380 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -37,7 +37,7 @@ struct perf_mem_event * __weak perf_mem_events__ptr(int i) return &perf_mem_events[i]; } -char * __weak perf_mem_events__name(int i, char *pmu_name __maybe_unused) +const char * __weak perf_mem_events__name(int i, const char *pmu_name __maybe_unused) { struct perf_mem_event *e = perf_mem_events__ptr(i); @@ -53,7 +53,7 @@ char * __weak perf_mem_events__name(int i, char *pmu_name __maybe_unused) return mem_loads_name; } - return (char *)e->name; + return e->name; } __weak bool is_mem_loads_aux_event(struct evsel *leader __maybe_unused) @@ -186,7 +186,6 @@ int perf_mem_events__record_args(const char **rec_argv, int *argv_nr, int i = *argv_nr, k = 0; struct perf_mem_event *e; struct perf_pmu *pmu; - char *s; for (int j = 0; j < PERF_MEM_EVENTS__MAX; j++) { e = perf_mem_events__ptr(j); @@ -209,15 +208,16 @@ int perf_mem_events__record_args(const char **rec_argv, int *argv_nr, } while ((pmu = perf_pmus__scan(pmu)) != NULL) { + const char *s = perf_mem_events__name(j, pmu->name); + rec_argv[i++] = "-e"; - s = perf_mem_events__name(j, pmu->name); if (s) { - s = strdup(s); - if (!s) + char *copy = strdup(s); + if (!copy) return -1; - rec_argv[i++] = s; - rec_tmp[k++] = s; + rec_argv[i++] = copy; + rec_tmp[k++] = copy; } } } diff --git a/tools/perf/util/mem-events.h b/tools/perf/util/mem-events.h index 12372309d60e..b40ad6ea93fc 100644 --- a/tools/perf/util/mem-events.h +++ b/tools/perf/util/mem-events.h @@ -38,7 +38,7 @@ extern unsigned int perf_mem_events__loads_ldlat; int perf_mem_events__parse(const char *str); int perf_mem_events__init(void); -char *perf_mem_events__name(int i, char *pmu_name); +const char *perf_mem_events__name(int i, const char *pmu_name); struct perf_mem_event *perf_mem_events__ptr(int i); bool is_mem_loads_aux_event(struct evsel *leader); diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index c71e135d7335..621bdd157a0f 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -262,7 +262,7 @@ __add_event(struct list_head *list, int *idx, evsel->core.is_pmu_core = pmu ? pmu->is_core : false; evsel->auto_merge_stats = auto_merge_stats; evsel->pmu = pmu; - evsel->pmu_name = pmu && pmu->name ? strdup(pmu->name) : NULL; + evsel->pmu_name = pmu ? strdup(pmu->name) : NULL; if (name) evsel->name = strdup(name); @@ -437,9 +437,6 @@ bool parse_events__filter_pmu(const struct parse_events_state *parse_state, if (parse_state->pmu_filter == NULL) return false; - if (pmu->name == NULL) - return true; - return strcmp(parse_state->pmu_filter, pmu->name) != 0; } @@ -1292,7 +1289,7 @@ static bool config_term_percore(struct list_head *config_terms) } int parse_events_add_pmu(struct parse_events_state *parse_state, - struct list_head *list, char *name, + struct list_head *list, const char *name, struct list_head *head_config, bool auto_merge_stats, void *loc_) { diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index c7f779420723..c4e8d8e94b28 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -176,7 +176,7 @@ int parse_events_add_breakpoint(struct parse_events_state *parse_state, u64 addr, char *type, u64 len, struct list_head *head_config); int parse_events_add_pmu(struct parse_events_state *parse_state, - struct list_head *list, char *name, + struct list_head *list, const char *name, struct list_head *head_config, bool auto_merge_stats, void *loc); diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 00da1f8c0baf..3a9d4e2513b5 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -307,7 +307,7 @@ PE_NAME opt_pmu_config } while ((pmu = perf_pmus__scan(pmu)) != NULL) { - char *name = pmu->name; + const char *name = pmu->name; if (parse_events__filter_pmu(parse_state, pmu)) continue; diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index bb2ca29cd7bd..a96ccc5c3b51 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -29,7 +29,9 @@ #include "fncache.h" #include "util/evsel_config.h" -struct perf_pmu perf_pmu__fake; +struct perf_pmu perf_pmu__fake = { + .name = "fake", +}; #define UNIT_MAX_LEN 31 /* max length for event unit name */ @@ -967,13 +969,13 @@ perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) return NULL; } -char * __weak +const char * __weak pmu_find_real_name(const char *name) { - return (char *)name; + return name; } -char * __weak +const char * __weak pmu_find_alias_name(const char *name __maybe_unused) { return NULL; @@ -991,8 +993,8 @@ struct perf_pmu *perf_pmu__lookup(struct list_head *pmus, int dirfd, const char { struct perf_pmu *pmu; __u32 type; - char *name = pmu_find_real_name(lookup_name); - char *alias_name; + const char *name = pmu_find_real_name(lookup_name); + const char *alias_name; pmu = zalloc(sizeof(*pmu)); if (!pmu) @@ -1974,7 +1976,7 @@ void perf_pmu__warn_invalid_config(struct perf_pmu *pmu, __u64 config, name ?: "N/A", buf, config_name, config); } -int perf_pmu__match(char *pattern, char *name, char *tok) +int perf_pmu__match(const char *pattern, const char *name, const char *tok) { if (!name) return -1; diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index bae0de3ed7a5..e90169ab3dc2 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -39,7 +39,7 @@ struct perf_pmu_caps { */ struct perf_pmu { /** @name: The name of the PMU such as "cpu". */ - char *name; + const char *name; /** * @alias_name: Optional alternate name for the PMU determined in * architecture specific code. @@ -249,10 +249,10 @@ void perf_pmu__warn_invalid_config(struct perf_pmu *pmu, __u64 config, const char *config_name); void perf_pmu__warn_invalid_formats(struct perf_pmu *pmu); -int perf_pmu__match(char *pattern, char *name, char *tok); +int perf_pmu__match(const char *pattern, const char *name, const char *tok); -char *pmu_find_real_name(const char *name); -char *pmu_find_alias_name(const char *name); +const char *pmu_find_real_name(const char *name); +const char *pmu_find_alias_name(const char *name); double perf_pmu__cpu_slots_per_cycle(void); int perf_pmu__event_source_devices_scnprintf(char *pathname, size_t size); int perf_pmu__pathname_scnprintf(char *buf, size_t size, From patchwork Fri Aug 25 02:39:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364941 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 14545C88CB2 for ; Fri, 25 Aug 2023 02:41:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rshaztl+4W2v2QIwjxuuuTeQ43o4je1FRUdksJyBF9I=; b=08I++EUlKo9X/B G8VyKojg8EZCaCcPe29SH8nLzBYmm5XCona9S+GodtReyIRBdqPnOLmKLFDRd3IDk4gf9aMpXQdam WLajxYXA/9A9B+CVi/zSt3zd36ZjnCwc/VxIQN1lZ5LhLaRBoZ/1fJJsM9nv6cAS2YIVOE5RXfru0 NguqsfcuC9Z58MKKXdPrRJM6c8GUp/9SMNbo+2mqGDnrXEfINHR0w6LRHVOlv6eF9wzEgkBiWctUi CGASx7SlaCAQQOlAy5YkXpEpGRNQ4nYLUVhHCvDCLxR2F+qmDlg+lCM/+FpN8rmBHm+z6DEqoO6Dl k8x14jrhVK3oWzzk9hCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkd-0048No-1h; Fri, 25 Aug 2023 02:40:43 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkW-0048KY-0i for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:37 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-58d428d4956so7158047b3.0 for ; Thu, 24 Aug 2023 19:40:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931234; x=1693536034; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=6+zdRFvr84d+fBWt10B0hHI/TeqmfF3seVVv15ew7F8=; b=HZSXLXGkuLPKgBuf4pk6J10eXiT7nvHcO4Exh1bIycY3L3BPD0nK3nX5wfOGHMWkDv fOGkuKwMhGemx7niIQSm5B6O3bwh2/0NdB86qMH9C6emksooUVvhet30JMKyQh2/8Ftc uRM999s3VRcT4ThF81DOXn0sQrFYDM/V3skOcZ0TaZeTpqp6uJHBEixUnhOsv7YIB6vU WfbAcOLPK86fNr+Iv4agkDrrY71JNNbNgU+M3vOuMK4jKOGS0aIQzHZy5v952AFnwYgx C4e04r+BRwB9Ud6KpXJe+k2b6OlJ6QK9VdDzYDudMRI3FVJHzcA1nw71vUwAvb3I4dih +IGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931234; x=1693536034; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6+zdRFvr84d+fBWt10B0hHI/TeqmfF3seVVv15ew7F8=; b=TY6t2U+VjqPm7IYvaztFdcQhT34K7jo8HivOMbHAFYFWxXdGjKtVQ+YnVcSO7sgjZx ZmpgClkO/R1Dxy+K7MzGM6kVNmQ2XfPS7jHyVGDmKYalG6fX39v/aOv+EZGk4efx/XuQ s7+58nkMT9gq5xKn3Wca/f6EfKV0Dkvb2Ay4lab7bEMYsHJZmOY7s2nOlTxukbsNGWtU 1M2aq4wKXSkiTlsQH6rrQ5NeMaLXqI3NKqezUUWvkj8l8wQ7DsaW+Sm8XppPK5glJVPP lgJwcxe6N6MCzGWIuZp1kKwt5vDgMPd7lskNRjYJij3w9qXxuYY7YYOOQ+5ovCDOLa6E 6iIg== X-Gm-Message-State: AOJu0YzR2kocnwuwTi6D1fKe9BtPWksJYqHnzS6q/K0CV04JtGLeRN75 tRP4XyUUlz44Ld4sadkQZ9L5O/Hxo7Kf X-Google-Smtp-Source: AGHT+IEzM4glBr+PazUhBNmMADT2m3Tq6v7cCwDbE9cQUy4ophVAFva8E+T9hCeg0cPS0+531uZjKd8AAFZM X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a25:aa06:0:b0:d15:d6da:7e97 with SMTP id s6-20020a25aa06000000b00d15d6da7e97mr319274ybi.3.1692931234631; Thu, 24 Aug 2023 19:40:34 -0700 (PDT) Date: Thu, 24 Aug 2023 19:39:59 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-4-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 3/6] perf parse-events: Make term's config const From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194036_266989_31C97F09 X-CRM114-Status: GOOD ( 16.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This avoids casts in tests. Use zfree in a few places to avoid warnings about a freeing a const pointer. Signed-off-by: Ian Rogers --- tools/perf/tests/pmu.c | 18 +++++++++--------- tools/perf/util/parse-events.c | 10 +++++----- tools/perf/util/parse-events.h | 4 ++-- tools/perf/util/pmu.c | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tools/perf/tests/pmu.c b/tools/perf/tests/pmu.c index c204ed1f1a8b..eb60e5f66859 100644 --- a/tools/perf/tests/pmu.c +++ b/tools/perf/tests/pmu.c @@ -28,55 +28,55 @@ static struct test_format { /* Simulated users input. */ static struct parse_events_term test_terms[] = { { - .config = (char *) "krava01", + .config = "krava01", .val.num = 15, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava02", + .config = "krava02", .val.num = 170, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava03", + .config = "krava03", .val.num = 1, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava11", + .config = "krava11", .val.num = 27, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava12", + .config = "krava12", .val.num = 1, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava13", + .config = "krava13", .val.num = 2, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava21", + .config = "krava21", .val.num = 119, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava22", + .config = "krava22", .val.num = 11, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, }, { - .config = (char *) "krava23", + .config = "krava23", .val.num = 2, .type_val = PARSE_EVENTS__TERM_TYPE_NUM, .type_term = PARSE_EVENTS__TERM_TYPE_USER, diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 621bdd157a0f..4c812fbe0cf9 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -199,7 +199,7 @@ static void fix_raw(struct list_head *config_terms, struct perf_pmu *pmu) continue; if (perf_pmu__have_event(pmu, term->val.str)) { - free(term->config); + zfree(&term->config); term->config = term->val.str; term->type_val = PARSE_EVENTS__TERM_TYPE_NUM; term->type_term = PARSE_EVENTS__TERM_TYPE_USER; @@ -208,7 +208,7 @@ static void fix_raw(struct list_head *config_terms, struct perf_pmu *pmu) continue; } - free(term->config); + zfree(&term->config); term->config = strdup("config"); errno = 0; num = strtoull(term->val.str + 1, NULL, 16); @@ -1416,7 +1416,7 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state, struct perf_pmu *pmu = NULL; YYLTYPE *loc = loc_; int ok = 0; - char *config; + const char *config; *listp = NULL; @@ -1435,7 +1435,7 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state, PARSE_EVENTS__TERM_TYPE_USER, config, 1, false, NULL, NULL) < 0) { - free(config); + zfree(&config); goto out_err; } list_add_tail(&term->list, head); @@ -2378,7 +2378,7 @@ static int new_term(struct parse_events_term **_term, } int parse_events_term__num(struct parse_events_term **term, - int type_term, char *config, u64 num, + int type_term, const char *config, u64 num, bool no_value, void *loc_term_, void *loc_val_) { diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index c4e8d8e94b28..6d75d853ce00 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -83,7 +83,7 @@ enum { }; struct parse_events_term { - char *config; + const char *config; union { char *str; u64 num; @@ -138,7 +138,7 @@ bool parse_events__filter_pmu(const struct parse_events_state *parse_state, void parse_events__shrink_config_terms(void); int parse_events__is_hardcoded_term(struct parse_events_term *term); int parse_events_term__num(struct parse_events_term **term, - int type_term, char *config, u64 num, + int type_term, const char *config, u64 num, bool novalue, void *loc_term, void *loc_val); int parse_events_term__str(struct parse_events_term **term, diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index a96ccc5c3b51..eb42f9830be7 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1418,7 +1418,7 @@ static struct perf_pmu_alias *pmu_find_alias(struct perf_pmu *pmu, struct parse_events_term *term) { struct perf_pmu_alias *alias; - char *name; + const char *name; if (parse_events__is_hardcoded_term(term)) return NULL; From patchwork Fri Aug 25 02:40:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364938 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 31747C3DA6F for ; Fri, 25 Aug 2023 02:41:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yBlhoWkLSLLt2r86MmUMZBHy4DSwvU+FJcW4cflI1Gk=; b=vZevPubdv4BRyV j9wlYUtk7By905aMtzr2zH+4BjVNkIvgPBnuw6xgKZApilcKC0L3S2lsnbil8Uurofg+GDE9P1eyj z0ut0aXrM8wM4Oudi5kfKoaI5bWGhvu3Gj9BrGuqJYTWC+jolAgmcy34pWrks1PdmWh2Dn5lNN0xe JNK0ut4VtEl8ZbECseVspZgmX6ov2SKqUZ+l9JWK5Rg8tlChSR1EsV4qNwok/NUrEnJDyJLwU7KYh SmpqsdYHlsn+RAk7d1KJVGLdgyrUrFISSpfwsgdd3umfiMPPHIpM6icw5TQWagEW4bZdtMLL3vNC0 Hx3PiWqj57oHQbu4hsKw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMke-0048O2-0B; Fri, 25 Aug 2023 02:40:44 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMkY-0048Lk-1X for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:39 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-58c8b2d6784so7171437b3.3 for ; Thu, 24 Aug 2023 19:40:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931237; x=1693536037; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=BHXteoJsO5CjisE3iWmyoU3o62DiyCouesqp1NV6ZaY=; b=aM1+/Q9/kqw9FPRt+ilUC2t7yHLdncPzCcyJOdfOPAzDkrfOyw4un0h7kWm/0Qss3d NZFW3A2SdinUDE2lpqWfXf87L12zQUGFk4HnP+F43itYhRV9t8p4sPKvIxpLO4O1e5ry xWTvly0fX09Jg95DitgN79YkII2+4qbIpeeQQLydHeV4IFgM1g6nevB8+LkEG1TR1gyo IgsiBX1y1/dn65Bvbkbn14tFgtJtGGxxK0KrXwN0HheDF/LrN7dc2LyhkLbEGu0uyqK1 VEVzzuFW9e/yWmLZP3luTRDeMbdMaF1I55SoCgD1dSo+nZFJUAJiI13BEx3e16PI+zJV sRTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931237; x=1693536037; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=BHXteoJsO5CjisE3iWmyoU3o62DiyCouesqp1NV6ZaY=; b=FDfTftWdZxTd+XCqZkZsxZtpcQVoT94ucYg/TELnEi5yg8dkkjQstEAk4a+N85f9t5 BoNbFGRHDTgaq/EYpaY91lmK9SZGZWww1dnHCl0jGm5FqTH0euve1cGeqnpRSo7apdFH M/sl4xHLuqwHiDgBWxLHc0oR/oVq+j4f6y4Agh++bexpWRkpxPQEYpRhKeUmihLtaLuO AAytkOsb4Z4TvvQosncUfHtlhfVjC3J90UoKWC+lSLXlco8ucl4PXd9yjsLEFa1q58pA FtmgIn4iMymhzVaEle5K4c8BgOk64mPTK7OXwlHexyef3NoHDNPbfHxAweI5GnrXtIzq YRLA== X-Gm-Message-State: AOJu0Yxa9mY0im2wpJUxwL0ceeuXO7Acg9DgeYlWGdzhmIElabygKr1b Vb4hLheUH32y/84BvtWEawlSS/Z6sgd+ X-Google-Smtp-Source: AGHT+IGaNkQKvYICmjYwbFYZkcVjwo9/uyNhIHNgKwBwkDBYJTIRQcWeE5epFd3NZyNnRo3DSrMjLPSFkFEv X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a81:b660:0:b0:573:5797:4b9e with SMTP id h32-20020a81b660000000b0057357974b9emr373461ywk.1.1692931237087; Thu, 24 Aug 2023 19:40:37 -0700 (PDT) Date: Thu, 24 Aug 2023 19:40:00 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-5-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 4/6] perf pmu: Make id const and add missing free From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194038_518924_936EABB4 X-CRM114-Status: GOOD ( 16.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The struct pmu id is initialized from pmu_id that is read into allocated memory from a file, as such it needs free-ing in pmu__delete. Make the id value const so that we can remove casts in tests. Signed-off-by: Ian Rogers --- tools/perf/tests/pmu-events.c | 4 ++-- tools/perf/util/pmu.c | 1 + tools/perf/util/pmu.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c index 94937378647a..eb243392c0f4 100644 --- a/tools/perf/tests/pmu-events.c +++ b/tools/perf/tests/pmu-events.c @@ -684,7 +684,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { .pmu = { .name = "uncore_sys_ddr_pmu0", .is_uncore = 1, - .id = (char *)"v8", + .id = "v8", }, .aliases = { &sys_ddr_pmu_write_cycles, @@ -694,7 +694,7 @@ static struct perf_pmu_test_pmu test_pmus[] = { .pmu = { .name = "uncore_sys_ccn_pmu4", .is_uncore = 1, - .id = (char *)"0x01", + .id = "0x01", }, .aliases = { &sys_ccn_pmu_read_cycles, diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index eb42f9830be7..b92dc7237f3b 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -2056,6 +2056,7 @@ void perf_pmu__delete(struct perf_pmu *pmu) zfree(&pmu->default_config); zfree(&pmu->name); zfree(&pmu->alias_name); + zfree(&pmu->id); free(pmu); } diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index e90169ab3dc2..73965f208009 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -49,7 +49,7 @@ struct perf_pmu { * @id: Optional PMU identifier read from * /bus/event_source/devices//identifier. */ - char *id; + const char *id; /** * @type: Perf event attributed type value, read from * /bus/event_source/devices//type. From patchwork Fri Aug 25 02:40:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364942 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 344B9C3DA6F for ; Fri, 25 Aug 2023 02:41:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rlrBuajj2DlXlhmRXm+p5hRyob2SeWEOwl1ZDTrehcU=; b=yE24RRS9n+i9k1 kmZR/EzWZyUKYcszcmp7v3St55KWkNoAiBppDi2N/naUR33pDeiRAsd17gC/XIhB55B70QTf7LCG5 6R3xHe5kdxEYVWkKTp7RFDkDixG6Dn/jjLexIwnzOovmhHscSIqnC4LfekC+G8MseQJoCBtMtp/5F Sk/WjotwdTY8m8bWBSqgMuzmx01Uq4aiCxYKxvszjitSW8ApWv5Zurjf9ri1Hc2Rb9K2Dt0Vbg2n5 Hbh2o1UXNKRlVPuKMVSsLCS2qjpUvmBWaNbWLf5c9SVu8Rj2a4LdOioD4k0MKTb3dJ4JR+ONpyM6F UAJrkXtP75wOw7dus9KQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMl6-0048U7-13; Fri, 25 Aug 2023 02:41:12 +0000 Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMka-0048MO-1a for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:41 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-58d9e327d3aso6812607b3.3 for ; Thu, 24 Aug 2023 19:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931239; x=1693536039; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=nEmDxZXfqmiXij1P26PReriZNwm7Tzx0wPywITAyVZs=; b=0X4KsFbq6USzQWLK6dPK1VNHuT9qZ+6GnaNMLUTmFZL9XI5UK5j4OZhgw9gK4InZRb kKS8+Eu64Phorz6npOSiBkB0rdM17BaYM7yjh0Z0203v9TJ3n5m155de8klBCzUoh1qS DVybSs9v7pnVwF8qqaKXuD6n6BnWKTG/A/eJFRpmFlXZgSZx4uB9SxxAKn7HCl0s9FQS 3tyVb7DRO9MojxBY5WcOnOEHBtI7+uC63kASOKS8zXpI6IdUtcUw0E/Fm3T2FI38/lg4 xtceYZqS0Jw+LvOrNxpqcPEsRAwy6tD1pttwBM/aVoNlFOlyfZOlk+Ci4jcmKvHk4zQt +D5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931239; x=1693536039; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nEmDxZXfqmiXij1P26PReriZNwm7Tzx0wPywITAyVZs=; b=Cu662c9ZH9w9P6iNFsQd4JhUF+uh42O5M+XLF7bFPm4tuhdI8wwzCD9v45Q2XZNHtV C4PTmFXNhzved6KtMNs86fL3RrsZyORdVJRAGbFXWT8I6hlAwQtOcDMJx1KVOko6Ddfm zWi83m8PRRBRkbskBRhxrgMfEkFObSEG/o1yfGTrsVb3yJJgogCEue6QhUVxuszJpyxz zY7qd/yhZI8McrdXSJ0k9OXo8zn/Abd0mpAt5vJ4SyLc8I4VVShx6cIoTLHSuFKs10H3 eteoc5ld9Hg3aMs6Q9yoQ76BNAJm8qirLxaNJS9lHbTkbtLFkuNVOqcloPgGC9JsBxd7 8VOA== X-Gm-Message-State: AOJu0YxHH56OEcacALfaUUXwhpMbqnIPVjdzzy2SYI9BvBcPoNKOibkV P8Q/g5noDzVeubwKORUgNAUdPgCpaKYf X-Google-Smtp-Source: AGHT+IFgEMlpncts413bII2U21Eeh/C12lVb7PU6bgessDFhUJEFalAJ7Hcxnx0KkdzL9w9raMJUEdJo8+6b X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a81:ae27:0:b0:584:41b7:30e7 with SMTP id m39-20020a81ae27000000b0058441b730e7mr317527ywh.0.1692931239309; Thu, 24 Aug 2023 19:40:39 -0700 (PDT) Date: Thu, 24 Aug 2023 19:40:01 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-6-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 5/6] perf build-id: Simplify build_id_cache__cachedir From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194040_527311_94B36ED4 X-CRM114-Status: GOOD ( 11.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Initialize realname to NULL, rather than name. This avoids a cast and as realpath is either NULL or an allocated string, free can be called unconditionally. Signed-off-by: Ian Rogers --- tools/perf/util/build-id.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index 36728222a5b4..03c64b85383b 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c @@ -560,7 +560,7 @@ char *build_id_cache__cachedir(const char *sbuild_id, const char *name, struct nsinfo *nsi, bool is_kallsyms, bool is_vdso) { - char *realname = (char *)name, *filename; + char *realname = NULL, *filename; bool slash = is_kallsyms || is_vdso; if (!slash) @@ -571,9 +571,7 @@ char *build_id_cache__cachedir(const char *sbuild_id, const char *name, sbuild_id ? "/" : "", sbuild_id ?: "") < 0) filename = NULL; - if (!slash) - free(realname); - + free(realname); return filename; } From patchwork Fri Aug 25 02:40:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13364943 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 42BB6C6FA8F for ; Fri, 25 Aug 2023 02:41:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:From:Subject:References:Mime-Version :Message-Id:In-Reply-To:Date:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=12ZAH5slcpzsUUr+S4w3Jx7t5EnR6//gHhj1mwDwixY=; b=Gsf1fjoU//atql ET591hYLbE+O2ekXBJdsgmRZ7Cqx3tzkh2TAbEt74H5KzHWEUp1FlWDcLRthBDvk7F7WM0gjz00Go 3kv+k+S0DpFPi9Gc77HfHDXK3XF7y/7DcR57bzC8h6UIpGYYOvuw41W4piCaqYY3eKlJSRwDid87Y FjSpBYfmB/uB719hK3G58jrLV4j3uVDUaM7KHZQdT79BMo0W0fZPZsjSNxKF4dGgw+jgFTsp7osjV 3JXIwJ2CiacWaLFprTOXqb8HUDODoOkLn2uIHrKdej3+GQMIqKft9HB0R8ZkcqZp3hIi3W3NNYg/j XzG4+eXZSgYijiXlYdRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZMl6-0048UV-2n; Fri, 25 Aug 2023 02:41:12 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZMke-0048NV-28 for linux-arm-kernel@lists.infradead.org; Fri, 25 Aug 2023 02:40:46 +0000 Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-d748b6f1077so556268276.1 for ; Thu, 24 Aug 2023 19:40:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692931242; x=1693536042; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=NcUqJfD2vtZBJtRGaKPEtBOFxtzHCYdgja7TOmPH0eI=; b=CjxI+TYHnmhAYRxwVdz5aS2g96q8COr2M6h1zy3NUfYwcihYrPYYCdvJnDnUg3DHSX UeQeKLw+tyDRqQAtQBA2xCKe8vkrQ3zIJhnly8Qs661aa1M6x0+fFWxkV9DeySTUm7Oe CgM7ih1p8azQOaAe6VGeT+vbraXYGRJgKXMwBzDwzhTMTCMnawFW71Ycz1ccqtl1ewQP hr7zYtvI6lzLwmgTyO9P6dKlTCUGw6YRAerJ0NYO+i3EU99Po9+yYPIe6MBLun8Mj9XV XZmmNMjkxkV5Jx4gGBPQsrtB/kaWmHM6ibdL4mRvuGWl5yd18Vphb+gBAdefjpfeyta6 jhVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692931242; x=1693536042; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NcUqJfD2vtZBJtRGaKPEtBOFxtzHCYdgja7TOmPH0eI=; b=PbmhBGu9Ga1LgSo8WZztD605ZjRfPaTKG8M9aKFH0Gkf/rfHVz2T/KD6aKKt3QP2kv wmvYbc3RbHpAsWgrr/PE9Wc4hprrTYcBifmYxqLDyYhbuOqjNxHTppa1LirqDuJ6Mdks pKDdsgJsgSpZugJHULKOEknNoeEpj/nMjaqgfVrhpDOqVmiAo8mpULAf8V/dbvj3RquV oAwx/H7yQHxIuovy2awdpB/32hxCxUG6uC5zDBCoEc3fZSN+1kxxJ9vvqQgFkbFTLiwQ IxHm8OMcBNNCyHPeF0AAF22b3o8ifFIyxtSnul7NY/M8ScEqxmYfdYoDLdGiqx9UNfRg JbvA== X-Gm-Message-State: AOJu0YwHoIj5K8CCfDT4Y26FxY53Pb6UiMFNeIIQyxixy9ff96nCbIvU /0xNJTbTZTXlpjNgldPHOaPKeaGo5jU2 X-Google-Smtp-Source: AGHT+IEOo3g5mLbnRiubfq5FYzAABS3D4p8ybai45wdimtAsrJ2oNUARHrolM3wRcoYP/3jUwHZ2GyLtspc3 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:449e:d47b:bc6b:cb6b]) (user=irogers job=sendgmr) by 2002:a25:fc0d:0:b0:d07:e80c:412e with SMTP id v13-20020a25fc0d000000b00d07e80c412emr300379ybd.12.1692931242503; Thu, 24 Aug 2023 19:40:42 -0700 (PDT) Date: Thu, 24 Aug 2023 19:40:02 -0700 In-Reply-To: <20230825024002.801955-1-irogers@google.com> Message-Id: <20230825024002.801955-7-irogers@google.com> Mime-Version: 1.0 References: <20230825024002.801955-1-irogers@google.com> X-Mailer: git-send-email 2.42.0.rc2.253.gd59a3bf2b4-goog Subject: [PATCH v2 6/6] perf tui slang: Tidy casts From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Kan Liang , Ravi Bangoria , Suzuki Poulouse , Kajol Jain , Athira Rajeev , Ming Wang , Huacai Chen , Sean Christopherson , K Prateek Nayak , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Wei Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230824_194044_698900_A4361C23 X-CRM114-Status: GOOD ( 15.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Casts were necessary for older versions of libslang, however, these are now 15 years old and so we no longer need to care about supporting them. Tidy the casts and remove unnecessary logic. Move the ENABLE_SLFUTURE_CONST to the libslang.h common include file, and also enable ENABLE_SLFUTURE_VOID. Signed-off-by: Ian Rogers --- tools/perf/ui/Build | 2 -- tools/perf/ui/browser.c | 6 +++--- tools/perf/ui/browsers/Build | 5 ----- tools/perf/ui/libslang.h | 20 ++++---------------- tools/perf/ui/tui/helpline.c | 2 +- tools/perf/ui/tui/setup.c | 2 +- tools/perf/ui/tui/util.c | 12 ++++++------ 7 files changed, 15 insertions(+), 34 deletions(-) diff --git a/tools/perf/ui/Build b/tools/perf/ui/Build index 3aff83c3275f..6b6d7143a37b 100644 --- a/tools/perf/ui/Build +++ b/tools/perf/ui/Build @@ -10,5 +10,3 @@ CFLAGS_setup.o += -DLIBDIR="BUILD_STR($(LIBDIR))" perf-$(CONFIG_SLANG) += browser.o perf-$(CONFIG_SLANG) += browsers/ perf-$(CONFIG_SLANG) += tui/ - -CFLAGS_browser.o += -DENABLE_SLFUTURE_CONST diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index 78fb01d6ad63..603d11283cbd 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c @@ -57,12 +57,12 @@ void ui_browser__gotorc(struct ui_browser *browser, int y, int x) void ui_browser__write_nstring(struct ui_browser *browser __maybe_unused, const char *msg, unsigned int width) { - slsmg_write_nstring(msg, width); + SLsmg_write_nstring(msg, width); } void ui_browser__vprintf(struct ui_browser *browser __maybe_unused, const char *fmt, va_list args) { - slsmg_vprintf(fmt, args); + SLsmg_vprintf(fmt, args); } void ui_browser__printf(struct ui_browser *browser __maybe_unused, const char *fmt, ...) @@ -808,6 +808,6 @@ void ui_browser__init(void) while (ui_browser__colorsets[i].name) { struct ui_browser_colorset *c = &ui_browser__colorsets[i++]; - sltt_set_color(c->colorset, c->name, c->fg, c->bg); + SLtt_set_color(c->colorset, c->name, c->fg, c->bg); } } diff --git a/tools/perf/ui/browsers/Build b/tools/perf/ui/browsers/Build index fdf86f7981ca..7a1d5ddaf688 100644 --- a/tools/perf/ui/browsers/Build +++ b/tools/perf/ui/browsers/Build @@ -4,8 +4,3 @@ perf-y += map.o perf-y += scripts.o perf-y += header.o perf-y += res_sample.o - -CFLAGS_annotate.o += -DENABLE_SLFUTURE_CONST -CFLAGS_hists.o += -DENABLE_SLFUTURE_CONST -CFLAGS_map.o += -DENABLE_SLFUTURE_CONST -CFLAGS_scripts.o += -DENABLE_SLFUTURE_CONST diff --git a/tools/perf/ui/libslang.h b/tools/perf/ui/libslang.h index 991e692b9b46..1dff3020e9d5 100644 --- a/tools/perf/ui/libslang.h +++ b/tools/perf/ui/libslang.h @@ -11,28 +11,16 @@ #define HAVE_LONG_LONG __GLIBC_HAVE_LONG_LONG #endif +/* Enable future slang's corrected function prototypes. */ +#define ENABLE_SLFUTURE_CONST 1 +#define ENABLE_SLFUTURE_VOID 1 + #ifdef HAVE_SLANG_INCLUDE_SUBDIR #include #else #include #endif -#if SLANG_VERSION < 20104 -#define slsmg_printf(msg, args...) \ - SLsmg_printf((char *)(msg), ##args) -#define slsmg_vprintf(msg, vargs) \ - SLsmg_vprintf((char *)(msg), vargs) -#define slsmg_write_nstring(msg, len) \ - SLsmg_write_nstring((char *)(msg), len) -#define sltt_set_color(obj, name, fg, bg) \ - SLtt_set_color(obj,(char *)(name), (char *)(fg), (char *)(bg)) -#else -#define slsmg_printf SLsmg_printf -#define slsmg_vprintf SLsmg_vprintf -#define slsmg_write_nstring SLsmg_write_nstring -#define sltt_set_color SLtt_set_color -#endif - #define SL_KEY_UNTAB 0x1000 #endif /* _PERF_UI_SLANG_H_ */ diff --git a/tools/perf/ui/tui/helpline.c b/tools/perf/ui/tui/helpline.c index db4952f5990b..b39451314f43 100644 --- a/tools/perf/ui/tui/helpline.c +++ b/tools/perf/ui/tui/helpline.c @@ -22,7 +22,7 @@ static void tui_helpline__push(const char *msg) SLsmg_gotorc(SLtt_Screen_Rows - 1, 0); SLsmg_set_color(0); - SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols); + SLsmg_write_nstring(msg, SLtt_Screen_Cols); SLsmg_refresh(); strlcpy(ui_helpline__current, msg, sz); } diff --git a/tools/perf/ui/tui/setup.c b/tools/perf/ui/tui/setup.c index c1886aa184b3..605d9e175ea7 100644 --- a/tools/perf/ui/tui/setup.c +++ b/tools/perf/ui/tui/setup.c @@ -142,7 +142,7 @@ int ui__init(void) goto out; } - SLkp_define_keysym((char *)"^(kB)", SL_KEY_UNTAB); + SLkp_define_keysym("^(kB)", SL_KEY_UNTAB); signal(SIGSEGV, ui__signal_backtrace); signal(SIGFPE, ui__signal_backtrace); diff --git a/tools/perf/ui/tui/util.c b/tools/perf/ui/tui/util.c index 3c5174854ac8..e4d322ce0b54 100644 --- a/tools/perf/ui/tui/util.c +++ b/tools/perf/ui/tui/util.c @@ -106,7 +106,7 @@ int ui_browser__input_window(const char *title, const char *text, char *input, SLsmg_draw_box(y, x++, nr_lines, max_len); if (title) { SLsmg_gotorc(y, x + 1); - SLsmg_write_string((char *)title); + SLsmg_write_string(title); } SLsmg_gotorc(++y, x); nr_lines -= 7; @@ -117,12 +117,12 @@ int ui_browser__input_window(const char *title, const char *text, char *input, len = 5; while (len--) { SLsmg_gotorc(y + len - 1, x); - SLsmg_write_nstring((char *)" ", max_len); + SLsmg_write_nstring(" ", max_len); } SLsmg_draw_box(y++, x + 1, 3, max_len - 2); SLsmg_gotorc(y + 3, x); - SLsmg_write_nstring((char *)exit_msg, max_len); + SLsmg_write_nstring(exit_msg, max_len); SLsmg_refresh(); mutex_unlock(&ui__lock); @@ -197,7 +197,7 @@ void __ui__info_window(const char *title, const char *text, const char *exit_msg SLsmg_draw_box(y, x++, nr_lines, max_len); if (title) { SLsmg_gotorc(y, x + 1); - SLsmg_write_string((char *)title); + SLsmg_write_string(title); } SLsmg_gotorc(++y, x); if (exit_msg) @@ -207,9 +207,9 @@ void __ui__info_window(const char *title, const char *text, const char *exit_msg nr_lines, max_len, 1); if (exit_msg) { SLsmg_gotorc(y + nr_lines - 2, x); - SLsmg_write_nstring((char *)" ", max_len); + SLsmg_write_nstring(" ", max_len); SLsmg_gotorc(y + nr_lines - 1, x); - SLsmg_write_nstring((char *)exit_msg, max_len); + SLsmg_write_nstring(exit_msg, max_len); } }