intel/hang_replay: move common code into a lib

Before bringing support for Xe let's create a lib so that
the common code can live there.

Signed-off-by: Carlos Santa <carlos.santa@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34829>
This commit is contained in:
Carlos Santa 2024-12-13 11:12:04 -08:00 committed by Marge Bot
parent 77337b04cb
commit fdb1948410
4 changed files with 60 additions and 36 deletions

View file

@ -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)
{

View file

@ -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);
}

View file

@ -0,0 +1,24 @@
/*
* Copyright 2025 Intel Corporation
* SPDX-License-Identifier: MIT
*/
#pragma once
#include <stdbool.h>
#include <inttypes.h>
#include <sys/types.h>
#include <assert.h>
#include <unistd.h>
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);

View file

@ -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],