|
SimpleKernel 1.17.0
|


Go to the source code of this file.
Functions | |
| auto | Syscall (uint64_t cause, cpu_io::TrapContext *context) -> void |
| AArch64 系统调用处理 | |
| auto | syscall_dispatcher (int64_t syscall_id, uint64_t args[6]) -> int |
| auto | sys_write (int fd, const char *buf, size_t len) -> int |
| 向文件描述符写入数据 | |
| auto | sys_exit (int code) -> int |
| 退出当前进程或线程 | |
| auto | sys_yield () -> int |
| 主动放弃CPU,让出时间片 | |
| auto | sys_sleep (uint64_t ms) -> int |
| 休眠指定毫秒数 | |
| auto | sys_clone (uint64_t flags, void *stack, int *parent_tid, int *child_tid, void *tls) -> int |
| 创建新线程(或进程) | |
| auto | sys_fork () -> int |
| 创建新进程(fork) | |
| auto | sys_gettid () -> int |
| 获取当前线程ID | |
| auto | sys_set_tid_address (int *tidptr) -> int |
| 设置线程ID地址(用于线程退出时的清理) | |
| auto | sys_futex (int *uaddr, int op, int val, const void *timeout, int *uaddr2, int val3) -> int |
| 快速用户空间互斥锁操作(futex) | |
| auto | sys_sched_getaffinity (int pid, size_t cpusetsize, uint64_t *mask) -> int |
| 获取线程的CPU亲和性 | |
| auto | sys_sched_setaffinity (int pid, size_t cpusetsize, const uint64_t *mask) -> int |
| 设置线程的CPU亲和性 | |
| auto sys_clone | ( | uint64_t | flags, |
| void * | stack, | ||
| int * | parent_tid, | ||
| int * | child_tid, | ||
| void * | tls | ||
| ) | -> int |
创建新线程(或进程)
| flags | 克隆标志(CLONE_VM、CLONE_THREAD、CLONE_SIGHAND 等) |
| stack | 新线程的栈指针(用户空间) |
| parent_tid | 父线程TID存储地址(可选) |
| child_tid | 子线程TID存储地址(可选) |
| tls | 线程本地存储指针 |
创建轻量级线程
flags 常用组合:
Definition at line 95 of file syscall.cpp.


| auto sys_exit | ( | int | code | ) | -> int |
退出当前进程或线程
| code | 退出码 |
线程退出(clone 创建的线程调用时只退出当前线程)
行为取决于线程创建方式:
Definition at line 75 of file syscall.cpp.


| auto sys_fork | ( | ) | -> int |
创建新进程(fork)
完全复制父进程的地址空间和资源
fork 创建的子进程:
Definition at line 125 of file syscall.cpp.


| auto sys_futex | ( | int * | uaddr, |
| int | op, | ||
| int | val, | ||
| const void * | timeout, | ||
| int * | uaddr2, | ||
| int | val3 | ||
| ) | -> int |
快速用户空间互斥锁操作(futex)
| uaddr | 用户空间的futex地址 |
| op | 操作类型(FUTEX_WAIT、FUTEX_WAKE 等) |
| val | 操作参数 |
| timeout | 超时时间(可选) |
| uaddr2 | 第二个futex地址(部分操作使用) |
| val3 | 第三个参数(部分操作使用) |
实现 pthread_detach(线程状态管理)
常用操作:
Definition at line 178 of file syscall.cpp.


| auto sys_gettid | ( | ) | -> int |
获取当前线程ID
Definition at line 154 of file syscall.cpp.


| auto sys_sched_getaffinity | ( | int | pid, |
| size_t | cpusetsize, | ||
| uint64_t * | mask | ||
| ) | -> int |
获取线程的CPU亲和性
| pid | 线程ID(0 表示当前线程) |
| cpusetsize | CPU集合大小 |
| mask | CPU亲和性掩码 |
Definition at line 245 of file syscall.cpp.

| auto sys_sched_setaffinity | ( | int | pid, |
| size_t | cpusetsize, | ||
| const uint64_t * | mask | ||
| ) | -> int |
设置线程的CPU亲和性
| pid | 线程ID(0 表示当前线程) |
| cpusetsize | CPU集合大小 |
| mask | CPU亲和性掩码 |
Definition at line 275 of file syscall.cpp.

| auto sys_set_tid_address | ( | int * | tidptr | ) | -> int |
设置线程ID地址(用于线程退出时的清理)
| tidptr | 线程ID存储地址 |
Definition at line 163 of file syscall.cpp.


| auto sys_sleep | ( | uint64_t | ms | ) | -> int |
休眠指定毫秒数
| ms | 休眠时长(毫秒) |
Definition at line 90 of file syscall.cpp.

| auto sys_write | ( | int | fd, |
| const char * | buf, | ||
| size_t | len | ||
| ) | -> int |
向文件描述符写入数据
| fd | 文件描述符 |
| buf | 数据缓冲区 |
| len | 数据长度 |
Definition at line 63 of file syscall.cpp.


| auto sys_yield | ( | ) | -> int |
主动放弃CPU,让出时间片
Definition at line 85 of file syscall.cpp.

| auto Syscall | ( | uint64_t | cause, |
| cpu_io::TrapContext * | context_ptr | ||
| ) | -> void |
AArch64 系统调用处理
| context_ptr | 中断上下文,包含系统调用号和参数 |
Definition at line 16 of file syscall.cpp.

| auto syscall_dispatcher | ( | int64_t | syscall_id, |
| uint64_t | args[6] | ||
| ) | -> int |
Definition at line 17 of file syscall.cpp.

