Zephyr Project API  3.2.0
A Scalable Open Source RTOS
coredump.h
Go to the documentation of this file.
1/*
2 * Copyright Meta Platforms, Inc. and its affiliates.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef INCLUDE_ZEPHYR_DRIVERS_COREDUMP_H_
13#define INCLUDE_ZEPHYR_DRIVERS_COREDUMP_H_
14
15#include <zephyr/device.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
39
42
44 size_t size;
45};
46
54typedef void (*coredump_dump_callback_t)(uintptr_t dump_area, size_t dump_area_size);
55
62/*
63 * Type definition of coredump API function for adding specified
64 * data into coredump
65 */
66typedef void (*coredump_device_dump_t)(const struct device *dev);
67
68/*
69 * Type definition of coredump API function for registering a memory
70 * region
71 */
72typedef bool (*coredump_device_register_memory_t)(const struct device *dev,
73 struct coredump_mem_region_node *region);
74
75/*
76 * Type definition of coredump API function for unregistering a memory
77 * region
78 */
79typedef bool (*coredump_device_unregister_memory_t)(const struct device *dev,
80 struct coredump_mem_region_node *region);
81
82/*
83 * Type definition of coredump API function for registering a dump
84 * callback
85 */
86typedef bool (*coredump_device_register_callback_t)(const struct device *dev,
88
89/*
90 * API which a coredump pseudo-device driver should expose
91 */
92__subsystem struct coredump_driver_api {
93 coredump_device_dump_t dump;
94 coredump_device_register_memory_t register_memory;
95 coredump_device_unregister_memory_t unregister_memory;
96 coredump_device_register_callback_t register_callback;
97};
98
113static inline bool coredump_device_register_memory(const struct device *dev,
114 struct coredump_mem_region_node *region)
115{
116 const struct coredump_driver_api *api =
117 (const struct coredump_driver_api *)dev->api;
118
119 return api->register_memory(dev, region);
120}
121
132static inline bool coredump_device_unregister_memory(const struct device *dev,
133 struct coredump_mem_region_node *region)
134{
135 const struct coredump_driver_api *api =
136 (const struct coredump_driver_api *)dev->api;
137
138 return api->unregister_memory(dev, region);
139}
140
150static inline bool coredump_device_register_callback(const struct device *dev,
152{
153 const struct coredump_driver_api *api =
154 (const struct coredump_driver_api *)dev->api;
155
156 return api->register_callback(dev, callback);
157}
158
163#ifdef __cplusplus
164}
165#endif
166
167#endif /* INCLUDE_ZEPHYR_DRIVERS_COREDUMP_H_ */
static bool coredump_device_register_memory(const struct device *dev, struct coredump_mem_region_node *region)
Register a region of memory to be stored in core dump at the time it is generated.
Definition: coredump.h:113
void(* coredump_dump_callback_t)(uintptr_t dump_area, size_t dump_area_size)
Callback that occurs at dump time, data copied into dump_area will be included in the dump that is ge...
Definition: coredump.h:54
static bool coredump_device_register_callback(const struct device *dev, coredump_dump_callback_t callback)
Register a callback to be invoked at dump time.
Definition: coredump.h:150
static bool coredump_device_unregister_memory(const struct device *dev, struct coredump_mem_region_node *region)
Unregister a region of memory to be stored in core dump at the time it is generated.
Definition: coredump.h:132
struct _snode sys_snode_t
Definition: slist.h:33
#define bool
Definition: stdbool.h:13
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105
Structure describing a region in memory that may be stored in core dump at the time it is generated.
Definition: coredump.h:36
sys_snode_t node
Definition: coredump.h:38
size_t size
Definition: coredump.h:44
uintptr_t start
Definition: coredump.h:41
Runtime device structure (in ROM) per driver instance.
Definition: device.h:435
const void * api
Definition: device.h:441