HomeCore 0.1.3 (07b5544)
Bare-metal personal computer firmware for Cortex-M
Loading...
Searching...
No Matches
kernel.h
Go to the documentation of this file.
1/*
2 * MIT License
3 *
4 * Copyright (c) 2026 Grzegorz Grzęda
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30#ifndef HOME_CORE_KERNEL_H
31#define HOME_CORE_KERNEL_H
32/*---------------------------------------------------------------------------*/
33#if defined(__cplusplus)
34extern "C" {
35#endif
36/*---------------------------------------------------------------------------*/
37#include <stdint.h>
38#include <stddef.h>
39/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
55void k_init(void);
56/*---------------------------------------------------------------------------*/
66void k_uptime_init(void);
67/*---------------------------------------------------------------------------*/
76uint64_t k_uptime_ms(void);
77/*---------------------------------------------------------------------------*/
83void k_tick(void);
85/*---------------------------------------------------------------------------*/
90typedef struct {
92 size_t total;
94 size_t allocated;
96 size_t reusable;
98 size_t unclaimed;
100/*---------------------------------------------------------------------------*/
111/*---------------------------------------------------------------------------*/
121#define K_STACK_FILL_WORD 0xA5A5A5A5U
122/*---------------------------------------------------------------------------*/
124typedef struct {
126 size_t size;
128 size_t used;
130/*---------------------------------------------------------------------------*/
143/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146#if defined(__cplusplus)
147}
148#endif
149/*---------------------------------------------------------------------------*/
150#endif // HOME_CORE_KERNEL_H
151/*---------------------------------------------------------------------------*/
void k_tick(void)
Advance the uptime clock by one millisecond.
void k_stack_stats(k_stack_stats_t *stats)
Measure the main stack's high-water mark.
void k_uptime_init(void)
Start the 1 kHz system timer and register /dev/uptime.
void k_init(void)
Initialize kernel services and the standard streams.
uint64_t k_uptime_ms(void)
Read the uptime clock.
void k_heap_stats(k_heap_stats_t *stats)
Capture current heap usage.
Heap usage snapshot filled by k_heap_stats().
Definition kernel.h:90
size_t total
Size of the heap region between static RAM and the reserved main stack.
Definition kernel.h:92
size_t unclaimed
Bytes of the heap region not yet claimed by the allocator.
Definition kernel.h:98
size_t reusable
Free bytes the allocator already holds for reuse.
Definition kernel.h:96
size_t allocated
Bytes in allocated blocks, including allocator overhead.
Definition kernel.h:94
Main-stack usage filled by k_stack_stats().
Definition kernel.h:124
size_t size
Size of the main-stack reservation, CONFIG_HOMECORE_KERNEL_MAIN_STACK_SIZE.
Definition kernel.h:126
size_t used
Deepest stack use since reset, including interrupt handlers.
Definition kernel.h:128