From fdb19484101d9f4e7a24f78d94dea17e8103a9cb Mon Sep 17 00:00:00 2001 From: Carlos Santa Date: Fri, 13 Dec 2024 11:12:04 -0800 Subject: [PATCH] intel/hang_replay: move common code into a lib MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before bringing support for Xe let's create a lib so that the common code can live there. Signed-off-by: Carlos Santa Reviewed-by: José Roberto de Souza Part-of: --- src/intel/tools/intel_hang_replay.c | 37 +------------------------ src/intel/tools/intel_hang_replay_lib.c | 34 +++++++++++++++++++++++ src/intel/tools/intel_hang_replay_lib.h | 24 ++++++++++++++++ src/intel/tools/meson.build | 1 + 4 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 src/intel/tools/intel_hang_replay_lib.c create mode 100644 src/intel/tools/intel_hang_replay_lib.h diff --git a/src/intel/tools/intel_hang_replay.c b/src/intel/tools/intel_hang_replay.c index 7907d9a0c7a..461fc78a44b 100644 --- a/src/intel/tools/intel_hang_replay.c +++ b/src/intel/tools/intel_hang_replay.c @@ -51,6 +51,7 @@ #include "util/u_dynarray.h" #include "util/u_math.h" +#include "intel_hang_replay_lib.h" #include "intel_tools.h" @@ -181,20 +182,6 @@ gem_mmap_offset(int drm_fd, return map; } -static void -write_malloc_data(void *out_data, - int file_fd, - size_t size) -{ - size_t total_read_len = 0; - ssize_t read_len; - while (total_read_len < size && - (read_len = read(file_fd, out_data + total_read_len, size - total_read_len)) > 0) { - total_read_len += read_len; - } - assert(total_read_len == size); -} - static void write_gem_bo_data(int drm_fd, uint32_t gem_handle, @@ -215,12 +202,6 @@ write_gem_bo_data(int drm_fd, assert(total_read_len == size); } -static void -skip_data(int file_fd, size_t size) -{ - lseek(file_fd, size, SEEK_CUR); -} - static int get_drm_device(struct intel_device_info *devinfo) { @@ -251,22 +232,6 @@ get_drm_device(struct intel_device_info *devinfo) return fd; } -struct gem_bo { - off_t file_offset; - uint32_t gem_handle; - uint64_t offset; - uint64_t size; - bool hw_img; -}; - -static int -compare_bos(const void *b1, const void *b2) -{ - const struct gem_bo *gem_b1 = b1, *gem_b2 = b2; - - return gem_b2->size > gem_b1->size; -} - static void print_help(const char *filename, FILE *f) { diff --git a/src/intel/tools/intel_hang_replay_lib.c b/src/intel/tools/intel_hang_replay_lib.c new file mode 100644 index 00000000000..1ff5271fb19 --- /dev/null +++ b/src/intel/tools/intel_hang_replay_lib.c @@ -0,0 +1,34 @@ +/* + * Copyright 2025 Intel Corporation + * SPDX-License-Identifier: MIT + */ + +#include "intel_hang_replay_lib.h" + +int +compare_bos(const void *b1, const void *b2) +{ + const struct gem_bo *gem_b1 = b1, *gem_b2 = b2; + + return gem_b2->size > gem_b1->size; +} + +void +skip_data(int file_fd, size_t size) +{ + lseek(file_fd, size, SEEK_CUR); +} + +void +write_malloc_data(void *out_data, + int file_fd, + size_t size) +{ + size_t total_read_len = 0; + ssize_t read_len; + while (total_read_len < size && + (read_len = read(file_fd, out_data + total_read_len, size - total_read_len)) > 0) { + total_read_len += read_len; + } + assert(total_read_len == size); +} diff --git a/src/intel/tools/intel_hang_replay_lib.h b/src/intel/tools/intel_hang_replay_lib.h new file mode 100644 index 00000000000..889c5a5c7f4 --- /dev/null +++ b/src/intel/tools/intel_hang_replay_lib.h @@ -0,0 +1,24 @@ +/* + * Copyright 2025 Intel Corporation + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include +#include +#include +#include +#include + +struct gem_bo { + off_t file_offset; + uint32_t gem_handle; + uint64_t offset; + uint64_t size; + bool hw_img; +}; + +int compare_bos(const void *b1, const void *b2); +void skip_data(int file_fd, size_t size); +void write_malloc_data(void *out_data, int file_fd, size_t size); diff --git a/src/intel/tools/meson.build b/src/intel/tools/meson.build index beea51f6660..4bb2355a002 100644 --- a/src/intel/tools/meson.build +++ b/src/intel/tools/meson.build @@ -98,6 +98,7 @@ error2hangdump = executable( intel_hang_replay = executable( 'intel_hang_replay', + files('intel_hang_replay_lib.c'), files('intel_hang_replay.c'), dependencies : [idep_intel_dev, idep_libintel_common, dep_libdrm, dep_dl, dep_thread, dep_m, idep_libintel_tools],