ICARUS OS (Intelligent Cooperative Architecture for Real-time Unified Systems) 0.1.0
Preemptive Real-Time Operating System for ARM Cortex-M7
Loading...
Searching...
No Matches
cs.h
Go to the documentation of this file.
1
34#ifndef ICARUS_CS_H
35#define ICARUS_CS_H
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#include <stdint.h>
42#include <stdbool.h>
43
44/* ============================================================================
45 * CONFIGURATION
46 * ========================================================================= */
47
58#ifndef CS_MAX_REGIONS
59#define CS_MAX_REGIONS 8
60#endif
61
64/* ============================================================================
65 * TYPES
66 * ========================================================================= */
67
79typedef void (*cs_mismatch_fn)(uint8_t region_idx, uint16_t expected,
80 uint16_t actual);
81
85typedef struct {
86 const uint8_t *addr;
87 uint32_t size;
88 uint16_t baseline;
89 bool enabled;
91
92/* ============================================================================
93 * PUBLIC API
94 * ========================================================================= */
95
100void cs_init(void);
101
109
124bool cs_add_region(uint8_t idx, const uint8_t *addr, uint32_t size);
125
134bool cs_enable(uint8_t idx, bool enabled);
135
146bool cs_rebaseline(uint8_t idx);
147
157uint8_t cs_check_all(void);
158
167bool cs_get_region(uint8_t idx, cs_region_t *out);
168
172uint8_t cs_region_count(void);
173
174/* ============================================================================
175 * PRIVILEGED IMPLEMENTATIONS (Internal — Do Not Call Directly)
176 * ========================================================================= */
177
178void __cs_init(void);
180bool __cs_add_region(uint8_t idx, const uint8_t *addr, uint32_t size);
181bool __cs_enable(uint8_t idx, bool enabled);
182bool __cs_rebaseline(uint8_t idx);
183uint8_t __cs_check_all(void);
184bool __cs_get_region(uint8_t idx, cs_region_t *out);
185uint8_t __cs_region_count(void);
186
187#ifdef __cplusplus
188}
189#endif
190
191#endif /* ICARUS_CS_H */
bool __cs_enable(uint8_t idx, bool enabled)
Privileged implementation of cs_enable().
Definition cs.c:137
void(* cs_mismatch_fn)(uint8_t region_idx, uint16_t expected, uint16_t actual)
Mismatch callback signature.
Definition cs.h:79
void __cs_set_callback(cs_mismatch_fn fn)
Privileged implementation of cs_set_callback().
Definition cs.c:101
bool __cs_get_region(uint8_t idx, cs_region_t *out)
Privileged implementation of cs_get_region().
Definition cs.c:204
void cs_set_callback(cs_mismatch_fn fn)
Register the mismatch callback.
Definition svc.c:1611
bool cs_add_region(uint8_t idx, const uint8_t *addr, uint32_t size)
Add a memory region to the monitor.
Definition svc.c:1625
bool cs_enable(uint8_t idx, bool enabled)
Enable or disable scanning of a region.
Definition svc.c:1645
uint8_t __cs_region_count(void)
Privileged implementation of cs_region_count().
Definition cs.c:222
bool __cs_add_region(uint8_t idx, const uint8_t *addr, uint32_t size)
Privileged implementation of cs_add_region().
Definition cs.c:118
void __cs_init(void)
Privileged implementation of cs_init().
Definition cs.c:91
void cs_init(void)
Initialize the checksum monitor.
Definition svc.c:1603
uint8_t cs_region_count(void)
Return the number of registered (non-empty) regions.
Definition svc.c:1716
uint8_t __cs_check_all(void)
Privileged implementation of cs_check_all().
Definition cs.c:172
bool cs_rebaseline(uint8_t idx)
Re-compute and store the baseline CRC for a region.
Definition svc.c:1664
uint8_t cs_check_all(void)
Scan all enabled regions and invoke the mismatch callback for any CRC failures.
Definition svc.c:1681
bool __cs_rebaseline(uint8_t idx)
Privileged implementation of cs_rebaseline().
Definition cs.c:152
bool cs_get_region(uint8_t idx, cs_region_t *out)
Read back a region's configuration.
Definition svc.c:1697
Descriptor for a monitored memory region.
Definition cs.h:85
const uint8_t * addr
Start address of the region.
Definition cs.h:86
bool enabled
True if this region is actively scanned.
Definition cs.h:89
uint32_t size
Size in bytes.
Definition cs.h:87
uint16_t baseline
Expected CRC16-CCITT value.
Definition cs.h:88