1 /*
2 * Copyright Meta Platforms, Inc. and its affiliates.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <errno.h>
8 #include <zephyr/debug/coredump.h>
9
10 static int error;
11 static bool is_valid;
12
coredump_empty_backend_start(void)13 static void coredump_empty_backend_start(void)
14 {
15 /* Reset error, is_valid */
16 error = 0;
17 is_valid = false;
18 }
19
coredump_empty_backend_end(void)20 static void coredump_empty_backend_end(void)
21 {
22 is_valid = true;
23 }
24
coredump_empty_backend_buffer_output(uint8_t * buf,size_t buflen)25 static void coredump_empty_backend_buffer_output(uint8_t *buf, size_t buflen)
26 {
27 /* no-op */
28 }
29
coredump_empty_backend_query(enum coredump_query_id query_id,void * arg)30 static int coredump_empty_backend_query(enum coredump_query_id query_id,
31 void *arg)
32 {
33 int ret;
34
35 switch (query_id) {
36 case COREDUMP_QUERY_GET_ERROR:
37 ret = error;
38 break;
39 case COREDUMP_QUERY_HAS_STORED_DUMP:
40 ret = 0;
41 if (is_valid) {
42 ret = 1;
43 }
44 break;
45 case COREDUMP_QUERY_GET_STORED_DUMP_SIZE:
46 ret = 0;
47 break;
48 default:
49 ret = -ENOTSUP;
50 break;
51 }
52
53 return ret;
54 }
55
coredump_empty_backend_cmd(enum coredump_cmd_id cmd_id,void * arg)56 static int coredump_empty_backend_cmd(enum coredump_cmd_id cmd_id,
57 void *arg)
58 {
59 int ret;
60
61 switch (cmd_id) {
62 case COREDUMP_CMD_CLEAR_ERROR:
63 error = 0;
64 ret = 0;
65 break;
66 case COREDUMP_CMD_VERIFY_STORED_DUMP:
67 ret = 0;
68 if (is_valid) {
69 ret = 1;
70 }
71 break;
72 case COREDUMP_CMD_INVALIDATE_STORED_DUMP:
73 is_valid = false;
74 ret = 0;
75 break;
76 case COREDUMP_CMD_ERASE_STORED_DUMP:
77 is_valid = false;
78 ret = 0;
79 break;
80 default:
81 ret = -ENOTSUP;
82 break;
83 }
84
85 return ret;
86 }
87
88 struct coredump_backend_api coredump_backend_other = {
89 .start = coredump_empty_backend_start,
90 .end = coredump_empty_backend_end,
91 .buffer_output = coredump_empty_backend_buffer_output,
92 .query = coredump_empty_backend_query,
93 .cmd = coredump_empty_backend_cmd,
94 };
95