mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 07:40:31 +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_dynarray.h"
|
||||||
#include "util/u_math.h"
|
#include "util/u_math.h"
|
||||||
|
#include "intel_hang_replay_lib.h"
|
||||||
|
|
||||||
#include "intel_tools.h"
|
#include "intel_tools.h"
|
||||||
|
|
||||||
|
|
@ -181,20 +182,6 @@ gem_mmap_offset(int drm_fd,
|
||||||
return map;
|
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
|
static void
|
||||||
write_gem_bo_data(int drm_fd,
|
write_gem_bo_data(int drm_fd,
|
||||||
uint32_t gem_handle,
|
uint32_t gem_handle,
|
||||||
|
|
@ -215,12 +202,6 @@ write_gem_bo_data(int drm_fd,
|
||||||
assert(total_read_len == size);
|
assert(total_read_len == size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
skip_data(int file_fd, size_t size)
|
|
||||||
{
|
|
||||||
lseek(file_fd, size, SEEK_CUR);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_drm_device(struct intel_device_info *devinfo)
|
get_drm_device(struct intel_device_info *devinfo)
|
||||||
{
|
{
|
||||||
|
|
@ -251,22 +232,6 @@ get_drm_device(struct intel_device_info *devinfo)
|
||||||
return fd;
|
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
|
static void
|
||||||
print_help(const char *filename, FILE *f)
|
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 = executable(
|
||||||
'intel_hang_replay',
|
'intel_hang_replay',
|
||||||
|
files('intel_hang_replay_lib.c'),
|
||||||
files('intel_hang_replay.c'),
|
files('intel_hang_replay.c'),
|
||||||
dependencies : [idep_intel_dev, idep_libintel_common, dep_libdrm, dep_dl, dep_thread, dep_m,
|
dependencies : [idep_intel_dev, idep_libintel_common, dep_libdrm, dep_dl, dep_thread, dep_m,
|
||||||
idep_libintel_tools],
|
idep_libintel_tools],
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue