SimpleKernel 1.17.0
Loading...
Searching...
No Matches
arch.h
Go to the documentation of this file.
1
5#pragma once
6
7#include <cpu_io.h>
8#include <sys/cdefs.h>
9
10#include <cstddef>
11#include <cstdint>
12
13// 在 switch.S 中定义
14extern "C" auto switch_to(cpu_io::CalleeSavedContext* prev,
15 cpu_io::CalleeSavedContext* next) -> void;
16
17// 在 switch.S 中定义
18extern "C" auto kernel_thread_entry() -> void;
19
20// 在 switch.S 中定义
21extern "C" auto trap_return(void*) -> void;
22
23// 在 interrupt.S 中定义
24extern "C" auto trap_entry() -> void;
25
33auto ArchInit(int argc, const char** argv) -> void;
41auto ArchInitSMP(int argc, const char** argv) -> void;
42
48auto WakeUpOtherCores() -> void;
49
57auto InterruptInit(int argc, const char** argv) -> void;
65auto InterruptInitSMP(int argc, const char** argv) -> void;
71auto TimerInit() -> void;
77auto TimerInitSMP() -> void;
78
89 void (*entry)(void*), void* arg, uint64_t stack_top)
90 -> void;
91
101 cpu_io::TrapContext* trap_context_ptr, uint64_t stack_top)
102 -> void;
103
105static constexpr size_t kMaxFrameCount = 128;
106
115__always_inline auto backtrace(void** buffer, int size) -> int;
116
121auto DumpStack() -> void;
auto InterruptInitSMP(int argc, const char **argv) -> void
从核的体系结构相关中断初始化
auto TimerInitSMP() -> void
从核的定时器初始化
Definition timer.cpp:35
auto switch_to(cpu_io::CalleeSavedContext *prev, cpu_io::CalleeSavedContext *next) -> void
Definition arch.cpp:15
auto DumpStack() -> void
打印调用栈
Definition backtrace.cpp:34
auto WakeUpOtherCores() -> void
唤醒其余 core
Definition arch_main.cpp:68
auto InitTaskContext(cpu_io::CalleeSavedContext *task_context, void(*entry)(void *), void *arg, uint64_t stack_top) -> void
初始化内核线程的任务上下文(重载1)
Definition arch_main.cpp:77
__always_inline auto backtrace(void **buffer, int size) -> int
获取调用栈
auto ArchInit(int argc, const char **argv) -> void
体系结构相关初始化
Definition arch_main.cpp:48
auto ArchInitSMP(int argc, const char **argv) -> void
从核的体系结构相关初始化
Definition arch_main.cpp:65
auto trap_entry() -> void
Definition arch.cpp:46
static constexpr size_t kMaxFrameCount
最多回溯 128 层调用栈
Definition arch.h:105
auto TimerInit() -> void
初始化定时器
Definition timer.cpp:47
auto kernel_thread_entry() -> void
Definition arch.cpp:44
auto InterruptInit(int argc, const char **argv) -> void
体系结构相关中断初始化
auto trap_return(void *) -> void
Definition arch.cpp:45