From 45b4caefe37cbb702bd0464a950394b17cab0c09 Mon Sep 17 00:00:00 2001 From: Kai Vehmanen Date: Mon, 23 Sep 2024 14:16:36 +0300 Subject: [PATCH] Add tools-v2.11 binaries Generated with Intel SOF community build, identification "Build #5357". Signed-off-by: Kai Vehmanen --- v2.11.x/tools-v2.11/mtrace-reader.py | 38 +++++++++++++++++++++++++++ v2.11.x/tools-v2.11/sof-ctl | Bin 0 -> 36680 bytes v2.11.x/tools-v2.11/sof-probes | Bin 0 -> 31064 bytes 3 files changed, 38 insertions(+) create mode 100755 v2.11.x/tools-v2.11/mtrace-reader.py create mode 100755 v2.11.x/tools-v2.11/sof-ctl create mode 100755 v2.11.x/tools-v2.11/sof-probes diff --git a/v2.11.x/tools-v2.11/mtrace-reader.py b/v2.11.x/tools-v2.11/mtrace-reader.py new file mode 100755 index 0000000..06b005a --- /dev/null +++ b/v2.11.x/tools-v2.11/mtrace-reader.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# +# Copyright (c) 2022, Intel Corporation. All rights reserved. + +#pylint:disable=mixed-indentation + +# Tool to stream data from Linux SOF driver "mtrace" debugfs +# interface to standard output. Plain "cat" is not sufficient +# as each read() syscall returns log data with a 32bit binary +# header, containing the payload length. + +import struct +import os +import sys + +READ_BUFFER = 16384 +MTRACE_FILE = "/sys/kernel/debug/sof/mtrace/core0" + +fd = os.open(MTRACE_FILE, os.O_RDONLY) +while fd >= 0: + # direct unbuffered os.read() must be used to comply with + # debugfs protocol used. each non-zero read will return + # a buffer containing a 32bit header and a payload + read_bytes = os.read(fd, READ_BUFFER) + + # handle end-of-file + if len(read_bytes) == 0: + continue + + if len(read_bytes) <= 4: + continue + + header = struct.unpack('I', read_bytes[0:4]) + data_len = header[0] + data = read_bytes[4:4+data_len] + + os.write(sys.stdout.fileno(), data) diff --git a/v2.11.x/tools-v2.11/sof-ctl b/v2.11.x/tools-v2.11/sof-ctl new file mode 100755 index 0000000000000000000000000000000000000000..73facfaa9309a7486f7e796250ce187f081e508c GIT binary patch literal 36680 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