From patchwork Fri Oct 8 04:26:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544357 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95BFCC433FE for ; Fri, 8 Oct 2021 04:27:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 689E260F35 for ; Fri, 8 Oct 2021 04:27:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229606AbhJHE3B (ORCPT ); Fri, 8 Oct 2021 00:29:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233346AbhJHE3A (ORCPT ); Fri, 8 Oct 2021 00:29:00 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CE00C061570 for ; Thu, 7 Oct 2021 21:27:05 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id t16so9484426eds.9 for ; Thu, 07 Oct 2021 21:27:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KS8r8oY8x2kfdcoMywa4LhAV1/KUW+EnGnL0wzDkhKI=; b=cQUjolmZ8chBhvRWR7DxyGaSJrjLriLvt0l48q0oDazp6zN5KkWiZnFHzk8vYVY/de AvlTcd8iuttE0A2gCRyNqT9vB/VzS9UiqdD6auZrjc/u5B1dRlczLGydKO4LQi5Qsz+6 dtkpV2psyGUuYyTLPpkuDIzC0nvbU1j67UW5+fW4fBoLIQi8qfjBqK8qpwMlP+2JcYuk N3BrmFpOm+9GN2akrcy4lHlWCa+9XgkR6IKJdN7/c9ehNtsTnLObY+trEd4FG+j69BJN q3uPe1TBsGe1wsMDo2i+QyGV1oqUeeH9V9Q4cyn3fOGMfvx4kahTtEjPCHaccrfJdP8p zrrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KS8r8oY8x2kfdcoMywa4LhAV1/KUW+EnGnL0wzDkhKI=; b=mojjIvMbGXQ5BgeIxumzTQS4T7HWrYksjTSdXqdP2cYFko3e7Jds5Jipe+Jhet5DCz msHKQfb6QFGEw3HM0AtWSQPyaqfhM4V+1HjMO1ESzWZi6OjzpaMznc5mLk7EKdmyvJxG oPB79bEeG5jUHtTYmQhiPLEz0QMA1kCYE5Z0feyD+Dt+C5AFJjnofb+TvPsY33gc76EH dw1UCvB4Tnu2Ifbg2LIw4Q2kz53rHw1PrRR2/+uLTh3eaMAV4OOStss+Xd+CpqEtgO1X wqSpX0AO+JY7zUmsO8IuieNouLJXcrrMVi6HxO15F6PpI7vgdlqVoNPLyPZi2j5K94/L 0++A== X-Gm-Message-State: AOAM530/i4Qohq55Uo8RNQjCGVIR0Duj7W160dvNjUkSA1eqnG5WbchP XBaODXd6/6eFur+7bbCA7XYagUCefxNj5Q== X-Google-Smtp-Source: ABdhPJzFcx+eWsJQKRv7mLF8apQaGfRvJFN0KV+9ioKUf1R47r/RatHCinXubND6lTQTaQjjh0lO1w== X-Received: by 2002:a50:cfc3:: with SMTP id i3mr11870213edk.36.1633667224180; Thu, 07 Oct 2021 21:27:04 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:03 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 01/10] trace-cmd dump: Add helpers for processing trace file version 7 Date: Fri, 8 Oct 2021 07:26:52 +0300 Message-Id: <20211008042701.979075-2-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org New global variables are added, that hold trace file context: - trace file version - compression context Also a few helper functions for reading compressed data. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 88 ++++++++++++++++++++++++++++++++----------- 1 file changed, 67 insertions(+), 21 deletions(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index 2334b57e..d0278f7e 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -26,6 +26,9 @@ static struct tep_handle *tep; static unsigned int trace_cpus; static int has_clock; +static unsigned long file_version; +static bool read_compress; +static struct tracecmd_compression *compress; enum dump_items { SUMMARY = (1 << 0), @@ -52,46 +55,69 @@ enum dump_items verbosity; tracecmd_plog(fmt, ##__VA_ARGS__); \ } while (0) -static int read_file_string(int fd, char *dst, int len) +static int read_fd(int fd, char *dst, int len) { size_t size = 0; int r; do { - r = read(fd, dst+size, 1); + r = read(fd, dst+size, len); if (r > 0) { - size++; - len--; + size += r; + len -= r; } else break; - if (!dst[size - 1]) - break; - } while (r > 0 && len); + } while (r > 0); - if (!size || dst[size - 1]) + if (len) return -1; - return 0; + return size; } -static int read_file_bytes(int fd, char *dst, int len) +static int read_compressed(int fd, char *dst, int len) +{ + + if (read_compress) + return tracecmd_compress_read(compress, dst, len); + return read_fd(fd, dst, len); +} + +static int do_lseek(int fd, int offset, int whence) +{ + if (read_compress) + return tracecmd_compress_lseek(compress, offset, whence); + return lseek64(fd, offset, whence); +} + +static int read_file_string(int fd, char *dst, int len) { size_t size = 0; int r; do { - r = read(fd, dst+size, len); + r = read_compressed(fd, dst+size, 1); if (r > 0) { - size += r; - len -= r; + size++; + len--; } else break; - } while (r > 0); + if (!dst[size - 1]) + break; + } while (r > 0 && len); - if (len) + if (!size || dst[size - 1]) return -1; return 0; } +static int read_file_bytes(int fd, char *dst, int len) +{ + int ret; + + ret = read_compressed(fd, dst, len); + return ret < 0 ? ret : 0; +} + static void read_dump_string(int fd, int size, enum dump_items id) { char buf[DUMP_SIZE]; @@ -146,7 +172,6 @@ static void dump_initial_format(int fd) char magic[] = TRACECMD_MAGIC; char buf[DUMP_SIZE]; int val4; - unsigned long ver; do_print(SUMMARY, "\t[Initial format]\n"); @@ -168,11 +193,11 @@ static void dump_initial_format(int fd) die("no version string"); do_print(SUMMARY, "\t\t%s\t[Version]\n", buf); - ver = strtol(buf, NULL, 10); - if (!ver && errno) + file_version = strtol(buf, NULL, 10); + if (!file_version && errno) die("Invalid file version string %s", buf); - if (!tracecmd_is_version_supported(ver)) - die("Unsupported file version %lu", ver); + if (!tracecmd_is_version_supported(file_version)) + die("Unsupported file version %lu", file_version); /* get file endianness*/ if (read_file_bytes(fd, buf, 1)) @@ -234,6 +259,27 @@ static void dump_header_event(int fd) read_dump_string(fd, size, HEAD_EVENT); } +static void uncompress_reset(void) +{ + if (compress && file_version >= FILE_VERSION_COMPRESSION) { + read_compress = false; + tracecmd_compress_reset(compress); + } +} + +static int uncompress_block(void) +{ + int ret = 0; + + if (compress && file_version >= FILE_VERSION_COMPRESSION) { + ret = tracecmd_uncompress_block(compress); + if (!ret) + read_compress = true; + + } + return ret; +} + static void dump_ftrace_events_format(int fd) { unsigned long long size; @@ -578,7 +624,7 @@ static void dump_options(int fd) default: do_print(OPTIONS, " %d %d\t[Unknown option, size - skipping]\n", option, size); - lseek64(fd, size, SEEK_CUR); + do_lseek(fd, size, SEEK_CUR); break; } } From patchwork Fri Oct 8 04:26:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544359 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6EB7C4332F for ; Fri, 8 Oct 2021 04:27:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C056F610CE for ; Fri, 8 Oct 2021 04:27:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229973AbhJHE3B (ORCPT ); Fri, 8 Oct 2021 00:29:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229714AbhJHE3B (ORCPT ); Fri, 8 Oct 2021 00:29:01 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B37DC061570 for ; Thu, 7 Oct 2021 21:27:06 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id a25so15512072edx.8 for ; Thu, 07 Oct 2021 21:27:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XuGRDg06q73jbPgmeD6b8pH/4xE6jY0heKZ3XoehWA8=; b=LFiDll08LDr1FV0D8xbpaSZVV8K62vYA2mA2UJvquCpL49gLWkSLlUTbNIIodA051W lvub9whCH7P30kJZ7s+4hx5k5mb0uYGcCDtcEgWD+4iolO6NRKtuRAzG1yyRFNsGjJYl KU0i1xrw1RzQ6ciefJsltDAsvie34dmh56QGm3HwfR5FJ6C5ZeOV3nJfBBI7MnMD7gTD IgclI4n2i3sieEfINbuPzxeWido8uCwogKYclmuAGVQ7dHEiyvxcf1f3nk6/p/4JKSIE BhcLgzx60aeIjT+I3//S2P4sgbr1ewFrPZGMvBfkvvEoCUONadDc374VMDqi3t2lN+xz XFEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XuGRDg06q73jbPgmeD6b8pH/4xE6jY0heKZ3XoehWA8=; b=dbIYy+YBJ3WZzB6mQD4YD71cP5ExsQof/pQwAzsL3kfdIPPWhBpeafVu2/v/BL/rGs SDnA/jW9ykALucB620JmeypdWSvVHh4uOJWOqbixi9hDZW6hgyOkexfJBJUR2I21/O7n iApLh4lCUrBsk9MlbMz/iJss9BI0Kezlzo+bVQ4iBOcyRDEvRuYwoPWnlPavovFz66V9 FymOaAf/2U4SttH5ZyVv5yn34u4v1P6uvg35tBcVklhNQBLRKbzW8OlEPATLR1gtGtyY bTig0MW0FIsc9ElPFwVaT/s/asL71k+SP1wNS2wWoGh++rRgXY726MJqyYUeoyeEwMwy 3oYQ== X-Gm-Message-State: AOAM532lmJNMqxCblcIdMdipNy87sIAnEnd3u+9Jb+aSGQzsvUSGvVwu 93LGcpmecbLp+vC1JwwUFAmRx6vUSw5Nyg== X-Google-Smtp-Source: ABdhPJwdhjNGs5i0OC3W/o6TlXw/ZQZR6okQrwDGTGayjQJ0n/BRiT5DiHLGFAyoWD9amIkUCyEF+w== X-Received: by 2002:a05:6402:3088:: with SMTP id de8mr11936986edb.76.1633667225221; Thu, 07 Oct 2021 21:27:05 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:04 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 02/10] trace-cmd dump: Print compression header Date: Fri, 8 Oct 2021 07:26:53 +0300 Message-Id: <20211008042701.979075-3-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Dump the compression header of trace file version 7 Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index d0278f7e..3cce231f 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -217,6 +217,29 @@ static void dump_initial_format(int fd) do_print(SUMMARY, "\t\t%d\t[Page size, bytes]\n", val4); } +static void dump_compress(int fd) +{ + char zname[DUMP_SIZE]; + char zver[DUMP_SIZE]; + + if (file_version < FILE_VERSION_COMPRESSION) + return; + + /* get compression header */ + if (read_file_string(fd, zname, DUMP_SIZE)) + die("no compression header"); + if (read_file_string(fd, zver, DUMP_SIZE)) + die("no compression version"); + do_print((SUMMARY), "\t\t%s\t[Compression algorithm]\n", zname); + do_print((SUMMARY), "\t\t%s\t[Compression version]\n", zver); + + if (strcmp(zname, "none")) { + compress = tracecmd_compress_alloc(zname, zver, fd, tep, NULL); + if (!compress) + die("cannot uncompress the file"); + } +} + static void dump_header_page(int fd) { unsigned long long size; @@ -715,6 +738,7 @@ static void dump_file(const char *file) do_print(SUMMARY, "\n Tracing meta data in file %s:\n", file); dump_initial_format(fd); + dump_compress(fd); dump_header_page(fd); dump_header_event(fd); dump_ftrace_events_format(fd); From patchwork Fri Oct 8 04:26:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544361 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B46F2C433F5 for ; Fri, 8 Oct 2021 04:27:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9326A610CE for ; Fri, 8 Oct 2021 04:27:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229757AbhJHE3C (ORCPT ); Fri, 8 Oct 2021 00:29:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229714AbhJHE3C (ORCPT ); Fri, 8 Oct 2021 00:29:02 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87FD8C061570 for ; Thu, 7 Oct 2021 21:27:07 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id r18so31329760edv.12 for ; Thu, 07 Oct 2021 21:27:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Yh40ZYgMwbP81n6hFixo15LEQgbd5DixHArPEoYRm6A=; b=MLQUcjINejjRvhlCDzpPJNmBCOE7O6shbNMQ2nSbYl3oTFZtOFlk1d8TLSRQ/S/Z3S JHaTktLlmw3XAYxcsw5lviK7aN5pFamPYOBYP370mhRo96eGN+2rW5FbMYShZjzMFuPs IRkTo/8aEZPUyHd2hDBv3feId/IIV7f/JpEg2QXslicWjSdIkNwt6jEwmb2GAnGD0lyU JopODW+yB1CutwlS9dFPUKsS/H1wLiZPOdC0y9l+oI2dvoLdY1sCKOFln7bWWrk4B0Y/ yP+e0ytuAagUaKQ9YoZT2PTGpASSjaTRHDGOpWxfHvyPjgoovuGvxRkD7+i6Tby/q1eV 7jJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yh40ZYgMwbP81n6hFixo15LEQgbd5DixHArPEoYRm6A=; b=Mbs1ZTt2kj3+IJXyjAfwqds2y0gaeUJNbPtwEfi5i+R4r2112wmfkYwnkl5RR6i+Wu SD+7u6eFRRVJtWqQ/GpSmKOwN87lIDCZcskrSgC3fIpQ3TZ6o11tfdskNCc1oOQrPnht IWvEH7veOp+eO5U2ab2BQ+8RfnR8U4yLfUsv+MDGU+WwGzg89DOX6yLWGBsQcxSfUxnB 1TaVEFjgWlyPJ3bB9cmj7C7jYEg8dtoid2syTp5xuDgrIHlzoDfGSL+AT+qhh5aBVnR+ R/KpDV8bbh7HQMIJLqtZ+cFKjUEKP4IWaUlYFULsoCcTiRRCtASmjM82Ugik5xyJzOI1 cSQg== X-Gm-Message-State: AOAM531FqYD/zbQoTnGS6oEdDdhe+LTvk5id4SBwroP7Vo5pAYpMgv5F P47zd3waY1YMBiC8bhZFLW6tGbCeRbe6gg== X-Google-Smtp-Source: ABdhPJzsMcE6ImoLAZhGs40ODZFK1daGCMZsofDy51LKrrJqNC9alxOVIRtYlfUt8Aas9GeqrQ/Z2w== X-Received: by 2002:a50:dac3:: with SMTP id s3mr11774351edj.322.1633667226202; Thu, 07 Oct 2021 21:27:06 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:05 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 03/10] trace-cmd dump: Add helpers for processing trace file sections Date: Fri, 8 Oct 2021 07:26:54 +0300 Message-Id: <20211008042701.979075-4-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Added a new local database for storing sections, found in trace file version 7. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index 3cce231f..f7284436 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -43,8 +43,18 @@ enum dump_items { OPTIONS = (1 << 9), FLYRECORD = (1 << 10), CLOCK = (1 << 11), + SECTIONS = (1 << 12), }; +struct file_section { + int id; + unsigned long long offset; + struct file_section *next; + enum dump_items verbosity; +}; + +static struct file_section *sections; + enum dump_items verbosity; #define DUMP_CHECK(X) ((X) & verbosity) @@ -723,6 +733,17 @@ static void dump_therest(int fd) } } +static void free_sections(void) +{ + struct file_section *del; + + while (sections) { + del = sections; + sections = sections->next; + free(del); + } +} + static void dump_file(const char *file) { int fd; @@ -748,7 +769,7 @@ static void dump_file(const char *file) dump_cmdlines(fd); dump_cpus_count(fd); dump_therest(fd); - + free_sections(); tep_free(tep); tep = NULL; close(fd); From patchwork Fri Oct 8 04:26:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544363 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9EA3C433EF for ; Fri, 8 Oct 2021 04:27:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A07C761090 for ; Fri, 8 Oct 2021 04:27:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233672AbhJHE3F (ORCPT ); Fri, 8 Oct 2021 00:29:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229714AbhJHE3D (ORCPT ); Fri, 8 Oct 2021 00:29:03 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D27BC061570 for ; Thu, 7 Oct 2021 21:27:09 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id g8so31292871edt.7 for ; Thu, 07 Oct 2021 21:27:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wg0a57cr/r26Fm3sybPaTjbWfq8hx070vW8oQ3zhuAQ=; b=eBXzOj5K7r2L9vhgNozpxsb35dL9qBuzCoZPcG3y9q8W2Eclyn1HCZWILpxe9mnMvM /eCHxoHpX0mi3hKsmO3Lcc45lZP+auYH6YSNf0DzBjnHbTogJacBcpAEgenTf9iR0M7B f17rFIAM9dSutDpDl4JaUI+OPRUtpiNtHk16xK5nUM3tsleVjN62RKOtV8iaaKr/Y/YH 9y+9x9xVADRwS6UpZepX444RMeSgqppwPKTmzj0OXyVks3eaBmGfzv549UTfd+akR4BG j3ybcipezBV5Ael8E9ZYeNWoSWFuyL7PqwBC8rgZgHzwiXGNryza3W1sAziio0Stt3tO fhBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wg0a57cr/r26Fm3sybPaTjbWfq8hx070vW8oQ3zhuAQ=; b=BhERSelBRY7bMXUzOBp/11Pi5dgj+mGgg2ZEB7c1QadCBBqL/5iOd15XGx52Ac8p3N HnPmd29Y9q8/OMXYlQoJog1f0/7ED2sj08r9jDZXhN+b8rcN3uwBeQQ7Q6RQLTQgNPaa KEs+8Y7l5EYjISK467PB8LKoQ8URjp4sUDoMmpq0GthpPQqVeXjLLh8gyiYK3IxdBxp5 qjZ83N1mBGvIqbsz0GDXFygKH/mDnPE5ay6695V8IvspOXBoX7+3iwYy6VdqOHhMeshg tjGlkp2p7qV/MPxnmDsnd/zbfdCz2RzomAwoM/gWZm6xSpdfy1r1HRrn+2CUm2ZzTzVL RKrQ== X-Gm-Message-State: AOAM532EpmM8Hq4381Tp/JKI+Ia/Q6dZvW9D+ZOK8SsQpD8eFaESYNkb tG/KZ65r3yC79hQ5xrNEBa4BB54vYsv9qQ== X-Google-Smtp-Source: ABdhPJzklR1zPjkb4Ytn4gabQz+eTMM6Hrdw/YDtvt/mhBUOKtDrSF4sLTqX5amDujDNLSVLoOZedw== X-Received: by 2002:a17:906:4895:: with SMTP id v21mr1334673ejq.299.1633667227638; Thu, 07 Oct 2021 21:27:07 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:06 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 04/10] trace-cmd dump: Read recursively all options sections Date: Fri, 8 Oct 2021 07:26:55 +0300 Message-Id: <20211008042701.979075-5-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Trace file version 7 supports multiple options sections in the file. The DONE option is extended to hold the offset to the next options section. A new logic for handling the extended DONE option and to read recursively all options sections is added. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 76 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 8 deletions(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index f7284436..dcc41030 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -422,6 +422,30 @@ static void dump_option_string(int fd, int size, char *desc) read_dump_string(fd, size, OPTIONS); } +static void dump_section_header(int fd, enum dump_items v, unsigned short *flags) +{ + unsigned long long offset; + unsigned short fl; + char buf[DUMP_SIZE]; + unsigned short id; + int size; + + offset = lseek64(fd, 0, SEEK_CUR); + if (read_file_number(fd, &id, 2)) + die("cannot read the section id"); + if (read_file_string(fd, buf, DUMP_SIZE)) + die("no section description"); + if (read_file_number(fd, &fl, 2)) + die("cannot read the section flags"); + if (read_file_number(fd, &size, 4)) + die("cannot read section size"); + do_print(v, "\t[Section %d @ %lld: \"%s\", flags 0x%X, %d bytes]\n", + id, offset, buf, fl, size); + + if (flags) + *flags = fl; +} + static void dump_option_buffer(int fd, int size) { unsigned long long offset; @@ -591,25 +615,48 @@ void dump_option_tsc2nsec(int fd, int size) do_print(OPTIONS, "%d %d %llu [multiplier, shift, offset]\n", mult, shift, offset); } -static void dump_options(int fd) +static int dump_options_read(int fd); + +static int dump_option_done(int fd, int size) { + unsigned long long offset; + + do_print(OPTIONS, "\t\t[Option DONE, %d bytes]\n", size); + + if (file_version < FILE_VERSION_SECTIONS || size < 8) + return 0; + if (read_file_number(fd, &offset, 8)) + die("cannot read the next options offset"); + do_print(OPTIONS, "%lld\n", offset); + if (!offset) + return 0; + + if (lseek64(fd, offset, SEEK_SET) == (off_t)-1) + die("cannot goto next options offset %lld", offset); + return dump_options_read(fd); +} + +static int dump_options_read(int fd) +{ + unsigned short flags = 0; unsigned short option; unsigned int size; int count = 0; + if (file_version >= FILE_VERSION_SECTIONS) + dump_section_header(fd, OPTIONS, &flags); + if ((flags & TRACECMD_SEC_FL_COMPRESS) && uncompress_block()) + die("cannot uncompress file block"); + for (;;) { if (read_file_number(fd, &option, 2)) die("cannot read the option id"); - if (!option) + if (option == TRACECMD_OPTION_DONE && file_version < FILE_VERSION_SECTIONS) break; if (read_file_number(fd, &size, 4)) die("cannot read the option size"); count++; - if (!DUMP_CHECK(OPTIONS) && !DUMP_CHECK(CLOCK) && !DUMP_CHECK(SUMMARY)) { - lseek64(fd, size, SEEK_CUR); - continue; - } switch (option) { case TRACECMD_OPTION_DATE: dump_option_string(fd, size, "DATE"); @@ -621,7 +668,8 @@ static void dump_options(int fd) dump_option_buffer(fd, size); break; case TRACECMD_OPTION_TRACECLOCK: - dump_option_string(fd, size, "TRACECLOCK"); + do_print(OPTIONS, "\t\t[Option TRACECLOCK, %d bytes]\n", size); + read_dump_string(fd, size, OPTIONS | CLOCK); has_clock = 1; break; case TRACECMD_OPTION_UNAME: @@ -654,6 +702,10 @@ static void dump_options(int fd) case TRACECMD_OPTION_TSC2NSEC: dump_option_tsc2nsec(fd, size); break; + case TRACECMD_OPTION_DONE: + uncompress_reset(); + count += dump_option_done(fd, size); + return count; default: do_print(OPTIONS, " %d %d\t[Unknown option, size - skipping]\n", option, size); @@ -661,8 +713,16 @@ static void dump_options(int fd) break; } } - do_print(SUMMARY, "\t[%d options]\n", count); + uncompress_reset(); + return count; +} + +static void dump_options(int fd) +{ + int count; + count = dump_options_read(fd); + do_print(SUMMARY|OPTIONS, "\t[%d options]\n", count); } static void dump_latency(int fd) From patchwork Fri Oct 8 04:26:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544365 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B945BC433F5 for ; Fri, 8 Oct 2021 04:27:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 95A1B61073 for ; Fri, 8 Oct 2021 04:27:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236407AbhJHE3H (ORCPT ); Fri, 8 Oct 2021 00:29:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233346AbhJHE3E (ORCPT ); Fri, 8 Oct 2021 00:29:04 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1247BC061755 for ; Thu, 7 Oct 2021 21:27:10 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id i20so15239089edj.10 for ; Thu, 07 Oct 2021 21:27:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EQImAUfB8hEyGOBENCgXjmTM8Q/S6OcGuARs0lMu7IE=; b=JTr5fPqjg2VuUONZVYqNIGr70LcjncVEZ87CtLDaVeSz+lqf70coWcoQF2gFYCQmlz lbAo+EPKHzE1ypAoHvOyxcbo5DwDETuBoyO2qAykNPijRx/stWGGNjVg8d+JMFatsdOj pI5L3mUvd86OwLBgda9f9ewVcGjm4H5G/SpxXaa09Aveh2gPAMvi6ob6ap+7DUzcyEdr Nz3DAOsHqbZQSpVzwCImwAsV14eAnjHjdOKxQZLSlLqdL5i9f67YNGm19urVlqMzuBcy xcjc8oEv283NKpEHPi/ula/0exl1fC/oGE9hzPy9BY5RzMvHiwouZwNhotXs/wI0kmvd jFqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EQImAUfB8hEyGOBENCgXjmTM8Q/S6OcGuARs0lMu7IE=; b=4K1OuU0xhKqRke2BOrT4duI/W00Wh3vFRKbFKj7vAVyszKPCNEHNS3k7srHwTSukAf LyGtBtVmuS3ErfWSCMDsM/xpq0xQVNYvpkyLn6E0qJsoCYP3P+GaThuq3/FUgdMwvF1/ W5JsrTBEeyDfQefz4RFXuUkSWpiYc90l75aOyg0DrG+qCs/LYv8s+F06fGHbQ+spgEsO WL4ikYvF0RreNhDLStLkKKUS8pTmWiu5vrFMg6gr/tNSA0yhfT6EHiZcWZqlQm3H3X7v hHTKTcMaGXio2h7LnSPw4OLhiHLXIt8pKYp4TYVf6qorl4ToXi/oQOedrQmnnAMVpqaZ mktA== X-Gm-Message-State: AOAM533S3gP9/GxOSlE/Ib66Ae33EYmQdlL3VvlyXtnV8GGLQ39rl+dq zF70wifogorASImC3ZEdSxeGqxxEcjLHhQ== X-Google-Smtp-Source: ABdhPJwnFMxwiASDOeVEJeYhubzkZ06vFsIofXDIlDLyiN8S2fJJiFRCogJlSXCkyl6r1aLHCzvrDg== X-Received: by 2002:a50:d987:: with SMTP id w7mr11567770edj.240.1633667228663; Thu, 07 Oct 2021 21:27:08 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:08 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 05/10] trace-cmd dump: Read extended BUFFER option Date: Fri, 8 Oct 2021 07:26:56 +0300 Message-Id: <20211008042701.979075-6-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org In trace file version 7 the BUFFER option is extended to hold a trace metadata, related to the recorded instance. Also, a new BUFFER_TEXT option is added for latency trace data. Implemented logic for reading and printing these extended options. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 64 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index dcc41030..c44870c4 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -446,19 +446,72 @@ static void dump_section_header(int fd, enum dump_items v, unsigned short *flags *flags = fl; } -static void dump_option_buffer(int fd, int size) +static void dump_option_buffer(int fd, unsigned short option, int size) { + unsigned long long total_size = 0; + unsigned long long data_size; + unsigned long long current; unsigned long long offset; + unsigned short flags; + char clock[DUMP_SIZE]; + char name[DUMP_SIZE]; + int cpus = 0; + int id; + int i; if (size < 8) die("broken buffer option with size %d", size); if (read_file_number(fd, &offset, 8)) die("cannot read the offset of the buffer option"); + if (read_file_string(fd, name, DUMP_SIZE)) + die("cannot read the name of the buffer option"); + if (file_version < FILE_VERSION_SECTIONS) { + do_print(OPTIONS|FLYRECORD, "\t\t[Option BUFFER, %d bytes]\n", size); + do_print(OPTIONS|FLYRECORD, "%lld [offset]\n", offset); + do_print(OPTIONS|FLYRECORD, "\"%s\" [name]\n", name); + return; + } + + current = lseek64(fd, 0, SEEK_CUR); + if (lseek64(fd, offset, SEEK_SET) == (off_t)-1) + die("cannot goto buffer offset %lld", offset); + + dump_section_header(fd, FLYRECORD, &flags); + + if (lseek64(fd, current, SEEK_SET) == (off_t)-1) + die("cannot go back to buffer option"); + + do_print(OPTIONS|FLYRECORD, "\t\t[Option BUFFER, %d bytes]\n", size); + do_print(OPTIONS|FLYRECORD, "%lld [offset]\n", offset); + do_print(OPTIONS|FLYRECORD, "\"%s\" [name]\n", name); + + if (read_file_string(fd, clock, DUMP_SIZE)) + die("cannot read clock of the buffer option"); + do_print(OPTIONS|FLYRECORD, "\"%s\" [clock]\n", clock); + if (option == TRACECMD_OPTION_BUFFER) { + if (read_file_number(fd, &cpus, 4)) + die("cannot read the cpu count of the buffer option"); + + do_print(OPTIONS|FLYRECORD, "%d [CPUs]:\n", cpus); + for (i = 0; i < cpus; i++) { + if (read_file_number(fd, &id, 4)) + die("cannot read the id of cpu %d from the buffer option", i); + if (read_file_number(fd, &offset, 8)) + die("cannot read the offset of cpu %d from the buffer option", i); + if (read_file_number(fd, &data_size, 8)) + die("cannot read the data size of cpu %d from the buffer option", i); + total_size += data_size; + do_print(OPTIONS|FLYRECORD, " %d %lld\t%lld\t[id, data offset and size]\n", + id, offset, data_size); + } + do_print(SUMMARY, "\t\[buffer \"%s\", \"%s\" clock, " + "%d cpus, %lld bytes flyrecord data]\n", + name, clock, cpus, total_size); + } else { + do_print(SUMMARY, "\t\[buffer \"%s\", \"%s\" clock, latency data]\n", name, clock); + } - do_print(OPTIONS, "\t\t[Option BUFFER, %d bytes]\n", size); - do_print(OPTIONS, "%lld [offset]\n", offset); - read_dump_string(fd, size - 8, OPTIONS); } static void dump_option_int(int fd, int size, char *desc) @@ -665,7 +718,8 @@ static int dump_options_read(int fd) dump_option_string(fd, size, "CPUSTAT"); break; case TRACECMD_OPTION_BUFFER: - dump_option_buffer(fd, size); + case TRACECMD_OPTION_BUFFER_TEXT: + dump_option_buffer(fd, option, size); break; case TRACECMD_OPTION_TRACECLOCK: do_print(OPTIONS, "\t\t[Option TRACECLOCK, %d bytes]\n", size); From patchwork Fri Oct 8 04:26:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544367 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87DA4C4332F for ; Fri, 8 Oct 2021 04:27:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6CCBA61073 for ; Fri, 8 Oct 2021 04:27:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233051AbhJHE3I (ORCPT ); Fri, 8 Oct 2021 00:29:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236070AbhJHE3F (ORCPT ); Fri, 8 Oct 2021 00:29:05 -0400 Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 14227C061570 for ; Thu, 7 Oct 2021 21:27:11 -0700 (PDT) Received: by mail-ed1-x533.google.com with SMTP id z20so30961388edc.13 for ; Thu, 07 Oct 2021 21:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=w07ei+vuellAhsrpRQKM7ECaOSyrjL1xjJLvVhkLfpg=; b=SrsqerFf1zqTbTupf4S35TH33cxQ5hh/FwdM3Mq7zcgndr2k3OFRMAx4Lfp5edLCoi PiMIJZ8qDepFg7C5VE0ZL1jH+EFxHtu6FpnYJ+yuwtodkQYjgaDo0MdsRIRpi1kiFm2T qfR/prKZ/3u3m8fbxrtSBSXvAyCAS25GVyfrezkocHeZsehmI2qo1mpyHORI6LgdvQFi bdfeSm8PbOZ05u9ON6sy7gqqmYT6yEWZerBBuXeL/SL5N3flDm1KeosPHq1WbSeZGPpb vUkLUyr7sySY+omVzsM7hqZencackst0fpYMtcDK1D1mUIyZHp+e/cKMv8mDnRTCrezR uC3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=w07ei+vuellAhsrpRQKM7ECaOSyrjL1xjJLvVhkLfpg=; b=GZadYQp/Ga4hNblY1Nm4elyP/Hz5ZC+NY4GGYKlVmt/mfjmrS6RlI7OQ18MUZAoo3T qu28Vj4w7dksXcsmLdurjIZ71lmNU9i0GTPnKpk6q3NI/3MmTobBXtQpc/n+nh+8x9DZ D2nDuGrtSdXr6viIu8f/NePHdLNk/ENPDBaewEdAaVKf6df+soc5QWUDq5thmtXkdAfM QI+YQOzcsQ/l3uAJ8XJco8hb6a0XH7FDd7zxbwf+5ABUXwetca6QeZq6NCfjMzkhtrjv js4U3a8dRLBbrrdSk7FG7VJ8J90t2x8ByBQFF2QUlV4CdT+Vn/GinS4IbMnbfQFgW2XD OP1Q== X-Gm-Message-State: AOAM531Gygkuwfr6V9Uos6nRePqP4BlQTnfcIFu78RsKJcKIRGpTjZaU XsBpddt/tZOzoLex3WhHdOyiEdZwhRokDw== X-Google-Smtp-Source: ABdhPJwCbZvWXZkc0l2Ebi3z6FLjTitczCof7iRmMW8WeV4rTubd3yIUgmSqf4Uz06KMq0LC0Ltpig== X-Received: by 2002:a05:6402:485:: with SMTP id k5mr11669761edv.257.1633667229740; Thu, 07 Oct 2021 21:27:09 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:09 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 06/10] trace-cmd dump: Dump sections Date: Fri, 8 Oct 2021 07:26:57 +0300 Message-Id: <20211008042701.979075-7-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org In trace file version 7, headers are stored as sections. This allows their position in the file not to be fixed. Pointers to these sections are stored as trace options. Add logic to handle these new options: HEADER_INFO FTRACE_EVENTS EVENT_FORMATS KALLSYM PRINTK CMDLINES Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index c44870c4..3394847c 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -668,6 +668,24 @@ void dump_option_tsc2nsec(int fd, int size) do_print(OPTIONS, "%d %d %llu [multiplier, shift, offset]\n", mult, shift, offset); } +static void dump_option_section(int fd, unsigned int size, + unsigned short id, char *desc, enum dump_items v) +{ + struct file_section *sec; + + sec = calloc(1, sizeof(struct file_section)); + if (!sec) + die("cannot allocate new section"); + sec->next = sections; + sections = sec; + sec->id = id; + sec->verbosity = v; + if (read_file_number(fd, &sec->offset, 8)) + die("cannot read the option %d offset", id); + do_print(OPTIONS, "\t\t[Option %s, %d bytes]\n", desc, size); + do_print(OPTIONS, "%lld\n", sec->offset); +} + static int dump_options_read(int fd); static int dump_option_done(int fd, int size) @@ -756,6 +774,25 @@ static int dump_options_read(int fd) case TRACECMD_OPTION_TSC2NSEC: dump_option_tsc2nsec(fd, size); break; + case TRACECMD_OPTION_HEADER_INFO: + dump_option_section(fd, size, option, "HEADERS", HEAD_PAGE | HEAD_EVENT); + break; + case TRACECMD_OPTION_FTRACE_EVENTS: + dump_option_section(fd, size, option, "FTRACE EVENTS", FTRACE_FORMAT); + break; + case TRACECMD_OPTION_EVENT_FORMATS: + dump_option_section(fd, size, option, + "EVENT FORMATS", EVENT_SYSTEMS | EVENT_FORMAT); + break; + case TRACECMD_OPTION_KALLSYMS: + dump_option_section(fd, size, option, "KALLSYMS", KALLSYMS); + break; + case TRACECMD_OPTION_PRINTK: + dump_option_section(fd, size, option, "PRINTK", TRACE_PRINTK); + break; + case TRACECMD_OPTION_CMDLINES: + dump_option_section(fd, size, option, "CMDLINES", CMDLINES); + break; case TRACECMD_OPTION_DONE: uncompress_reset(); count += dump_option_done(fd, size); From patchwork Fri Oct 8 04:26:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544369 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50817C433FE for ; Fri, 8 Oct 2021 04:27:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3747D60F35 for ; Fri, 8 Oct 2021 04:27:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236070AbhJHE3J (ORCPT ); Fri, 8 Oct 2021 00:29:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229714AbhJHE3G (ORCPT ); Fri, 8 Oct 2021 00:29:06 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BC0DC061755 for ; Thu, 7 Oct 2021 21:27:12 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id b8so31260194edk.2 for ; Thu, 07 Oct 2021 21:27:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XBqB9KoV1o24qWOyKjje4CKxWGz3YUwcOPKCLKEWJ0Y=; b=CVXHdjH25KUOG4GahXq++k9+wwBiZivR8aCQnQlW5em8udhy7GZs5N33DGrHNG/jF8 pqnn9CzUc8UDQMj4lBIYCbM2YsrZnHhcRl3zgMb73YGkOUYQaGubCE/CfLnFe8uB0TBH K6xHX1QE9zZ7H2A+MtS0R1zjOju/GZ/LI++MMFLFj1+hjmyGWjLMgWQ6N60zcuG2LY1C NMLuJ73AQIWWNFQh575OcCPE/74WZVKpdP4+xrwhiFyQmjI+Oz1LO8FyVRDmI0UnWJjd zkIYgXGEfB/NRCHYLDb779oEQousN1a3+K2/PxEsMgyR05w5UGj/vuE4LIgE+pRSmkMo uAVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XBqB9KoV1o24qWOyKjje4CKxWGz3YUwcOPKCLKEWJ0Y=; b=gd0aIHmDDG9TjuM6mcUkmqJMez8vhyU8yA+hbUiO2yWzdrgX3T/ZotLTXZ46LLoXa+ +MRYVD5fwQB9NT58Fv41xGYlxhZez+q45yCtCAoUoqDllfUVDEhgIW1ThgQ01ctcBNmn 17809pZ6kRVxUjr90zPTc9BdpMvKvI+8ODuH8KVppbXxPAJCG9krUh4RORQA53rQwsP1 PKJqijGRH7UoVUXpQtW1xQ5qfYKzW82B5nDnwGGtWZc5kOk2s08Pt8uBd8u7BpZN669w eDR5QZ4Azzw0KBQQnhDLyKdJIer9vn2uz+VARgmwW1YdMue3gjhgymli4HnGQsjkIsiq HtRQ== X-Gm-Message-State: AOAM530uGXxbBBcW+CvNhJ0/ZMtzR/n9jemgtRMvDW16Ns6LXQ0IV7lL kDm0wdOYf9TYGYvD+55/fRnrI6+vuQYt/g== X-Google-Smtp-Source: ABdhPJwo8GswazwvkbHun2t0WBggA5Iu/QJkEVb3cpdvc+6oozNQKSF5zJY+6O5XAyjJ5IPPqCkcZA== X-Received: by 2002:a05:6402:142e:: with SMTP id c14mr11823556edx.209.1633667230720; Thu, 07 Oct 2021 21:27:10 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:10 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 07/10] trace-cmd dump: Dump trace file version 7 Date: Fri, 8 Oct 2021 07:26:58 +0300 Message-Id: <20211008042701.979075-8-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Trace file version 7 has different structure than version 6. Separates parsing both versions in different flows. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index 3394847c..44f103d8 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -884,6 +884,31 @@ static void dump_therest(int fd) } } +static void dump_v6_file(int fd) +{ + dump_header_page(fd); + dump_header_event(fd); + dump_ftrace_events_format(fd); + dump_events_format(fd); + dump_kallsyms(fd); + dump_printk(fd); + dump_cmdlines(fd); + dump_cpus_count(fd); + dump_therest(fd); +} + +static void dump_v7_file(int fd) +{ + long long offset; + + if (read_file_number(fd, &offset, 8)) + die("cannot read offset of the first option section"); + + if (lseek64(fd, offset, SEEK_SET) == (off64_t)-1) + die("cannot goto options offset %lld", offset); + dump_options(fd); +} + static void free_sections(void) { struct file_section *del; @@ -911,15 +936,10 @@ static void dump_file(const char *file) dump_initial_format(fd); dump_compress(fd); - dump_header_page(fd); - dump_header_event(fd); - dump_ftrace_events_format(fd); - dump_events_format(fd); - dump_kallsyms(fd); - dump_printk(fd); - dump_cmdlines(fd); - dump_cpus_count(fd); - dump_therest(fd); + if (file_version < FILE_VERSION_SECTIONS) + dump_v6_file(fd); + else + dump_v7_file(fd); free_sections(); tep_free(tep); tep = NULL; From patchwork Fri Oct 8 04:26:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544371 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14586C433F5 for ; Fri, 8 Oct 2021 04:27:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F2EEF610CE for ; Fri, 8 Oct 2021 04:27:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229714AbhJHE3K (ORCPT ); Fri, 8 Oct 2021 00:29:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233346AbhJHE3I (ORCPT ); Fri, 8 Oct 2021 00:29:08 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80C20C061570 for ; Thu, 7 Oct 2021 21:27:13 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id r18so31330321edv.12 for ; Thu, 07 Oct 2021 21:27:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=84CJPvhzlFAC7i9Uo9LZqs10p/gs28x2Da/5/NO4GPU=; b=YjOLZ5Z9y1RW/TcZebhrdwCUhN6VVTya9mnxk5PuqYmwwff79NCVnrEf+nfFZI+LVB ZcrUhhPQ8SUow8v0VARjpr6F+FtShB/UdZBYxXasmKQa1vjNr+w9C8EzZv6zzs2MvPxr 7xucg7s7DkyM2zQJFRy/b/x4BOUlZ3sa9ATHKvFM62PQDIx+a6Ra61USjKtGbe8PhWgg YfTYNKgF1IO6TVeMdLDgiw7jfJpx2bm5LiFpwGnAQW/HdRIwHWXVcIP0bDiP5EQPK1pU FHm4TOTUixGlIyawRYCvRXmOZyyrh7VSIaATGC8QUT7q/TMsg38yPZtwNBcB5mPzzCRy m2bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=84CJPvhzlFAC7i9Uo9LZqs10p/gs28x2Da/5/NO4GPU=; b=Od9zYSwJHaY8qtb03XPJSFsEQU8fh+L28DcULlaNuuGdXwc54HsvLlYBzaPUUYjRLw cNCz59S1AG9POKtv3DAX0jIM2Kwy1aVMMsGBeJtgKXwnn/qZ0kg9OuzqHDLkpjtdWizJ bgeM4FQXFJwgqKi/cCAXLJu5dUk6o+q9/OqJGynFYO6m3f3Mqj5Rp4qWVxNRAVLWvztd Ympzaa4gBadjsNDIzIUHoFqVjUEKEU1kfLj0tnCyqImrtG34+99HUOtidRW/zDAMQT4k q8iMJvvnPz4NUpwvbCNkDhRi9E7uUX3qyKiUPlUfJWSxckkba4NHjsn/8XFNvdu+4KqF Iz3g== X-Gm-Message-State: AOAM530xcoaKbD6jm6ubfMKu9dz7QkSojLxpltSNVvJIxpPHNm7HE7ab hxlwu0s4nvuyCRtb0n94D7eHyI3i3b4/Ng== X-Google-Smtp-Source: ABdhPJzr2LgSG1rAj7WVe0YY5OD621noVA7SpHkzWj0AFpOT2+RuhoyMrs3FNX2Qap5WGTkBvcyfaA== X-Received: by 2002:a05:6402:1057:: with SMTP id e23mr12160396edu.352.1633667232114; Thu, 07 Oct 2021 21:27:12 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:11 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 08/10] trace-cmd dump: Dump sections content Date: Fri, 8 Oct 2021 07:26:59 +0300 Message-Id: <20211008042701.979075-9-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org In trace file version 7, dump the content of the headers content, that are stored as sections. Added logic to dump these headers: HEADER_INFO FTRACE_EVENTS EVENT_FORMATS KALLSYM PRINTK CMDLINES Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index 44f103d8..c222cd66 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -686,6 +686,46 @@ static void dump_option_section(int fd, unsigned int size, do_print(OPTIONS, "%lld\n", sec->offset); } +static void dump_sections(int fd) +{ + struct file_section *sec = sections; + unsigned short flags; + + while (sec) { + if (lseek64(fd, sec->offset, SEEK_SET) == (off_t)-1) + die("cannot goto option offset %lld", sec->offset); + + dump_section_header(fd, sec->verbosity, &flags); + + if ((flags & TRACECMD_SEC_FL_COMPRESS) && uncompress_block()) + die("cannot uncompress section block"); + + switch (sec->id) { + case TRACECMD_OPTION_HEADER_INFO: + dump_header_page(fd); + dump_header_event(fd); + break; + case TRACECMD_OPTION_FTRACE_EVENTS: + dump_ftrace_events_format(fd); + break; + case TRACECMD_OPTION_EVENT_FORMATS: + dump_events_format(fd); + break; + case TRACECMD_OPTION_KALLSYMS: + dump_kallsyms(fd); + break; + case TRACECMD_OPTION_PRINTK: + dump_printk(fd); + break; + case TRACECMD_OPTION_CMDLINES: + dump_cmdlines(fd); + break; + } + uncompress_reset(); + sec = sec->next; + } +} + static int dump_options_read(int fd); static int dump_option_done(int fd, int size) @@ -907,6 +947,7 @@ static void dump_v7_file(int fd) if (lseek64(fd, offset, SEEK_SET) == (off64_t)-1) die("cannot goto options offset %lld", offset); dump_options(fd); + dump_sections(fd); } static void free_sections(void) From patchwork Fri Oct 8 04:27:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544373 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 23012C433EF for ; Fri, 8 Oct 2021 04:27:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 002A160F35 for ; Fri, 8 Oct 2021 04:27:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233346AbhJHE3L (ORCPT ); Fri, 8 Oct 2021 00:29:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236409AbhJHE3J (ORCPT ); Fri, 8 Oct 2021 00:29:09 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4E63C061755 for ; Thu, 7 Oct 2021 21:27:14 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id v18so31594869edc.11 for ; Thu, 07 Oct 2021 21:27:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ouUPdX/PFfDz4Wyg9WnRuXzTY+cYqywgfcxBHCDWMBY=; b=XgRzZ6ysf3wj1ABKBwYL4VgxqlKT641fTPLcssj1v0ABclAe/zWGxg7d4Nsktcp452 IS0MMZJMfswQ3QKnhJx4GxqFkD8Bbkpt3EiXaKyAsiHNA/0L7c+kS0FYMDEXl5ae14g1 MnKH1dPdXPSsL8/o5VM6JJxKMPtJYUtqtfj0cI8cC4j6t7DWyBN/v9ATxVeAiEeJ9vVh z9a7OA2c8oSMoisaWwbei7REQNYA3zmkmAnIbhOOy3Ie7M+u+kZX2yB/TDzLtwRMd71I vsJATbfSNu98F+DoK/xarUJTTsiRxpaaRKOiHGxqAGbo88m+R5/6Rm9AQqvMoRBvXhYM p46w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ouUPdX/PFfDz4Wyg9WnRuXzTY+cYqywgfcxBHCDWMBY=; b=wBs2zCeckKa3gV1u1TASqfnZ4yxaCV7fyOR7VIxn1xuVpM58xwUZIvQdP+H6je53Jo ObJBPClSv++Y54n2MOrWeebVzaPDuqrwF0mp+xq04ssgy5ZCoNtyWnqjTbIf4BBgz4r3 8EdVm/okBT4tIMW84F0vQlKfotwsrnQYzC2MTWMfB1s0ToSzxURoAW09aFv6kavM5S4l hDT1EzuwPl4FcjjpYULxTE4CqZuNjkTEHm7p/6hr5CPQ+MaY3YDyHoBY8CBB0AvxaQP0 N5wk1/m78MJHvFsnHzZqtQBdbtgmNSAjv5YVeJCqJZvBRZarCJMGsluXF/zd5lMtClFi 4UoA== X-Gm-Message-State: AOAM5333EGQrqD2Kixzp93v0BIAlel+DHvIPMr7jaoeJKTHWxVi0jmoz PE3XzHQhxl88MUsQZJZ0cEqsSDumYy1eug== X-Google-Smtp-Source: ABdhPJznKyjyPtUEfS9+9GywvgXbXWPEbmTc9ah6t0/5xNjRgcv2AKMYFSioe4SZ0DMUuzLwo8udLw== X-Received: by 2002:a05:6402:7:: with SMTP id d7mr11960382edu.265.1633667233250; Thu, 07 Oct 2021 21:27:13 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:12 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 09/10] trace-cmd dump: Add new argument --sections Date: Fri, 8 Oct 2021 07:27:00 +0300 Message-Id: <20211008042701.979075-10-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The new "trace-cmd dump --sections" argument walks through the sections from a trace file version 7 and prints their headers. The logic does not rely on the options, describing these sections. It could be useful to dump broken or incomplete trace files. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 71 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index c222cd66..ab2fa2e5 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -686,7 +686,7 @@ static void dump_option_section(int fd, unsigned int size, do_print(OPTIONS, "%lld\n", sec->offset); } -static void dump_sections(int fd) +static void dump_sections(int fd, int count) { struct file_section *sec = sections; unsigned short flags; @@ -724,6 +724,7 @@ static void dump_sections(int fd) uncompress_reset(); sec = sec->next; } + do_print(SUMMARY|SECTIONS, "\t[%d sections]\n", count); } static int dump_options_read(int fd); @@ -937,17 +938,76 @@ static void dump_v6_file(int fd) dump_therest(fd); } +static int walk_v7_sections(int fd) +{ + unsigned long long offset, soffset; + unsigned short fl; + char buf[DUMP_SIZE]; + unsigned short id; + int size, csize, rsize; + int count = 0; + + offset = lseek64(fd, 0, SEEK_CUR); + do { + soffset = lseek64(fd, 0, SEEK_CUR); + if (read_file_number(fd, &id, 2)) + break; + if (id >= TRACECMD_OPTION_MAX) + die("Unknown section id %d", id); + if (read_file_string(fd, buf, DUMP_SIZE)) + die("cannot read section description"); + if (read_file_number(fd, &fl, 2)) + die("cannot read section flags"); + if (read_file_number(fd, &size, 4)) + die("cannot read section size"); + if (size <= 4) + die("Section %d (%s) is too small, %d bytes", id, buf, size); + count++; + if (fl & TRACECMD_SEC_FL_COMPRESS) { + if (id == TRACECMD_OPTION_BUFFER || + id == TRACECMD_OPTION_BUFFER_TEXT) { + do_print(SECTIONS, + "\t[Section %2d @ %-16lld\t\"%s\", flags 0x%X, " + "%d compressed bytes]\n", + id, soffset, buf, fl, size); + } else { + if (read_file_number(fd, &csize, 4)) + die("cannot read section size"); + if (read_file_number(fd, &rsize, 4)) + die("cannot read section size"); + do_print(SECTIONS, "\t[Section %2d @ %-16lld\t\"%s\", flags 0x%X, " + "%d compressed, %d uncompressed]\n", + id, soffset, buf, fl, csize, rsize); + size -= 8; + } + } else { + do_print(SECTIONS, "\t[Section %2d @ %-16lld\t\"%s\", flags 0x%X, %d bytes]\n", + id, soffset, buf, fl, size); + } + + if (lseek64(fd, size, SEEK_CUR) == (off_t)-1) + break; + } while (1); + + if (lseek64(fd, offset, SEEK_SET) == (off_t)-1) + die("cannot restore the original file location"); + return count; +} + static void dump_v7_file(int fd) { long long offset; + int sections; if (read_file_number(fd, &offset, 8)) die("cannot read offset of the first option section"); - if (lseek64(fd, offset, SEEK_SET) == (off64_t)-1) + sections = walk_v7_sections(fd); + + if (lseek64(fd, offset, SEEK_SET) == (off_t)-1) die("cannot goto options offset %lld", offset); dump_options(fd); - dump_sections(fd); + dump_sections(fd, sections); } static void free_sections(void) @@ -988,6 +1048,7 @@ static void dump_file(const char *file) } enum { + OPT_sections = 241, OPT_verbose = 242, OPT_clock = 243, OPT_all = 244, @@ -1031,6 +1092,7 @@ void trace_dump(int argc, char **argv) {"options", no_argument, NULL, OPT_options}, {"flyrecord", no_argument, NULL, OPT_flyrecord}, {"clock", no_argument, NULL, OPT_clock}, + {"sections", no_argument, NULL, OPT_sections}, {"validate", no_argument, NULL, 'v'}, {"help", no_argument, NULL, '?'}, {"verbose", optional_argument, NULL, OPT_verbose}, @@ -1094,6 +1156,9 @@ void trace_dump(int argc, char **argv) if (trace_set_verbose(optarg) < 0) die("invalid verbose level %s", optarg); break; + case OPT_sections: + verbosity |= SECTIONS; + break; default: usage(argv); } From patchwork Fri Oct 8 04:27:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 12544375 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 516B6C433FE for ; Fri, 8 Oct 2021 04:27:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 32F5660F35 for ; Fri, 8 Oct 2021 04:27:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236409AbhJHE3M (ORCPT ); Fri, 8 Oct 2021 00:29:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236460AbhJHE3K (ORCPT ); Fri, 8 Oct 2021 00:29:10 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7E8FC061570 for ; Thu, 7 Oct 2021 21:27:15 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id g8so31293604edt.7 for ; Thu, 07 Oct 2021 21:27:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=84YBfQkP8YMHELb1tKO3NWhuSj1uaCA+g4kG3U3Va6g=; b=GCI3cQ1gG0DFNwnk6gkU7l4o4bDtp/vM6bcQ47osWiEqstsdBEaxOp+k43WKMh3TXg vLynBomj75GV2xmYvOpb5G6bmOHA6CajjvFjaXjrcJ8EuToyA1QpyyYxFvSBHne095g1 Gy1K+ZVswyl2XSnNV4DIoqaVxgGobp8of+WpgbC44yyQa7D6ridSRF6RZXHZdkCoNUUn faeg1rr4Ilo+3b09Oso2sGVzmSISOBqsu4tv3F1McWWH7pk+DOfOQukyY8yDmb3ED8fF 6u9F/L2lw64QKC9be8RwYRCa0AbmaG3AO1iYo24nyEbQBBd+jjgNY148d48R2WVdVFS0 NA6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=84YBfQkP8YMHELb1tKO3NWhuSj1uaCA+g4kG3U3Va6g=; b=d9tyzRvLzJIReCmo/0OX+g9vlPHiGZ5vE5PLvTwXKc7fvbH9wjntpNIiz4m7jszsZi mUKxnm+uLsmzA1yfnDLj83AkxlkRlPCeg+Z4oO524sZV+GmpYHPNP8RBSERf1XG6QZa2 mk86W2DGdRi450O0kPmoLWQWDe2DAsQtrfRnlLn7ZmNFDgGFbV6SdoPNcq8N6X1h2zv+ XdkqYaGxcoo4vtoQ+e8GrTl4rFnzJfq7UWs01DPSWp+EAU8tlFuWS1dDvjAmscNFXJLv lGcEHXWFKb45m07EAgJWPc+QH5cpON6FEHsawnRP4j5isMTLLHgrjbEvvg9wN7OXHIQ3 1OCg== X-Gm-Message-State: AOAM5307XmEapPBVikiU/DTNMZyywGswW35HtBSSuH43ZUrcgg/9CulU QmL0H5GAVShPt5F4uC1daIYv8a4/O2VUTw== X-Google-Smtp-Source: ABdhPJxV3O3TmjhOt98YmaTceDFzZrgWFdtW1hwBR6tg9oQ3uqWO50zk9Uyc4TsivZsiUh9XZ8dhbg== X-Received: by 2002:a05:6402:4304:: with SMTP id m4mr12119546edc.326.1633667234521; Thu, 07 Oct 2021 21:27:14 -0700 (PDT) Received: from oberon.zico.biz ([83.222.187.186]) by smtp.gmail.com with ESMTPSA id q6sm456536ejm.106.2021.10.07.21.27.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 21:27:13 -0700 (PDT) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH v3 10/10] trace-cmd dump: Align better the output of flyrecord dump Date: Fri, 8 Oct 2021 07:27:01 +0300 Message-Id: <20211008042701.979075-11-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211008042701.979075-1-tz.stoyanov@gmail.com> References: <20211008042701.979075-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The flyrecord dump prints various file offsets and sizes, that can be huge numbers. Add format arguments to align better the output. Signed-off-by: Tzvetomir Stoyanov (VMware) --- tracecmd/trace-dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracecmd/trace-dump.c b/tracecmd/trace-dump.c index ab2fa2e5..6a148cae 100644 --- a/tracecmd/trace-dump.c +++ b/tracecmd/trace-dump.c @@ -898,7 +898,7 @@ static void dump_flyrecord(int fd) die("cannot read the cpu %d offset", i); if (read_file_number(fd, &cpu_size, 8)) die("cannot read the cpu %d size", i); - do_print(FLYRECORD, "\t\t %lld %lld\t[offset, size of cpu %d]\n", + do_print(FLYRECORD, "\t %10.lld %10.lld\t[offset, size of cpu %d]\n", cpu_offset, cpu_size, i); } dump_clock(fd);