xref: /aosp_15_r20/external/mesa3d/src/intel/tools/error2hangdump_lib.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright 2024 Intel Corporation
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #include "error2hangdump_lib.h"
7 
8 #include "common/intel_hang_dump.h"
9 
10 void
write_header(FILE * f)11 write_header(FILE *f)
12 {
13    struct intel_hang_dump_block_header header = {
14       .base = {
15          .type = INTEL_HANG_DUMP_BLOCK_TYPE_HEADER,
16       },
17       .magic   = INTEL_HANG_DUMP_MAGIC,
18       .version = INTEL_HANG_DUMP_VERSION,
19    };
20 
21    fwrite(&header, sizeof(header), 1, f);
22 }
23 
24 void
write_buffer(FILE * f,uint64_t offset,const void * data,uint64_t size,const char * name)25 write_buffer(FILE *f,
26              uint64_t offset,
27              const void *data,
28              uint64_t size,
29              const char *name)
30 {
31    struct intel_hang_dump_block_bo header = {
32       .base = {
33          .type = INTEL_HANG_DUMP_BLOCK_TYPE_BO,
34       },
35       .offset  = offset,
36       .size    = size,
37    };
38    snprintf(header.name, sizeof(header.name), "%s", name);
39 
40    fwrite(&header, sizeof(header), 1, f);
41    fwrite(data, size, 1, f);
42 }
43 
44 void
write_hw_image_buffer(FILE * f,const void * data,uint64_t size)45 write_hw_image_buffer(FILE *f, const void *data, uint64_t size)
46 {
47    struct intel_hang_dump_block_hw_image header = {
48       .base = {
49          .type = INTEL_HANG_DUMP_BLOCK_TYPE_HW_IMAGE,
50       },
51       .size    = size,
52    };
53 
54    fwrite(&header, sizeof(header), 1, f);
55    fwrite(data, size, 1, f);
56 }
57 
58 void
write_exec(FILE * f,uint64_t offset)59 write_exec(FILE *f, uint64_t offset)
60 {
61    struct intel_hang_dump_block_exec header = {
62       .base = {
63          .type = INTEL_HANG_DUMP_BLOCK_TYPE_EXEC,
64       },
65       .offset  = offset,
66    };
67 
68    fwrite(&header, sizeof(header), 1, f);
69 }
70