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