123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #ifndef ZEPHYR_INCLUDE_DEBUG_COREDUMP_H_
- #define ZEPHYR_INCLUDE_DEBUG_COREDUMP_H_
- enum coredump_query_id {
-
- COREDUMP_QUERY_GET_ERROR,
-
- COREDUMP_QUERY_HAS_STORED_DUMP,
- COREDUMP_QUERY_MAX
- };
- enum coredump_cmd_id {
-
- COREDUMP_CMD_CLEAR_ERROR,
-
- COREDUMP_CMD_VERIFY_STORED_DUMP,
-
- COREDUMP_CMD_ERASE_STORED_DUMP,
- COREDUMP_CMD_MAX
- };
- #ifdef CONFIG_DEBUG_COREDUMP
- #include <toolchain.h>
- #include <arch/cpu.h>
- #include <sys/byteorder.h>
- #define COREDUMP_HDR_VER 1
- #define COREDUMP_ARCH_HDR_ID 'A'
- #define COREDUMP_MEM_HDR_ID 'M'
- #define COREDUMP_MEM_HDR_VER 1
- enum coredump_tgt_code {
- COREDUMP_TGT_UNKNOWN = 0,
- COREDUMP_TGT_X86,
- COREDUMP_TGT_X86_64,
- COREDUMP_TGT_ARM_CORTEX_M,
- };
- struct coredump_hdr_t {
-
- char id[2];
-
- uint16_t hdr_version;
-
- uint16_t tgt_code;
-
- uint8_t ptr_size_bits;
- uint8_t flag;
-
- unsigned int reason;
- } __packed;
- struct coredump_arch_hdr_t {
-
- char id;
-
- uint16_t hdr_version;
-
- uint16_t num_bytes;
- } __packed;
- struct coredump_mem_hdr_t {
-
- char id;
-
- uint16_t hdr_version;
-
- uintptr_t start;
-
- uintptr_t end;
- } __packed;
- void coredump(unsigned int reason, const z_arch_esf_t *esf,
- struct k_thread *thread);
- void coredump_memory_dump(uintptr_t start_addr, uintptr_t end_addr);
- void coredump_buffer_output(uint8_t *buf, size_t buflen);
- int coredump_query(enum coredump_query_id query_id, void *arg);
- int coredump_cmd(enum coredump_cmd_id cmd_id, void *arg);
- #else
- void coredump(unsigned int reason, const z_arch_esf_t *esf,
- struct k_thread *thread)
- {
- }
- void coredump_memory_dump(uintptr_t start_addr, uintptr_t end_addr)
- {
- }
- void coredump_buffer_output(uint8_t *buf, size_t buflen)
- {
- }
- int coredump_query(enum coredump_query_id query_id, void *arg)
- {
- return -ENOTSUP;
- }
- int coredump_cmd(enum coredump_cmd_id query_id, void *arg)
- {
- return -ENOTSUP;
- }
- #endif
- #endif
|