#deadlines #devices #seminix #irq #sysctl #tcb #c-node

yanked libseminix

seminix 内核系统用户态库

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

Apache-2.0

150KB
4K SLoC

libseminix

介绍

seminix 提供的用户态库


lib.rs:

seminix 用户态库

seminix 内核兼容了 Linux 系统调用接口, 同时本身提供了一组系统调用 用于管理内核功能, 包括如下九个部分:

  1. CNode 能力节点管理, 所有能力存放在 CNode 能力槽中, CNode 提供了能力 移动, 复制, 撤销, 删除管理.
  2. Deadline 能力管理, 与 Linux 的 deadline 调度策略相同, Deadline 能力 提供了创建一个 deadline 调度策略的能力, 可以与 tcb 绑定使其拥有 deadline 调度策略.
  3. DeviceControl 能力管理, 具有设备控制能力, 能够创建对当前系统某个设备的能力引用, 并可以通过 CNode 接口将创建的 Device 能力移动到任意 CNode 中使得对应 tcb 具有设备 管理能力, 通过 Device 能力还能够创建对该设备 IRQ 的能力引用, 通过 CNode 也可以将 Device 能力创建的 DeviceIRQ 能力移动或者复制给任意 TCB 管理.
  4. Endpoint (IPC)能力管理, 可以创建,复制,移动 Endpoint 给任意 CNode, 使其具有进程间 通信能力, 比如: IRQ 中断通过 Endpoint 传递给指定 TCB 管理.
  5. Rlimit 能力管理, 管理系统中所有资源的使用, 所有内核对象由 Rlimit 负责创建, 并且管理 每个 TCB 的能力资源使用上限, 如一个 TCB 能够创建的最大 Endpoint 数量.
  6. signal 能力管理, 系统信号管理, 兼容 posix 和 linux 信号机制, 任何线程可以绑定信号 处理 handler, 只有拥有 signal 能力的线程能够向指定的 TCB 发送信号, 内核也会通过 Endpoint 机制向管理程序发送 signal 信息, 由管理程序决定是否向指定线程发送信号.
  7. Tcb 能力管理, 所有任务的状态, 执行由 TCB 能力管理, 比如唤醒一个新的线程, 配置一个 TCB 的 vspace, fault endpoint, cnode, rlimit 信息, 以及其他的调度策略, 优先级, 挂起, 恢复等.
  8. vspace 能力管理, 管理一个 vspace 空间的虚拟地址映射, 内存用量等.
  9. sysctl 能力管理, 具有访问系统信息和控制系统行为的能力, 比如获取 cpu 的 load_avg, 线程能够 mmap 的最大次数, 当前 cpumask 信息等.

每种能力提供了自己 API, 当访问错误时有通用错误代码, 通过错误码可以执行处理错误程序.

Dependencies

~150KB