From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2D932161EF for ; Tue, 5 Nov 2024 21:27:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842024; cv=none; b=KW01JuSm7uLo4VLlEFJYd8NrV4nxtbxaMUD2VwtERkQWb+m0HCAYC+4Pors0ESKCa43w9PIK0d7be0SHBznDRrtOR06czJkqA4BPpZVFa2FFb7R1xXUTayJRS+TZY5xwCp0b1/RfLZFh5FzymiHx+RkaOe9K9U4rqC2du0GAnmM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842024; c=relaxed/simple; bh=0UelXkPPHtu3Lbgh81jbZ3m39fj7o+Lntdf2ZlzEBXE=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=bblizaKU8TZ4g8tJQs69w6LY3TXPwLyqJ0UMJm+1AprF0dVVWrFuOEKPsyccHZkRN4hwkFhm4sxMqei/7zEHoEnAj2N6o18Lx2/B5dUgG7DQjd5WIsmNwDzpAg/BO4/QH+T7r0Rx1tGklCr1P3fDgnLY7TRnvU7VFR+PEAVH9ME= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=c22uhavI; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="c22uhavI" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6ea6aa3b68bso74517297b3.3 for ; Tue, 05 Nov 2024 13:27:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842022; x=1731446822; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=zD1HnzB3QtGTgZf1hSToxgFVkHLaqYNzGE0Bj2UaIas=; b=c22uhavILiY3pfg4m0SZPXY7lzvvT2OvNmlb0Ne/mRm3TkbZJPvNNZe9qcPE3eK/2G OMS8msNCCZdmhF9Pz7TjAr7XgbuFzR3KPhSi8jKL0VejF/EBQ1thkDcRkGlPC4e9amAf 7plyG12Mjj+k7bl1Q3LWqcem2St1Rxk3n9Kf0pykCfduT94YAjlp8oPKA4Df5ZUEEK1f TIq2Fr3L/krE5ZU1e6L8PggaYBX6y1wpNrFEIapUob14Z8hjV3ypqskVNzq7POrRAOBB SsqyPSfRgAb1CAWfNAt0hibaqrr5YaFeD9vpBLkiyVv8xSLXm1scUG978Swy4fJfynad 3JfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842022; x=1731446822; 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=zD1HnzB3QtGTgZf1hSToxgFVkHLaqYNzGE0Bj2UaIas=; b=RfaHtAKX9sPeYfL4GDY9T8ejyyFjCXGCxGbcOyNcXcINSzx0pCtV8YPldDlCR+jE9p +Wr1xDHeG5xyN2ZW6QlA/pKYwib8aJJzeUF06lCI2p92FWJiXsMII5WjbGtVKf25eJYW 4ZszxsFaktVrXdPGLRdGOU3K7eH1SI1W5Ol8+VH+C9X7DfJUq5piLsD18PFnvgl7obXC d5Z0Br3qiwmUImods0Ov9+eD2D1CSJeHKgvovepizgFA4BtMQKSv70QYkDhSvGVmx3QA TZo8MOzUqMRDqlcrU8Goye7svmgsBdPIxwWR1zrGkzdLuXWg/tqxL6jxWlUjjx2ATxSl kumA== X-Forwarded-Encrypted: i=1; AJvYcCU9ucEdgQcwj/KfS/KPmk+1W9N7NM/l9kWGvOj3V7Szor9rK46ZIecWBdPr0rpwxZbycysJfdkQTmgHe7I=@vger.kernel.org X-Gm-Message-State: AOJu0YyyQgpMyjgZRl26DVInz+rglbwOLQmN4m/TZFXTHTso/cMD+iQB CXmzHh/cyNZtCwvVKLQg8IY9+M3KW3wzintGbwwbQ0jO7hY3b8gHNGPm5B5iv2FN/+9ipVrB1H5 f5N3AwQ== X-Google-Smtp-Source: AGHT+IFYSn4fm4eOVvhMAc1U4XJw6EVUkAy+GbjMDQC/ITS0oQnXnGjHmMvJHsNARXGrhxuvsS1osl2UYzCM X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a05:690c:628a:b0:6ea:571e:ac46 with SMTP id 00721157ae682-6ea571eb62fmr1160007b3.6.1730842021751; Tue, 05 Nov 2024 13:27:01 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:47 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-2-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 1/6] tool api fs: Correctly encode errno for read/write open failures From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Switch from returning -1 to -errno so that callers can determine types of failure. Signed-off-by: Ian Rogers --- tools/lib/api/fs/fs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 337fde770e45..edec23406dbc 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -296,7 +296,7 @@ int filename__read_int(const char *filename, int *value) int fd =3D open(filename, O_RDONLY), err =3D -1; =20 if (fd < 0) - return -1; + return -errno; =20 if (read(fd, line, sizeof(line)) > 0) { *value =3D atoi(line); @@ -314,7 +314,7 @@ static int filename__read_ull_base(const char *filename, int fd =3D open(filename, O_RDONLY), err =3D -1; =20 if (fd < 0) - return -1; + return -errno; =20 if (read(fd, line, sizeof(line)) > 0) { *value =3D strtoull(line, NULL, base); @@ -372,7 +372,7 @@ int filename__write_int(const char *filename, int value) char buf[64]; =20 if (fd < 0) - return err; + return -errno; =20 sprintf(buf, "%d", value); if (write(fd, buf, sizeof(buf)) =3D=3D sizeof(buf)) --=20 2.47.0.199.ga7371fff76-goog From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BCCB216212 for ; Tue, 5 Nov 2024 21:27:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842026; cv=none; b=B6A4KVNYAK/mQekQTSeUd3pTMJuUB+HD5S9ukrhQvqznH3Rgf3dMfPhbM/3EFPZ8ctQFmZ3S9IZNoo2sN5n34/HVU4ZY6++BbX8HWi35Aw4JJlB4Jp01dzoOwd1wZw3mQnJto9lZgJgJSSgfFs1jvejcZb4a6gN/WewdFYMxJIo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842026; c=relaxed/simple; bh=jqtfqcDozTYMQzjOGe7gtUqSxh4PDuu/Rn5JE1kCsYM=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=WdrG/gnNkwMHuRc3s5RIsmjLetJ7vJ07OI7iH3/qi70da0oMhJI+Ngemy+WSbu/MT1Q/Tr2idpAf8xbARiT/z9z01Lvr4wMSaa1h7ah8PmlE/NiNVlyvL85UfcTVg0/fle064096XxacD0QSHbhwca3S1LKGvGuSGKxwQ1AYmcc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=A4kx+TGc; arc=none smtp.client-ip=209.85.128.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="A4kx+TGc" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6e5bdb9244eso96402617b3.2 for ; Tue, 05 Nov 2024 13:27:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842024; x=1731446824; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=kmeR/ooJwGRf7dfAO7pFQRGOg67G8nX2zbSdm6KkuuA=; b=A4kx+TGcsaI8q4DMua4oVZ1QbZYlqjaHViLDCiXntx07NShMSO6A80fyD6yBxgiqiu yA8vTuveODpme9alhCvMbyhkLrYShTDc0td9a6RTMCooDW73t4uPBJKOfi05YpQQrjAi ZCBI0kM9LLNWBLlRC4rOEgqDa0GM1jeUPftweeAW9ECjy3CizO1ZgPPMLZxwm/LfAMmO WQyy3a24zrx1MsfWaf1tAbz5H2u5zCTWtgxv7vAhjAmbtXmJOpzI24QYqBf5w13w/3sF ihJwwYMj30jgxNmgVZ8/M1ngXKoS/qmZrnch9imVl1VaJV4q+ggpHBR8ag5gehYk3C+0 e9pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842024; x=1731446824; 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=kmeR/ooJwGRf7dfAO7pFQRGOg67G8nX2zbSdm6KkuuA=; b=hos9seyE+f2J1TDFxAne/y9HtwjIAkRQ8/7/9g20/YX5CtbgedcA1xvkggv6grRUgR qAF0LXv7IkBVPBrgtO8uP5jrPfd9fV2V7zGNyzH0/BzV7MbU4VYCm/uVHHghT3HajYhm fQvot42Cci0l27KJnVgNmxMC8/AtrDQMgFNCvZ6idEAcONs9LzS84Rh+yifFoiGM0nRn MEjlD79vPBpcyPuRzh+d4NqqTDWrxuFAidZNGImd1MjyWA3vOvwh1tkML7Y7hG2llb4b Awocjhr8e4n6VUDg/bxWX55kNrEJL5V+4NWah9uHP2sw+dKxA/zY58OXRVC/zkBGXg9Z ql/Q== X-Forwarded-Encrypted: i=1; AJvYcCXgHwXwn1zT/SgE5LnkNANoJgvh8Pncp6lENa4aJO0FZStbp92cCHaFFVku3fkVAGspEFpJMF8OQVAqGos=@vger.kernel.org X-Gm-Message-State: AOJu0YyPRbbsf96NdcL+15noJX+/HmhZvg002ALjXZp/pcHH35FY+yoJ UrfEXZUzHR6ketOngd/sFck0TdbzJCLtmZQBYrBG9uV5GwK2u/8lEfrjFjwTuMGOEbaS9vJoKRk 6h6EPkQ== X-Google-Smtp-Source: AGHT+IEROMSZbX3H3SqE2W1/i5uYPxQiYSylSWGjEsgYWi04FdojKOXP5FLW4BaITLNn/wZr0DKGH+cV4qpf X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a05:690c:23c8:b0:6e6:38:8567 with SMTP id 00721157ae682-6e9d8b296demr2527807b3.8.1730842023763; Tue, 05 Nov 2024 13:27:03 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:48 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-3-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 2/6] perf trace-event: Constify print arguments From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Capture that these functions don't mutate their input. Signed-off-by: Ian Rogers --- tools/perf/util/trace-event-parse.c | 4 ++-- tools/perf/util/trace-event.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-ev= ent-parse.c index f0332bd3a501..6f11ca5513e3 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c @@ -99,7 +99,7 @@ unsigned long long read_size(struct tep_event *event, voi= d *ptr, int size) return tep_read_number(event->tep, ptr, size); } =20 -void event_format__fprintf(struct tep_event *event, +void event_format__fprintf(const struct tep_event *event, int cpu, void *data, int size, FILE *fp) { struct tep_record record; @@ -116,7 +116,7 @@ void event_format__fprintf(struct tep_event *event, trace_seq_destroy(&s); } =20 -void event_format__print(struct tep_event *event, +void event_format__print(const struct tep_event *event, int cpu, void *data, int size) { return event_format__fprintf(event, cpu, data, size, stdout); diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h index bbf8b26bc8da..084068fb36a1 100644 --- a/tools/perf/util/trace-event.h +++ b/tools/perf/util/trace-event.h @@ -39,10 +39,10 @@ trace_event__tp_format(const char *sys, const char *nam= e); =20 struct tep_event *trace_event__tp_format_id(int id); =20 -void event_format__fprintf(struct tep_event *event, +void event_format__fprintf(const struct tep_event *event, int cpu, void *data, int size, FILE *fp); =20 -void event_format__print(struct tep_event *event, +void event_format__print(const struct tep_event *event, int cpu, void *data, int size); =20 int parse_ftrace_file(struct tep_handle *pevent, char *buf, unsigned long = size); --=20 2.47.0.199.ga7371fff76-goog From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06EAC21643F for ; Tue, 5 Nov 2024 21:27:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842028; cv=none; b=nKKRNyrcJTNBLHAnLVutfOaO6sbNv+8FHB0yNzeDnXQ+NyMYzHTmvy4MqG0OkuJfa/6AQzduitUN6+TKelKIDAmalpXTgJOuQwoYUe5nIWt1jO8cjGvhGE0M0M3LC7+dvKGB/CzOnKto9njYFw6bvY/ef+R0R1c1c3wuKlysS38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842028; c=relaxed/simple; bh=fw5FTiisDk5cyhf8wcogBBpQyMSz0nXrYiG3JWj7IaI=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Nqbkjpqsca1O3evTOLSYXNXFSe/gcoyjHkHjBQEzURLU12+YB0dL+/hQvhbN6BA+bLHP531XqZUPIV2radGSlEox6RoipDiKcsk8hGp1o+qKH4gGD2u7qbMQzxWJfQM7BJuuYv7sulj9Y8cxMhtnwSn27t525EizC70/s7LJDpc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Q5nwL+nK; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Q5nwL+nK" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-e2e3321aae0so9256245276.1 for ; Tue, 05 Nov 2024 13:27:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842026; x=1731446826; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=QCWMpv5edYfDnb5d8WWLsWf6rYHjMo4DKAX+NrFH0Vo=; b=Q5nwL+nKC4aChy7+kotvKLU9PuHStTcrtgn2M0YLZnPsyX7+ntetXyVWbl9Fe5H75N Me6Hcwl/8MES5fZ/Ja6GQY/mHUX2+QO+zv5fso4NTPNXEdpGyoahEbFo39zK+K/irfsO ZXgY2kU112OVu0aOgknwPupNu5Hpf7P/9aoxpTvfUixUJAwcdSSGMXslY4ZklmhRYUfW x0ZJebOoSBX/0cmmEALggZOEmR6IwN0HqaQoQ0+allq46tfaX8xw+K0lBbLDRQa58gls HoUJvCtdi750PBmfxr07qOVYFj68fEdY3mamolOBGZ23nwaGcSt1SmdUCdRxWVTUet7+ Bd2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842026; x=1731446826; 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=QCWMpv5edYfDnb5d8WWLsWf6rYHjMo4DKAX+NrFH0Vo=; b=TL+EaJoIsBLhRhEK3EFro8hFRV0jTPKiRlV6J0NoNx/jy7o9JKX0xdT8UWO0Qevm4T ssEMxTpZf92rgf7mO+Pkpkjh4f/Bzjo5m9tWhsx9IpAoJw3F6dKCDdF5Jdaw5ljLjrIF bm8W8w/w1kgx6fzCCtKPCnOAvJJMWWlGum/GjhY6r0kK+cc399TttyvDYl6kcIFinQVO 5qCQgdhzFVs+1BYYJK1177xTU8mAYF12ijgKHzZzfWG6Bx0r0f0F9YSxR17mYd8Q1Veg i1V/s8RnAABsVhDytnUWFgSnPpCrgY2O31/linaLTHNBuER4/hBAQvbzcISJSWdXAf00 ee4A== X-Forwarded-Encrypted: i=1; AJvYcCUIPqPkxqjF7b6c7u2Nw4leanLOcPYVXDd2s2OQUez78V+d0maTpJdipieC9ydNx7pwuPdKNV0wpc/A36w=@vger.kernel.org X-Gm-Message-State: AOJu0YxT1qbq+s9D8GnJxCsnFhxaO9Zknq3waqSmWNuvpsgid+K3zdrI H2uF5+pOfD8l1Refs/aDYToqaqh2owKuC9z2tR6rlyA0u4cIZUdnHwtw2f/sVkbcPa3Uues1H9D ZCxvdAA== X-Google-Smtp-Source: AGHT+IGQnG3PzotYn3w5dRLN75V53FPNsdkX1P6AsVE1rPf1lD2zR9HPjWOt2zF3Rm8ZEU/FfDMAT4bvTT97 X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a25:acc9:0:b0:e28:eae7:f838 with SMTP id 3f1490d57ef6-e30e5917b41mr16656276.0.1730842025995; Tue, 05 Nov 2024 13:27:05 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:49 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-4-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 3/6] perf trace-event: Always build trace-event-info.c From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" trace-event-info.c has no libtraceevent depdendencies, always build it and use it in builtin-record and perf_event_attr printing. Signed-off-by: Ian Rogers --- tools/perf/builtin-record.c | 2 -- tools/perf/util/Build | 2 +- tools/perf/util/perf_event_attr_fprintf.c | 4 ---- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index f83252472921..0b637cea4850 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1748,10 +1748,8 @@ static void record__init_features(struct record *rec) if (rec->no_buildid) perf_header__clear_feat(&session->header, HEADER_BUILD_ID); =20 -#ifdef HAVE_LIBTRACEEVENT if (!have_tracepoints(&rec->evlist->core.entries)) perf_header__clear_feat(&session->header, HEADER_TRACING_DATA); -#endif =20 if (!rec->opts.branch_stack) perf_header__clear_feat(&session->header, HEADER_BRANCH_STACK); diff --git a/tools/perf/util/Build b/tools/perf/util/Build index 1eedead5f2f2..609c69995c51 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build @@ -85,7 +85,7 @@ perf-util-y +=3D pmu-flex.o perf-util-y +=3D pmu-bison.o perf-util-y +=3D tool_pmu.o perf-util-y +=3D svghelper.o -perf-util-$(CONFIG_LIBTRACEEVENT) +=3D trace-event-info.o +perf-util-y +=3D trace-event-info.o perf-util-y +=3D trace-event-scripting.o perf-util-$(CONFIG_LIBTRACEEVENT) +=3D trace-event.o perf-util-$(CONFIG_LIBTRACEEVENT) +=3D trace-event-parse.o diff --git a/tools/perf/util/perf_event_attr_fprintf.c b/tools/perf/util/pe= rf_event_attr_fprintf.c index 59fbbba79697..a73c74b99a3b 100644 --- a/tools/perf/util/perf_event_attr_fprintf.c +++ b/tools/perf/util/perf_event_attr_fprintf.c @@ -212,7 +212,6 @@ static void __p_config_hw_cache_id(char *buf, size_t si= ze, u64 value) } } =20 -#ifdef HAVE_LIBTRACEEVENT static void __p_config_tracepoint_id(char *buf, size_t size, u64 value) { char *str =3D tracepoint_id_to_name(value); @@ -220,7 +219,6 @@ static void __p_config_tracepoint_id(char *buf, size_t = size, u64 value) print_id_hex(str); free(str); } -#endif =20 static void __p_config_id(struct perf_pmu *pmu, char *buf, size_t size, u3= 2 type, u64 value) { @@ -238,9 +236,7 @@ static void __p_config_id(struct perf_pmu *pmu, char *b= uf, size_t size, u32 type case PERF_TYPE_HW_CACHE: return __p_config_hw_cache_id(buf, size, value); case PERF_TYPE_TRACEPOINT: -#ifdef HAVE_LIBTRACEEVENT return __p_config_tracepoint_id(buf, size, value); -#endif case PERF_TYPE_RAW: case PERF_TYPE_BREAKPOINT: default: --=20 2.47.0.199.ga7371fff76-goog From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 750AD216450 for ; Tue, 5 Nov 2024 21:27:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842031; cv=none; b=rFDDOlUUB/D/VMiCHxYFEZ6gxU3jmUHVdJ0VjvKYC8FN2M4Cb4kfduqVBfPeys/Pxb9PetUJiitj27J7Kxd6D4f8IkE4DzWF2UjXhn3cEb5F34XBVYHtQ8/VOeM0LtbuZNFOTU4uBe2esd+m537zm+SBZeXv725dRo32jiRFWg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842031; c=relaxed/simple; bh=kktSizmGuiF+K5THa2oXtQCxLi27KuZABkhpk8xc5Ys=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=buSmgbQn5x1oictC1Io2OfZ8xmRluhk6PaQlCcY2fF3erml8DM+crXgT+5qVm6jI514yvib9aiqXZJQQxuwLsmLFnh+evLxPGhkw8rjt2kXQH1Y/P8C6HYkO0uCS3NZ6DsWXUSxYFw4pB/YRNKBjhVoMNqovm6Tth+R+wKQ0Bic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=bxYTL7ID; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="bxYTL7ID" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-e28fc60660dso8772983276.0 for ; Tue, 05 Nov 2024 13:27:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842028; x=1731446828; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=g9JIxqiyxQ8/YfNKn7aVumhvEGOeYVkTs06oLW8rwk4=; b=bxYTL7ID4A2FUiu85LnBya3hAjh5PhB6AR14SX9Z6VzD4ln6S4ZrPOwlLNTxeIyLoQ XyYCknFAhWHxswZYBkH2cV/rXGRYFP8hYvGMG8J73iTFnCs3aAqZ+P4bIM95zKrhuOxl af2Z7fBgiQn9t/22naXYYDF4tgaIP0GwreTzkX/mjdtFulkMIW97tZrMW25hcrMQwfsv ASiY+H3wwuWLa3QQmxC95TPf9fs1KlJHh9UARUV5hKGyCzxnOKPEb8S/rUHrChkxFOG6 Fx6f24xWnhrqddZE05PmwtkXC2n3iqTwOPMlGoWaf51B8UpHbZ3aB5IVjuGHascDz93S X33A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842028; x=1731446828; 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=g9JIxqiyxQ8/YfNKn7aVumhvEGOeYVkTs06oLW8rwk4=; b=PI5e9YNdgXtx+EYe+StaEgwcFYaAtqkB28xaidt30KPT5nN6IqVKzOj4E6UdNbKFvn RGUvW2RoYkPKCSKz2RegKNaPG/LKG8tvaAp2sfi0zY2p9sCHOGPWMfhEtiaYCtX3Hxza IgNeoxovrAY8woA6yRbLGA1u3+hOtqGq7Cg7oQYeh/TH6pQMCbaiZjgDXJiHn5ixk6PS DhBI3ZKarEhX8LGEy8WYeIoftB6fQgWWS/vx07WIyuyOFIN7hhytT5h7Jv4nuJ3UZIWH OYUJtTbYsXDkC312kAh1yZsDah9cRFS5A4hDY512X0zvelExYTGUTipx5ahXb0ADXcKU HZMA== X-Forwarded-Encrypted: i=1; AJvYcCUZZiHpYUoRJ6+TnhaTFNvpzzWfizjujyESO6R/bn3X74ZEg5uEAM35truWWS95b+9gh8wv+zpccgbddx8=@vger.kernel.org X-Gm-Message-State: AOJu0Yxl247aAHEa0bKJN7I48Vi9OeYo4zcRleu4MAvDmNbji76TVgeE csmJklfjnPF3NLFYC6BnNS+Vk+ct6lmOX6NpQNiq4ZdoKub+vv1b73uxm87kntJMsuv1x5opsQs H+52++w== X-Google-Smtp-Source: AGHT+IHlXkm7uDStF8T8/7c6k3J0fJK6T9+IqrSynk6CWiOkxeDTAp4pZ4oiqvOR4PcOW9LFKpmtKRWeh1eo X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a25:ea48:0:b0:e30:d37d:2792 with SMTP id 3f1490d57ef6-e30d37d2919mr34580276.0.1730842028331; Tue, 05 Nov 2024 13:27:08 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:50 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-5-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 4/6] perf evsel: Add/use accessor for tp_format From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add an accessor function for tp_format. Rather than search+replace uses try to use a variable and reuse it. Add additional NULL checks when accessing/using the value. Make sure the PTR_ERR is nulled out on error path in evsel__newtp_idx. Signed-off-by: Ian Rogers --- tools/perf/builtin-kmem.c | 12 +-- tools/perf/builtin-kwork.c | 3 +- tools/perf/builtin-script.c | 9 ++- tools/perf/builtin-trace.c | 79 +++++++++++++------ tools/perf/util/data-convert-bt.c | 10 ++- tools/perf/util/data-convert-json.c | 8 +- tools/perf/util/evsel.c | 9 ++- tools/perf/util/evsel.h | 5 ++ tools/perf/util/evsel_fprintf.c | 4 +- .../util/scripting-engines/trace-event-perl.c | 3 +- .../scripting-engines/trace-event-python.c | 3 +- tools/perf/util/sort.c | 33 +++++--- tools/perf/util/trace-event-scripting.c | 10 ++- 13 files changed, 128 insertions(+), 60 deletions(-) diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index a756147e2eec..0ffbb0681fd9 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -761,6 +761,7 @@ static int parse_gfp_flags(struct evsel *evsel, struct = perf_sample *sample, }; struct trace_seq seq; char *str, *pos =3D NULL; + const struct tep_event *tp_format; =20 if (nr_gfps) { struct gfp_flag key =3D { @@ -772,8 +773,9 @@ static int parse_gfp_flags(struct evsel *evsel, struct = perf_sample *sample, } =20 trace_seq_init(&seq); - tep_print_event(evsel->tp_format->tep, - &seq, &record, "%s", TEP_PRINT_INFO); + tp_format =3D evsel__tp_format(evsel); + if (tp_format) + tep_print_event(tp_format->tep, &seq, &record, "%s", TEP_PRINT_INFO); =20 str =3D strtok_r(seq.buffer, " ", &pos); while (str) { @@ -2012,13 +2014,13 @@ int cmd_kmem(int argc, const char **argv) =20 if (kmem_page) { struct evsel *evsel =3D evlist__find_tracepoint_by_name(session->evlist,= "kmem:mm_page_alloc"); + const struct tep_event *tp_format =3D evsel ? evsel__tp_format(evsel) : = NULL; =20 - if (evsel =3D=3D NULL) { + if (tp_format =3D=3D NULL) { pr_err(errmsg, "page", "page"); goto out_delete; } - - kmem_page_size =3D tep_get_page_size(evsel->tp_format->tep); + kmem_page_size =3D tep_get_page_size(tp_format->tep); symbol_conf.use_callchain =3D true; } =20 diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c index c1daf82c9b92..e564da5293b5 100644 --- a/tools/perf/builtin-kwork.c +++ b/tools/perf/builtin-kwork.c @@ -1103,7 +1103,8 @@ static char *evsel__softirq_name(struct evsel *evsel,= u64 num) char *name =3D NULL; bool found =3D false; struct tep_print_flag_sym *sym =3D NULL; - struct tep_print_arg *args =3D evsel->tp_format->print_fmt.args; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_print_arg *args =3D tp_format ? tp_format->print_fmt.args : NU= LL; =20 if ((args =3D=3D NULL) || (args->next =3D=3D NULL)) return NULL; diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 6b6d4472db6e..0acdb98314f8 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2289,8 +2289,13 @@ static void process_event(struct perf_script *script, } #ifdef HAVE_LIBTRACEEVENT if (PRINT_FIELD(TRACE) && sample->raw_data) { - event_format__fprintf(evsel->tp_format, sample->cpu, - sample->raw_data, sample->raw_size, fp); + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + if (tp_format) { + event_format__fprintf(tp_format, sample->cpu, + sample->raw_data, sample->raw_size, + fp); + } } #endif if (attr->type =3D=3D PERF_TYPE_SYNTH && PRINT_FIELD(SYNTH)) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c1e9e14c8686..5882a206e248 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -389,7 +389,12 @@ static struct syscall_arg_fmt *evsel__syscall_arg_fmt(= struct evsel *evsel) } =20 if (et->fmt =3D=3D NULL) { - et->fmt =3D calloc(evsel->tp_format->format.nr_fields, sizeof(struct sys= call_arg_fmt)); + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + if (tp_format =3D=3D NULL) + goto out_delete; + + et->fmt =3D calloc(tp_format->format.nr_fields, sizeof(struct syscall_ar= g_fmt)); if (et->fmt =3D=3D NULL) goto out_delete; } @@ -2154,8 +2159,12 @@ static int evsel__init_tp_arg_scnprintf(struct evsel= *evsel, bool *use_btf) struct syscall_arg_fmt *fmt =3D evsel__syscall_arg_fmt(evsel); =20 if (fmt !=3D NULL) { - syscall_arg_fmt__init_array(fmt, evsel->tp_format->format.fields, use_bt= f); - return 0; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + if (tp_format) { + syscall_arg_fmt__init_array(fmt, tp_format->format.fields, use_btf); + return 0; + } } =20 return -ENOMEM; @@ -3026,7 +3035,8 @@ static size_t trace__fprintf_tp_fields(struct trace *= trace, struct evsel *evsel, { char bf[2048]; size_t size =3D sizeof(bf); - struct tep_format_field *field =3D evsel->tp_format->format.fields; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field *field =3D tp_format ? tp_format->format.fields := NULL; struct syscall_arg_fmt *arg =3D __evsel__syscall_arg_fmt(evsel); size_t printed =3D 0, btf_printed; unsigned long val; @@ -3149,11 +3159,13 @@ static int trace__event_handler(struct trace *trace= , struct evsel *evsel, =20 if (evsel__is_bpf_output(evsel)) { bpf_output__fprintf(trace, sample); - } else if (evsel->tp_format) { - if (strncmp(evsel->tp_format->name, "sys_enter_", 10) || - trace__fprintf_sys_enter(trace, evsel, sample)) { + } else { + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + if (tp_format && (strncmp(tp_format->name, "sys_enter_", 10) || + trace__fprintf_sys_enter(trace, evsel, sample))) { if (trace->libtraceevent_print) { - event_format__fprintf(evsel->tp_format, sample->cpu, + event_format__fprintf(tp_format, sample->cpu, sample->raw_data, sample->raw_size, trace->output); } else { @@ -4081,17 +4093,23 @@ static int ordered_events__deliver_event(struct ord= ered_events *oe, static struct syscall_arg_fmt *evsel__find_syscall_arg_fmt_by_name(struct = evsel *evsel, char *arg, char **type) { - struct tep_format_field *field; struct syscall_arg_fmt *fmt =3D __evsel__syscall_arg_fmt(evsel); + const struct tep_event *tp_format; + + if (!fmt) + return NULL; =20 - if (evsel->tp_format =3D=3D NULL || fmt =3D=3D NULL) + tp_format =3D evsel__tp_format(evsel); + if (!tp_format) return NULL; =20 - for (field =3D evsel->tp_format->format.fields; field; field =3D field->n= ext, ++fmt) + for (const struct tep_format_field *field =3D tp_format->format.fields; f= ield; + field =3D field->next, ++fmt) { if (strcmp(field->name, arg) =3D=3D 0) { *type =3D field->type; return fmt; } + } =20 return NULL; } @@ -4844,13 +4862,18 @@ static void evsel__set_syscall_arg_fmt(struct evsel= *evsel, const char *name) const struct syscall_fmt *scfmt =3D syscall_fmt__find(name); =20 if (scfmt) { - int skip =3D 0; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + if (tp_format) { + int skip =3D 0; =20 - if (strcmp(evsel->tp_format->format.fields->name, "__syscall_nr") =3D= =3D 0 || - strcmp(evsel->tp_format->format.fields->name, "nr") =3D=3D 0) - ++skip; + if (strcmp(tp_format->format.fields->name, "__syscall_nr") =3D=3D 0 || + strcmp(tp_format->format.fields->name, "nr") =3D=3D 0) + ++skip; =20 - memcpy(fmt + skip, scfmt->arg, (evsel->tp_format->format.nr_fields - sk= ip) * sizeof(*fmt)); + memcpy(fmt + skip, scfmt->arg, + (tp_format->format.nr_fields - skip) * sizeof(*fmt)); + } } } } @@ -4860,10 +4883,16 @@ static int evlist__set_syscall_tp_fields(struct evl= ist *evlist, bool *use_btf) struct evsel *evsel; =20 evlist__for_each_entry(evlist, evsel) { - if (evsel->priv || !evsel->tp_format) + const struct tep_event *tp_format; + + if (evsel->priv) + continue; + + tp_format =3D evsel__tp_format(evsel); + if (!tp_format) continue; =20 - if (strcmp(evsel->tp_format->system, "syscalls")) { + if (strcmp(tp_format->system, "syscalls")) { evsel__init_tp_arg_scnprintf(evsel, use_btf); continue; } @@ -4871,20 +4900,24 @@ static int evlist__set_syscall_tp_fields(struct evl= ist *evlist, bool *use_btf) if (evsel__init_syscall_tp(evsel)) return -1; =20 - if (!strncmp(evsel->tp_format->name, "sys_enter_", 10)) { + if (!strncmp(tp_format->name, "sys_enter_", 10)) { struct syscall_tp *sc =3D __evsel__syscall_tp(evsel); =20 if (__tp_field__init_ptr(&sc->args, sc->id.offset + sizeof(u64))) return -1; =20 - evsel__set_syscall_arg_fmt(evsel, evsel->tp_format->name + sizeof("sys_= enter_") - 1); - } else if (!strncmp(evsel->tp_format->name, "sys_exit_", 9)) { + evsel__set_syscall_arg_fmt(evsel, + tp_format->name + sizeof("sys_enter_") - 1); + } else if (!strncmp(tp_format->name, "sys_exit_", 9)) { struct syscall_tp *sc =3D __evsel__syscall_tp(evsel); =20 - if (__tp_field__init_uint(&sc->ret, sizeof(u64), sc->id.offset + sizeof= (u64), evsel->needs_swap)) + if (__tp_field__init_uint(&sc->ret, sizeof(u64), + sc->id.offset + sizeof(u64), + evsel->needs_swap)) return -1; =20 - evsel__set_syscall_arg_fmt(evsel, evsel->tp_format->name + sizeof("sys_= exit_") - 1); + evsel__set_syscall_arg_fmt(evsel, + tp_format->name + sizeof("sys_exit_") - 1); } } =20 diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-conve= rt-bt.c index 021e9b1d5cc5..d022d3c2955e 100644 --- a/tools/perf/util/data-convert-bt.c +++ b/tools/perf/util/data-convert-bt.c @@ -426,8 +426,9 @@ static int add_tracepoint_values(struct ctf_writer *cw, struct evsel *evsel, struct perf_sample *sample) { - struct tep_format_field *common_fields =3D evsel->tp_format->format.commo= n_fields; - struct tep_format_field *fields =3D evsel->tp_format->format.field= s; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field *common_fields =3D tp_format->format.common_field= s; + struct tep_format_field *fields =3D tp_format->format.fields; int ret; =20 ret =3D add_tracepoint_fields_values(cw, event_class, event, @@ -1064,8 +1065,9 @@ static int add_tracepoint_types(struct ctf_writer *cw, struct evsel *evsel, struct bt_ctf_event_class *class) { - struct tep_format_field *common_fields =3D evsel->tp_format->format.commo= n_fields; - struct tep_format_field *fields =3D evsel->tp_format->format.field= s; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field *common_fields =3D tp_format ? tp_format->format.= common_fields : NULL; + struct tep_format_field *fields =3D tp_format ? tp_format->format.= fields : NULL; int ret; =20 ret =3D add_tracepoint_fields_types(cw, common_fields, class); diff --git a/tools/perf/util/data-convert-json.c b/tools/perf/util/data-con= vert-json.c index 20bfb0884e9e..eb068f38ca81 100644 --- a/tools/perf/util/data-convert-json.c +++ b/tools/perf/util/data-convert-json.c @@ -230,12 +230,12 @@ static int process_sample_event(const struct perf_too= l *tool, =20 #ifdef HAVE_LIBTRACEEVENT if (sample->raw_data) { - int i; - struct tep_format_field **fields; + struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field **fields =3D tp_format ? tep_event_fields(tp_for= mat) : NULL; =20 - fields =3D tep_event_fields(evsel->tp_format); if (fields) { - i =3D 0; + int i =3D 0; + while (fields[i]) { struct trace_seq s; =20 diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index f780e30aa259..a95db7e900d5 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -570,6 +570,7 @@ struct evsel *evsel__newtp_idx(const char *sys, const c= har *name, int idx, bool evsel->tp_format =3D trace_event__tp_format(sys, name); if (IS_ERR(evsel->tp_format)) { err =3D PTR_ERR(evsel->tp_format); + evsel->tp_format =3D NULL; goto out_free; } attr.config =3D evsel->tp_format->id; @@ -3209,12 +3210,16 @@ u16 evsel__id_hdr_size(const struct evsel *evsel) #ifdef HAVE_LIBTRACEEVENT struct tep_format_field *evsel__field(struct evsel *evsel, const char *nam= e) { - return tep_find_field(evsel->tp_format, name); + struct tep_event *tp_format =3D evsel__tp_format(evsel); + + return tp_format ? tep_find_field(tp_format, name) : NULL; } =20 struct tep_format_field *evsel__common_field(struct evsel *evsel, const ch= ar *name) { - return tep_find_common_field(evsel->tp_format, name); + struct tep_event *tp_format =3D evsel__tp_format(evsel); + + return tp_format ? tep_find_common_field(tp_format, name) : NULL; } =20 void *evsel__rawptr(struct evsel *evsel, struct perf_sample *sample, const= char *name) diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 04934a7af174..c3e53d320bf5 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -257,6 +257,11 @@ static inline struct evsel *evsel__newtp(const char *s= ys, const char *name) { return evsel__newtp_idx(sys, name, 0, true); } + +static inline struct tep_event *evsel__tp_format(struct evsel *evsel) +{ + return evsel->tp_format; +} #endif =20 #ifdef HAVE_LIBTRACEEVENT diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprint= f.c index c2c0500d5da9..54c5702f8c00 100644 --- a/tools/perf/util/evsel_fprintf.c +++ b/tools/perf/util/evsel_fprintf.c @@ -81,13 +81,15 @@ int evsel__fprintf(struct evsel *evsel, struct perf_att= r_details *details, FILE #ifdef HAVE_LIBTRACEEVENT if (details->trace_fields) { struct tep_format_field *field; + const struct tep_event *tp_format; =20 if (evsel->core.attr.type !=3D PERF_TYPE_TRACEPOINT) { printed +=3D comma_fprintf(fp, &first, " (not a tracepoint)"); goto out; } =20 - field =3D evsel->tp_format->format.fields; + tp_format =3D evsel__tp_format(evsel); + field =3D tp_format ? tp_format->format.fields : NULL; if (field =3D=3D NULL) { printed +=3D comma_fprintf(fp, &first, " (no trace field)"); goto out; diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/p= erf/util/scripting-engines/trace-event-perl.c index e16257d5ab2c..0d63b77b5140 100644 --- a/tools/perf/util/scripting-engines/trace-event-perl.c +++ b/tools/perf/util/scripting-engines/trace-event-perl.c @@ -344,7 +344,7 @@ static void perl_process_tracepoint(struct perf_sample = *sample, struct addr_location *al) { struct thread *thread =3D al->thread; - struct tep_event *event =3D evsel->tp_format; + struct tep_event *event; struct tep_format_field *field; static char handler[256]; unsigned long long val; @@ -362,6 +362,7 @@ static void perl_process_tracepoint(struct perf_sample = *sample, if (evsel->core.attr.type !=3D PERF_TYPE_TRACEPOINT) return; =20 + event =3D evsel__tp_format(evsel); if (!event) { pr_debug("ug! no event found for type %" PRIu64, (u64)evsel->core.attr.c= onfig); return; diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools= /perf/util/scripting-engines/trace-event-python.c index d7183134b669..77f1ab2d3eac 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c @@ -946,7 +946,7 @@ static void python_process_tracepoint(struct perf_sampl= e *sample, struct addr_location *al, struct addr_location *addr_al) { - struct tep_event *event =3D evsel->tp_format; + struct tep_event *event; PyObject *handler, *context, *t, *obj =3D NULL, *callchain; PyObject *dict =3D NULL, *all_entries_dict =3D NULL; static char handler_name[256]; @@ -963,6 +963,7 @@ static void python_process_tracepoint(struct perf_sampl= e *sample, =20 bitmap_zero(events_defined, TRACE_EVENT_TYPE_MAX); =20 + event =3D evsel__tp_format(evsel); if (!event) { snprintf(handler_name, sizeof(handler_name), "ug! no event found for type %" PRIu64, (u64)evsel->core.attr.config); diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 168c488f0178..710839ec3f99 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -1038,17 +1038,19 @@ static char *get_trace_output(struct hist_entry *he) .data =3D he->raw_data, .size =3D he->raw_size, }; + struct tep_event *tp_format; =20 evsel =3D hists_to_evsel(he->hists); =20 trace_seq_init(&seq); - if (symbol_conf.raw_trace) { - tep_print_fields(&seq, he->raw_data, he->raw_size, - evsel->tp_format); - } else { - tep_print_event(evsel->tp_format->tep, - &seq, &rec, "%s", TEP_PRINT_INFO); + tp_format =3D evsel__tp_format(evsel); + if (tp_format) { + if (symbol_conf.raw_trace) + tep_print_fields(&seq, he->raw_data, he->raw_size, tp_format); + else + tep_print_event(tp_format->tep, &seq, &rec, "%s", TEP_PRINT_INFO); } + /* * Trim the buffer, it starts at 4KB and we're not going to * add anything more to this buffer. @@ -3293,9 +3295,8 @@ static int __dynamic_dimension__add(struct evsel *evs= el, static int add_evsel_fields(struct evsel *evsel, bool raw_trace, int level) { int ret; - struct tep_format_field *field; - - field =3D evsel->tp_format->format.fields; + struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field *field =3D tp_format ? tp_format->format.fields := NULL; while (field) { ret =3D __dynamic_dimension__add(evsel, field, raw_trace, level); if (ret < 0) @@ -3328,13 +3329,19 @@ static int add_all_matching_fields(struct evlist *e= vlist, { int ret =3D -ESRCH; struct evsel *evsel; - struct tep_format_field *field; =20 evlist__for_each_entry(evlist, evsel) { + struct tep_event *tp_format; + struct tep_format_field *field; + if (evsel->core.attr.type !=3D PERF_TYPE_TRACEPOINT) continue; =20 - field =3D tep_find_any_field(evsel->tp_format, field_name); + tp_format =3D evsel__tp_format(evsel); + if (tp_format =3D=3D NULL) + continue; + + field =3D tep_find_any_field(tp_format, field_name); if (field =3D=3D NULL) continue; =20 @@ -3416,7 +3423,9 @@ static int add_dynamic_entry(struct evlist *evlist, c= onst char *tok, if (!strcmp(field_name, "*")) { ret =3D add_evsel_fields(evsel, raw_trace, level); } else { - struct tep_format_field *field =3D tep_find_any_field(evsel->tp_format, = field_name); + struct tep_event *tp_format =3D evsel__tp_format(evsel); + struct tep_format_field *field =3D + tp_format ? tep_find_any_field(tp_format, field_name) : NULL; =20 if (field =3D=3D NULL) { pr_debug("Cannot find event field for %s.%s\n", diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trac= e-event-scripting.c index bd0000300c77..bab893587863 100644 --- a/tools/perf/util/trace-event-scripting.c +++ b/tools/perf/util/trace-event-scripting.c @@ -28,12 +28,14 @@ void scripting_context__update(struct scripting_context= *c, struct addr_location *al, struct addr_location *addr_al) { - c->event_data =3D sample->raw_data; - c->pevent =3D NULL; #ifdef HAVE_LIBTRACEEVENT - if (evsel->tp_format) - c->pevent =3D evsel->tp_format->tep; + const struct tep_event *tp_format =3D evsel__tp_format(evsel); + + c->pevent =3D tp_format ? tp_format->tep : NULL; +#else + c->pevent =3D NULL; #endif + c->event_data =3D sample->raw_data; c->event =3D event; c->sample =3D sample; c->evsel =3D evsel; --=20 2.47.0.199.ga7371fff76-goog From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E5BF216A12 for ; Tue, 5 Nov 2024 21:27:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842033; cv=none; b=SqZgqlijNpzjX+HQiVSBC5LOF7bDrP63hnoCnpwjin6ijufQoFJRJshgZ+ZDuojUzBoDlbURjke82NY5ixD2dtzcacsVpGH/Tg6vDwjmb2Mihq5GzHrCEWResC24wcXwviwP5h8GuDRXonsNj3WrmPqkfc0vOIHIrYtUd9pzN78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842033; c=relaxed/simple; bh=qcUpsCevuN/4ezMm92doq0Egamb9T9a2FAtuBKLW57I=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=JwNosmxP5/5p2/VBThaEsJW74RDwWQEChwKqXHV9IYehvt6n9A3FTnbY182ZzgcDTOO/rnnvkyoxWRhwJzj5WSukxaiEp1P/LxSHa9invcE1VPnWUEXhfu2x1eg1rqRuaWYgb/2Vom5DsphGn7lbfAhgCTzQ1jyuLYeqeSXQNYY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=3i39oQM0; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="3i39oQM0" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6ea527764c3so114256637b3.0 for ; Tue, 05 Nov 2024 13:27:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842030; x=1731446830; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=cKL4rNcuhrwPlLoLHBamtHw/kLIkbIZ6raoruCdzEkE=; b=3i39oQM0QQhaTZeSVZWrPZkF+RhuTrm51YqWfKnmOXNqDlSbFL2DxSTY3/sK09K6yU pSa6TFhI0qXyXDjoOjXgCpwNevGWdH5ZRIp+IRto9y6WV3TcFjRr8J5Jc47CLv82Y9cP /CBw8YULldg7qlFxsbRViagCOTacmAlm4QQTyqhdbNhw9Ec5R46rF8qgeDC0MXp1d9JU xDL1Rf13qYGPjAaMaV/43doTmZ4irmy8i2TzNRUUEsaLvXpDhIMLQUWxbRBHQvpeQvKF 2x03FafGEyS7pt6ypaPO7EjgcE9zIED8LpRqkUDrewCwfz3CwiJYh35s9pYTwPvuDqL1 oMMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842030; x=1731446830; 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=cKL4rNcuhrwPlLoLHBamtHw/kLIkbIZ6raoruCdzEkE=; b=WVQpVB/rtSeQpIKMm3xmmitcauSX5CmUz66sdV6T0yeBMW2vU2U91iAnL927Q1qS3N 0XShGvjmdZCFlRyNDdh3aXH9MgELOFNOZhAVbhAoD94Cag+PTc656h9Bx8WGAfQ6NcEo mfcx0/gg3iVjdoHE4CXPNrwVC5z7uXS0wgn7Byd3l2nQF0TWGrYP9tlm3MQkbOX+t/kM efaPavJrVt13eGYeO5/uSq8y7hpCyhzLVXqH1aMW5k8ZXbxJJ/2TDXHyeONvJKAgEJHd 3ELvKVXYmwx+qYPMHayCGIJya/aqeG8VTvXRClis5bQM571OlFgzvsiFzqsk90lNrOXR e1Lg== X-Forwarded-Encrypted: i=1; AJvYcCVSROsC8kzpu8jpvfApswkfOkMpg7aqKDx6UWjI+AK7vnqSskpk1YQwUF6LfgFxCNoLyvK6KOxQUcI6zFg=@vger.kernel.org X-Gm-Message-State: AOJu0Yxy2OiL8s43AtoZqDsPT06sDQTHUX9kheyd1fMR2NQD4pSO8rY8 dYM8+vELI47P31Kvw6/u0gyQeT/nrT2admgGzPrX7g06OED+ALIjdUifcGl7Fr8vRfQxvghvKCJ waPrQYw== X-Google-Smtp-Source: AGHT+IFv1sJKq07men45gPnsWR9dVL6mOnMJVvJj4ob2Bl+KtxZ/0C1pvMFJQl0nS23CEVtHEPUlpZPsXzhm X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a05:690c:4c09:b0:6e7:e493:2db6 with SMTP id 00721157ae682-6ea3b951361mr2800337b3.3.1730842030506; Tue, 05 Nov 2024 13:27:10 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:51 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-6-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 5/6] perf evsel: Allow evsel__newtp without libtraceevent From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Switch from reading the tracepoint format to reading the id directly for the evsel config. This avoids the need to initialize libtraceevent, plugins, etc. It is sufficient for many tracepoint commands to work like: $ perf stat -e sched:sched_switch true To populate evsel->tp_format, do lazy initialization using libtraceevent in the evsel__tp_format function (the sys and name are saved in evsel__newtp_idx for this purpose). Reading the id should be indicative of the format failing to load, but if not an error is reported in evsel__tp_format. This could happen for a tracepoint with a format that fails to parse. As tracepoints can be parsed without libtraceevent with this, remove the associated #ifdefs in parse-events.c. By only lazily parsing the tracepoint format information it is hoped this will help improve the performance of code using tracepoints but not the format information. It also cuts down on the build and ifdef logic. Signed-off-by: Ian Rogers --- tools/perf/util/evsel.c | 103 ++++++++++++++++++++++++--------- tools/perf/util/evsel.h | 14 ++--- tools/perf/util/parse-events.c | 16 +---- 3 files changed, 82 insertions(+), 51 deletions(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index a95db7e900d5..56e19e32a852 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -543,54 +543,101 @@ struct evsel *evsel__clone(struct evsel *orig) return NULL; } =20 +static int trace_event__id(const char *sys, const char *name) +{ + char *tp_dir =3D get_events_file(sys); + char path[PATH_MAX]; + int id, err; + + if (!tp_dir) + return -1; + + scnprintf(path, PATH_MAX, "%s/%s/id", tp_dir, name); + put_events_file(tp_dir); + err =3D filename__read_int(path, &id); + if (err) + return err; + + return id; +} + /* * Returns pointer with encoded error via interface. */ -#ifdef HAVE_LIBTRACEEVENT struct evsel *evsel__newtp_idx(const char *sys, const char *name, int idx,= bool format) { + struct perf_event_attr attr =3D { + .type =3D PERF_TYPE_TRACEPOINT, + .sample_type =3D (PERF_SAMPLE_RAW | PERF_SAMPLE_TIME | + PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD), + }; struct evsel *evsel =3D zalloc(perf_evsel__object.size); - int err =3D -ENOMEM; + int err =3D -ENOMEM, id =3D -1; =20 - if (evsel =3D=3D NULL) { + if (evsel =3D=3D NULL) goto out_err; - } else { - struct perf_event_attr attr =3D { - .type =3D PERF_TYPE_TRACEPOINT, - .sample_type =3D (PERF_SAMPLE_RAW | PERF_SAMPLE_TIME | - PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD), - }; =20 - if (asprintf(&evsel->name, "%s:%s", sys, name) < 0) - goto out_free; =20 - event_attr_init(&attr); + if (asprintf(&evsel->name, "%s:%s", sys, name) < 0) + goto out_free; =20 - if (format) { - evsel->tp_format =3D trace_event__tp_format(sys, name); - if (IS_ERR(evsel->tp_format)) { - err =3D PTR_ERR(evsel->tp_format); - evsel->tp_format =3D NULL; - goto out_free; - } - attr.config =3D evsel->tp_format->id; - } else { - attr.config =3D (__u64) -1; - } +#ifdef HAVE_LIBTRACEEVENT + evsel->tp_sys =3D strdup(sys); + if (!evsel->tp_sys) + goto out_free; =20 + evsel->tp_name =3D strdup(name); + if (!evsel->tp_name) + goto out_free; +#endif =20 - attr.sample_period =3D 1; - evsel__init(evsel, &attr, idx); - } + event_attr_init(&attr); =20 + if (format) { + id =3D trace_event__id(sys, name); + if (id < 0) { + err =3D id; + goto out_free; + } + } + attr.config =3D (__u64)id; + attr.sample_period =3D 1; + evsel__init(evsel, &attr, idx); return evsel; =20 out_free: zfree(&evsel->name); +#ifdef HAVE_LIBTRACEEVENT + zfree(&evsel->tp_sys); + zfree(&evsel->tp_name); +#endif free(evsel); out_err: return ERR_PTR(err); } + +#ifdef HAVE_LIBTRACEEVENT +struct tep_event *evsel__tp_format(struct evsel *evsel) +{ + struct tep_event *tp_format =3D evsel->tp_format; + + if (tp_format) + return tp_format; + + if (evsel->core.attr.type !=3D PERF_TYPE_TRACEPOINT) + return NULL; + + tp_format =3D trace_event__tp_format(evsel->tp_sys, evsel->tp_name); + if (IS_ERR(tp_format)) { + int err =3D -PTR_ERR(evsel->tp_format); + + pr_err("Error getting tracepoint format '%s' '%s'(%d)\n", + evsel__name(evsel), strerror(err), err); + return NULL; + } + evsel->tp_format =3D tp_format; + return evsel->tp_format; +} #endif =20 const char *const evsel__hw_names[PERF_COUNT_HW_MAX] =3D { @@ -1587,6 +1634,10 @@ void evsel__exit(struct evsel *evsel) perf_thread_map__put(evsel->core.threads); zfree(&evsel->group_name); zfree(&evsel->name); +#ifdef HAVE_LIBTRACEEVENT + zfree(&evsel->tp_sys); + zfree(&evsel->tp_name); +#endif zfree(&evsel->filter); zfree(&evsel->group_pmu_name); zfree(&evsel->unit); diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index c3e53d320bf5..93b6244ec302 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -59,6 +59,8 @@ struct evsel { char *group_name; const char *group_pmu_name; #ifdef HAVE_LIBTRACEEVENT + char *tp_sys; + char *tp_name; struct tep_event *tp_format; #endif char *filter; @@ -247,25 +249,17 @@ int copy_config_terms(struct list_head *dst, struct l= ist_head *src); void free_config_terms(struct list_head *config_terms); =20 =20 -#ifdef HAVE_LIBTRACEEVENT -struct evsel *evsel__newtp_idx(const char *sys, const char *name, int idx,= bool format); - /* * Returns pointer with encoded error via interface. */ +struct evsel *evsel__newtp_idx(const char *sys, const char *name, int idx,= bool format); static inline struct evsel *evsel__newtp(const char *sys, const char *name) { return evsel__newtp_idx(sys, name, 0, true); } =20 -static inline struct tep_event *evsel__tp_format(struct evsel *evsel) -{ - return evsel->tp_format; -} -#endif - #ifdef HAVE_LIBTRACEEVENT -struct tep_event *event_format__new(const char *sys, const char *name); +struct tep_event *evsel__tp_format(struct evsel *evsel); #endif =20 void evsel__init(struct evsel *evsel, struct perf_event_attr *attr, int id= x); diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index afeb8d815bbf..7fc1c36ef2a4 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -489,7 +489,6 @@ int parse_events_add_cache(struct list_head *list, int = *idx, const char *name, return found_supported ? 0 : -EINVAL; } =20 -#ifdef HAVE_LIBTRACEEVENT static void tracepoint_error(struct parse_events_error *e, int err, const char *sys, const char *name, int column) { @@ -644,7 +643,6 @@ static int add_tracepoint_multi_sys(struct parse_events= _state *parse_state, closedir(events_dir); return ret; } -#endif /* HAVE_LIBTRACEEVENT */ =20 size_t default_breakpoint_len(void) { @@ -1066,7 +1064,6 @@ static int config_term_pmu(struct perf_event_attr *at= tr, return config_term_common(attr, term, err); } =20 -#ifdef HAVE_LIBTRACEEVENT static int config_term_tracepoint(struct perf_event_attr *attr, struct parse_events_term *term, struct parse_events_error *err) @@ -1111,7 +1108,6 @@ static int config_term_tracepoint(struct perf_event_a= ttr *attr, =20 return 0; } -#endif =20 static int config_attr(struct perf_event_attr *attr, const struct parse_events_terms *head, @@ -1303,7 +1299,7 @@ int parse_events_add_tracepoint(struct parse_events_s= tate *parse_state, struct parse_events_terms *head_config, void *loc_) { YYLTYPE *loc =3D loc_; -#ifdef HAVE_LIBTRACEEVENT + if (head_config) { struct perf_event_attr attr; =20 @@ -1318,16 +1314,6 @@ int parse_events_add_tracepoint(struct parse_events_= state *parse_state, else return add_tracepoint_event(parse_state, list, sys, event, err, head_config, loc); -#else - (void)parse_state; - (void)list; - (void)sys; - (void)event; - (void)head_config; - parse_events_error__handle(err, loc->first_column, strdup("unsupported tr= acepoint"), - strdup("libtraceevent is necessary for tracepoint support")); - return -1; -#endif } =20 static int __parse_events_add_numeric(struct parse_events_state *parse_sta= te, --=20 2.47.0.199.ga7371fff76-goog From nobody Sun Nov 24 12:08:45 2024 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05F69216203 for ; Tue, 5 Nov 2024 21:27:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842038; cv=none; b=rRgEP3UlXI4jLrJxBLfXZTyO3sK/Y+lT/fLVRJGlkZZrL50ThqNIL8qv0eDUM39piAboqt+AbJJfZXCF7TGkxDyu1eVMMILKpU7lr3ktoP+rJcUjsP6Ut4FnRzjrmMb19ngsBxML74LPsR51IRm4Azhlnqgw4sIvyTBy0b1tXH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730842038; c=relaxed/simple; bh=TkS5pGIRNnEam46bfgl9Uj7ffjeE7cIcCgpMGBkUSW0=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=KzO6i2woj6zJakLPUO2p4YklU8E4KarjOgjYZayH7WiJPHQAqNte0UsV/fveK7ysQDX/gf8/eAYz8UMZI/KzoEwPIXStsCZfutNkOjRedWg0BMfjhTjesH2R4PnQgn8CBiKcunQPRmNU5tp89lf15HjxAXVv1U7Ewg06ijO5jTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=vSyUidcq; arc=none smtp.client-ip=209.85.128.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="vSyUidcq" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6ea82a5480fso66615307b3.0 for ; Tue, 05 Nov 2024 13:27:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1730842034; x=1731446834; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=M2PH93HMmorh1b48i5mQD0XLDSM5RTSRQhDdzjBbjYo=; b=vSyUidcqVcdp90i/CKHbddEqU1x8N8ReUwLFJWakuVkDafP2cdU6ueGXLAcB5Zj3L7 kzYCSIGDZAS3MrBZvQCn0W/5JfpTfXuI+vtc1btj8UB7H2WresOOW0NpdT+umM08vi1Q AUn1hXFVDaSdTpYMc4KNqOL7jJMUy/14hvXZxMQ7GnVNmGJqfofZIE8rV9IUVeViJCJR 8gFzSjg24wceM0zmRZce5d45d1KhIYKLHMopgahxX/moymGQFiOj+TmPk1d6RobMDQWR ViI/2PiDQIokiWp2IHRYMuKLpVEm5DK1FbFYh7XSNDDSr48Gr/OQpWBxNNtac78QKteA PUnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730842034; x=1731446834; 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=M2PH93HMmorh1b48i5mQD0XLDSM5RTSRQhDdzjBbjYo=; b=smBkEDTVreIYkGondF/9SaVks9ktvJHezwCaD3QrTQWlIcEM0varC3McBI4IEAZ5ZO uI9enkVyJjxO37aeTQyYBcpHJHZWzbkiO4CgucsAZGcyK3aurAIhTGs4yLPE6ghmTpu3 HE/0sxkTPYQtyGOyaY1d71HW7WwuIw12kz9HVdmZspaFOIxgXSnYWRzqQikPyGUKx1WB U3KT4WwUM2NOBk3H0mIFgiFBlSoeolBwza2TFFyDyIQugpJv+YaEKm2qK2U8oeyij+oL P36E0WVdu4PEzI7fnscklIbPEDzhtgi7gvfIr+92wY/xhnQppaluWJk82sHrDa0Yf1od smAw== X-Forwarded-Encrypted: i=1; AJvYcCVBy5XEaqH8sq/abSAmUzLVIie1ErIAtX6xELw8iMgsKBkU3jpWAB0bCZl8ntLabDK0vMW3JyXsh9KZqGE=@vger.kernel.org X-Gm-Message-State: AOJu0YySH68hjh10PtncdZVqeK/dEzC8ubVcn+fht4LQEdUcETtxY2Xd qKPtoKSh0n0QvmrU05QzguKYppmD9WMmfQ9xqgTysElU0oFUHK2GxtZYgXOhiHyBRPg8QT4z6yy l86QDow== X-Google-Smtp-Source: AGHT+IFjcXLcs06B8eplottHdJv3MowMx13MBZYVrZnj9CxGN1Q3h93fubGTb1YnkrC9EQnU8zgOBA2YBhDb X-Received: from irogers.svl.corp.google.com ([2620:15c:2c5:11:ff9e:ab12:75ac:c1a0]) (user=irogers job=sendgmr) by 2002:a05:690c:4484:b0:6dd:fda3:6568 with SMTP id 00721157ae682-6ea64b8c23cmr1322607b3.3.1730842034072; Tue, 05 Nov 2024 13:27:14 -0800 (PST) Date: Tue, 5 Nov 2024 13:26:52 -0800 In-Reply-To: <20241105212652.401943-1-irogers@google.com> Message-Id: <20241105212652.401943-7-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241105212652.401943-1-irogers@google.com> X-Mailer: git-send-email 2.47.0.199.ga7371fff76-goog Subject: [PATCH v3 6/6] perf tests: Enable tests disabled due to tracepoint parsing From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Athira Jajeev , James Clark , Dominique Martinet , Yang Li , Colin Ian King , Yang Jihong , "Steinar H. Gunderson" , Oliver Upton , Ilkka Koskinen , Ze Gao , Weilin Wang , Ben Gainey , zhaimingbing , Zixian Cai , Andi Kleen , Paran Lee , Thomas Falcon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, "Steven Rostedt (Google)" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Tracepoint parsing required libtraceevent but no longer does. Remove the Build logic and #ifdefs that caused the tests not to be run. Test code that directly uses libtraceevent is still guarded. Signed-off-by: Ian Rogers --- tools/perf/tests/Build | 6 +++--- tools/perf/tests/builtin-test.c | 2 -- tools/perf/tests/parse-events.c | 25 +------------------------ 3 files changed, 4 insertions(+), 29 deletions(-) diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build index 01ed9335db4d..f26a668a96df 100644 --- a/tools/perf/tests/Build +++ b/tools/perf/tests/Build @@ -5,10 +5,10 @@ perf-test-y +=3D tests-scripts.o perf-test-y +=3D parse-events.o perf-test-y +=3D dso-data.o perf-test-y +=3D vmlinux-kallsyms.o -perf-test-$(CONFIG_LIBTRACEEVENT) +=3D openat-syscall.o -perf-test-$(CONFIG_LIBTRACEEVENT) +=3D openat-syscall-all-cpus.o +perf-test-y +=3D openat-syscall.o +perf-test-y +=3D openat-syscall-all-cpus.o perf-test-$(CONFIG_LIBTRACEEVENT) +=3D openat-syscall-tp-fields.o -perf-test-$(CONFIG_LIBTRACEEVENT) +=3D mmap-basic.o +perf-test-y +=3D mmap-basic.o perf-test-y +=3D perf-record.o perf-test-y +=3D evsel-roundtrip-name.o perf-test-$(CONFIG_LIBTRACEEVENT) +=3D evsel-tp-sched.o diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index d2cabaa8ad92..4c3b622130a9 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -60,11 +60,9 @@ static struct test_suite *arch_tests[] =3D { =20 static struct test_suite *generic_tests[] =3D { &suite__vmlinux_matches_kallsyms, -#ifdef HAVE_LIBTRACEEVENT &suite__openat_syscall_event, &suite__openat_syscall_event_on_all_cpus, &suite__basic_mmap, -#endif &suite__mem, &suite__parse_events, &suite__expr, diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-event= s.c index 82a19674a38f..5ec2e5607987 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c @@ -54,8 +54,6 @@ static bool test_perf_config(const struct perf_evsel *evs= el, __u64 expected_conf return (evsel->attr.config & PERF_HW_EVENT_MASK) =3D=3D expected_config; } =20 -#ifdef HAVE_LIBTRACEEVENT - #if defined(__s390x__) /* Return true if kvm module is available and loaded. Test this * and return success when trace point kvm_s390_create_vm @@ -112,7 +110,6 @@ static int test__checkevent_tracepoint_multi(struct evl= ist *evlist) } return TEST_OK; } -#endif /* HAVE_LIBTRACEEVENT */ =20 static int test__checkevent_raw(struct evlist *evlist) { @@ -311,7 +308,6 @@ static int test__checkevent_breakpoint_rw(struct evlist= *evlist) return TEST_OK; } =20 -#ifdef HAVE_LIBTRACEEVENT static int test__checkevent_tracepoint_modifier(struct evlist *evlist) { struct evsel *evsel =3D evlist__first(evlist); @@ -340,7 +336,6 @@ test__checkevent_tracepoint_multi_modifier(struct evlis= t *evlist) =20 return test__checkevent_tracepoint_multi(evlist); } -#endif /* HAVE_LIBTRACEEVENT */ =20 static int test__checkevent_raw_modifier(struct evlist *evlist) { @@ -629,7 +624,6 @@ static int test__checkevent_pmu(struct evlist *evlist) return TEST_OK; } =20 -#ifdef HAVE_LIBTRACEEVENT static int test__checkevent_list(struct evlist *evlist) { struct evsel *evsel =3D evlist__first(evlist); @@ -671,7 +665,6 @@ static int test__checkevent_list(struct evlist *evlist) =20 return TEST_OK; } -#endif =20 static int test__checkevent_pmu_name(struct evlist *evlist) { @@ -971,7 +964,6 @@ static int test__group2(struct evlist *evlist) return TEST_OK; } =20 -#ifdef HAVE_LIBTRACEEVENT static int test__group3(struct evlist *evlist __maybe_unused) { struct evsel *evsel, *group1_leader =3D NULL, *group2_leader =3D NULL; @@ -1078,7 +1070,6 @@ static int test__group3(struct evlist *evlist __maybe= _unused) } return TEST_OK; } -#endif =20 static int test__group4(struct evlist *evlist __maybe_unused) { @@ -1813,7 +1804,6 @@ static int test__term_equal_legacy(struct evlist *evl= ist) return TEST_OK; } =20 -#ifdef HAVE_LIBTRACEEVENT static int count_tracepoints(void) { struct dirent *events_ent; @@ -1867,7 +1857,6 @@ static int test__all_tracepoints(struct evlist *evlis= t) =20 return test__checkevent_tracepoint_multi(evlist); } -#endif /* HAVE_LIBTRACEVENT */ =20 struct evlist_test { const char *name; @@ -1876,7 +1865,6 @@ struct evlist_test { }; =20 static const struct evlist_test test__events[] =3D { -#ifdef HAVE_LIBTRACEEVENT { .name =3D "syscalls:sys_enter_openat", .check =3D test__checkevent_tracepoint, @@ -1887,7 +1875,6 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_tracepoint_multi, /* 1 */ }, -#endif { .name =3D "r1a", .check =3D test__checkevent_raw, @@ -1938,7 +1925,6 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_breakpoint_w, /* 1 */ }, -#ifdef HAVE_LIBTRACEEVENT { .name =3D "syscalls:sys_enter_openat:k", .check =3D test__checkevent_tracepoint_modifier, @@ -1949,7 +1935,6 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_tracepoint_multi_modifier, /* 3 */ }, -#endif { .name =3D "r1a:kp", .check =3D test__checkevent_raw_modifier, @@ -1995,13 +1980,11 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_breakpoint_w_modifier, /* 2 */ }, -#ifdef HAVE_LIBTRACEEVENT { .name =3D "r1,syscalls:sys_enter_openat:k,1:1:hp", .check =3D test__checkevent_list, /* 3 */ }, -#endif { .name =3D "instructions:G", .check =3D test__checkevent_exclude_host_modifier, @@ -2032,13 +2015,11 @@ static const struct evlist_test test__events[] =3D { .check =3D test__group2, /* 9 */ }, -#ifdef HAVE_LIBTRACEEVENT { .name =3D "group1{syscalls:sys_enter_openat:H,cycles:kppp},group2{cycle= s,1:3}:G,instructions:u", .check =3D test__group3, /* 0 */ }, -#endif { .name =3D "{cycles:u,instructions:kp}:p", .check =3D test__group4, @@ -2049,13 +2030,11 @@ static const struct evlist_test test__events[] =3D { .check =3D test__group5, /* 2 */ }, -#ifdef HAVE_LIBTRACEEVENT { .name =3D "*:*", .check =3D test__all_tracepoints, /* 3 */ }, -#endif { .name =3D "{cycles,cache-misses:G}:H", .check =3D test__group_gh1, @@ -2111,7 +2090,7 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_breakpoint_len_rw_modifier, /* 4 */ }, -#if defined(__s390x__) && defined(HAVE_LIBTRACEEVENT) +#if defined(__s390x__) { .name =3D "kvm-s390:kvm_s390_create_vm", .check =3D test__checkevent_tracepoint, @@ -2265,13 +2244,11 @@ static const struct evlist_test test__events[] =3D { .check =3D test__checkevent_breakpoint_2_events, /* 3 */ }, -#ifdef HAVE_LIBTRACEEVENT { .name =3D "9p:9p_client_req", .check =3D test__checkevent_tracepoint, /* 4 */ }, -#endif }; =20 static const struct evlist_test test__events_pmu[] =3D { --=20 2.47.0.199.ga7371fff76-goog