5 releases
0.1.4 | Jun 10, 2023 |
---|---|
0.1.3 | Jun 9, 2023 |
0.1.2 | Jun 9, 2023 |
0.1.1 | Jun 7, 2023 |
0.1.0 | Jun 3, 2023 |
#6 in #seminix
33 downloads per month
150KB
4K
SLoC
libseminix
介绍
seminix 提供的用户态库
lib.rs
:
seminix 用户态库
seminix 内核兼容了 Linux 系统调用接口, 同时本身提供了一组系统调用 用于管理内核功能, 包括如下九个部分:
- CNode 能力节点管理, 所有能力存放在 CNode 能力槽中, CNode 提供了能力 移动, 复制, 撤销, 删除管理.
- Deadline 能力管理, 与 Linux 的 deadline 调度策略相同, Deadline 能力 提供了创建一个 deadline 调度策略的能力, 可以与 tcb 绑定使其拥有 deadline 调度策略.
- DeviceControl 能力管理, 具有设备控制能力, 能够创建对当前系统某个设备的能力引用, 并可以通过 CNode 接口将创建的 Device 能力移动到任意 CNode 中使得对应 tcb 具有设备 管理能力, 通过 Device 能力还能够创建对该设备 IRQ 的能力引用, 通过 CNode 也可以将 Device 能力创建的 DeviceIRQ 能力移动或者复制给任意 TCB 管理.
- Endpoint (IPC)能力管理, 可以创建,复制,移动 Endpoint 给任意 CNode, 使其具有进程间 通信能力, 比如: IRQ 中断通过 Endpoint 传递给指定 TCB 管理.
- Rlimit 能力管理, 管理系统中所有资源的使用, 所有内核对象由 Rlimit 负责创建, 并且管理 每个 TCB 的能力资源使用上限, 如一个 TCB 能够创建的最大 Endpoint 数量.
- signal 能力管理, 系统信号管理, 兼容 posix 和 linux 信号机制, 任何线程可以绑定信号 处理 handler, 只有拥有 signal 能力的线程能够向指定的 TCB 发送信号, 内核也会通过 Endpoint 机制向管理程序发送 signal 信息, 由管理程序决定是否向指定线程发送信号.
- Tcb 能力管理, 所有任务的状态, 执行由 TCB 能力管理, 比如唤醒一个新的线程, 配置一个 TCB 的 vspace, fault endpoint, cnode, rlimit 信息, 以及其他的调度策略, 优先级, 挂起, 恢复等.
- vspace 能力管理, 管理一个 vspace 空间的虚拟地址映射, 内存用量等.
- sysctl 能力管理, 具有访问系统信息和控制系统行为的能力, 比如获取 cpu 的 load_avg, 线程能够 mmap 的最大次数, 当前 cpumask 信息等.
每种能力提供了自己 API, 当访问错误时有通用错误代码, 通过错误码可以执行处理错误程序.
Dependencies
~150KB