直至正文
豫言包府
← 众包

豫言操作系统底层基础 0.1.0

豫言 · 库

豫言操作系统底层接口之基础:状态码、时钟、随机、参数与环境、退出、中断、平台探测;无垃圾回收,值只有 32 位整数。

豫言操作系统底层基础〇点一点〇

状:草案。汉语本见汉语版。通用之规,见[调用约定](../调用约定.文言.md)。

范围

全树共用之状态码表,及至基之系统询问:时钟、随机、命令行参数与环境变量、退出、中断之标、平台之探、处理器之数。本包依 底层库,为本树之根,余包皆(直或间)依之。

时钟(时钟。接口。豫)

| 函数 | 参 | 用 | | --- | --- | --- | | 读单调纳秒 | 出 | 单调之钟之纳秒数,八字节 | | 读墙钟纳秒 | 出 | 自一九七〇年正月朔日 UTC 起之纳秒数,八字节;无实时钟则返 58 | | 取时钟精度 | 时钟号, 出 | 钟号零为墙钟,一为单调之钟;精度以纳秒计,八字节;钟号不识则返 28 | | 取时区偏移 | 时低, 时高, 出 | 某刻(自一九七〇起之秒数,低高二参)本地时较 UTC 之秒数,有符号四字节;不支持则返 58,是时垫层试读时区之文件,不得则依 UTC |

随机(随机。接口。豫)

| 函数 | 参 | 用 | | --- | --- | --- | | 填随机字节 | 址, 长 | 以密码学安全之随机字节填满缓冲;平台无熵源则返 58 |

环境(环境。接口。豫)

| 函数 | 参 | 用 | | --- | --- | --- | | 取参数块 | 缓冲址, 缓冲长, 出 | 命令行参数各以零终,依次相连为块;出址书(总长,个数)共八字节;缓冲不足则返 61,并书所需总长 | | 取环境块 | 缓冲址, 缓冲长, 出 | 环境变量「名=值」各以零终,依次相连为块;余同取参数块 | | 退出 | 码 | 以码终本进程,不返 | | 查询中断 | 出 | 读而清中断之标(Ctrl-C),零或一 | | 取平台 | 出 | 一裸机、二 Linux、三 macOS、四 Windows | | 取处理器数 | 出 | 在线处理器之数 |

状态之码

编号取 WASI preview1 errno 之子集,全树共用;括号中为 WASI 之名。

| 码 | 名 | 码 | 名 | 码 | 名 | | --- | --- | --- | --- | --- | --- | | 0 | 成 | 2 | 无权(acces) | 3 | 址已用(addrinuse) | | 6 | 暂不可用(again) | 8 | 柄无效(badf) | 10 | 忙(busy) | | 14 | 连拒(connrefused) | 15 | 连重置(connreset) | 19 | 额尽(dquot) | | 20 | 已有(exist) | 21 | 址误(fault) | 22 | 文件过大(fbig) | | 27 | 见断(intr) | 28 | 参数无效(inval) | 29 | 输入输出误(io) | | 31 | 为目录(isdir) | 32 | 链接过多(loop) | 33 | 开启过多(mfile) | | 37 | 名过长(nametoolong) | 43 | 无此设备(nodev) | 44 | 无有(noent) | | 48 | 内存不足(nomem) | 51 | 无余地(nospc) | 52 | 未实现(nosys) | | 53 | 未连(notconn) | 54 | 非目录(notdir) | 55 | 目录非空(notempty) | | 58 | 不支持(notsup) | 61 | 溢,即缓冲不足(overflow) | 63 | 无特权(perm) | | 64 | 管破(pipe) | 68 | 越界(range) | 69 | 只读之文件系统(rofs) | | 70 | 不可寻址(spipe) | 71 | 无此进程(srch) | 72 | 已失效(stale) | | 73 | 超时(timedout) | 75 | 跨设备(xdev) | 76 | 无此能,即越出所授(notcapable) |

其中 0、8、20、21、22、28、29、31、33、37、44、51、52、54、55、70,已为今之 WASI 库所用,并与 node:wasi 逐字对照验之。

与 GC 接口八系统错误变体之映(议):

| GC 系统错误 | 底层状态之码 | | --- | --- | | 未获授权 | 2、63、69、76 | | 资源暂不可用 | 6、10、27 | | 资源已失效 | 8、15、53、64、72 | | 资源不存在 | 43、44、71 | | 资源已存在 | 3、20 | | 资源配额已尽 | 19、22、33、48、51 | | 输入无效 | 21、28、31、32、37、54、55、61、68、70、75 | | 宿主操作失败(带文字) | 其余(含 14、29、52、58、73) |

平台之注

  • 裸机:单调之钟得诸内核滴答(约百赫),精度十毫秒;墙钟得诸 RTC,唯秒精度;随机之熵源未定(候选 virtio-rng、CPU 随机指令),此前 填随机字节 返 58;中断之标即内核服务二十七;退出即内核服务十八。
  • 桌面:时钟、随机、参数、环境、退出,皆一系统调用(Linux、macOS)或一系统库函数(Windows);中断之标,由信号之处理(Linux、macOS)或控制台事件之处理(Windows)置之。

所赖

观包之制

上传之记

今修订:1 ·

  1. 修订 1
    取 ZIP

包之层级

父:豫言操作系统底层接口

无子包。