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