mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-26 05:40:33 +01:00
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:
parent
77337b04cb
commit
fdb1948410
4 changed files with 60 additions and 36 deletions
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
34
src/intel/tools/intel_hang_replay_lib.c
Normal file
34
src/intel/tools/intel_hang_replay_lib.c
Normal 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);
|
||||
}
|
||||
24
src/intel/tools/intel_hang_replay_lib.h
Normal file
24
src/intel/tools/intel_hang_replay_lib.h
Normal 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);
|
||||
|
|
@ -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],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue