豫豫言文档API ATLAS
入口包说明.html
62 模块1862 名称
← 全部模块

模块 / 35

林底层。豫

林底层。豫

78公开名称

状态_林暂存

公开
「整数」

文言:豫言操作系统底层接口之 Linux 后端:四十五函数,径发系统调用。柄即文件描述符;三为根目录。路径以 openat2 之 RESOLVE_BENEATH 守界,旧核则逐段解之;状态块取自 statx。暂存于动态区。汉语:豫言操作系统底层接口的 Linux 后端(45 个函数,直接发系统调用)。句柄是 Linux 文件描述符;3 号是启动时打开的根目录。路径以 openat2 的 RESOLVE_BENEATH 约束,ENOSYS 时逐段解析;越界返回 76。状态块取自 statx(ARM64 与 x86-64 布局相同)。暂存区(路径、statx、open_how、目录项)启动时从动态区分配。进程、等待与网络见 原生进程。豫(与 macOS 共用);待办事项:读写与寻址的偏移只用低 32 位;读目录的游标只支持一次读完整个目录。

状态_林目录容

公开
「整数」

文言:读目录时输出缓冲之容。汉语:读目录时输出缓冲的容量。

林找零址

公开
化「整数」而「整数」

文言:自址起寻零字节,返其址。汉语:从地址起找第一个零字节,返回它的地址。

林底_暂存

公开
化「有」而「整数」

暂无说明。

林底_路径甲

公开
化「有」而「整数」

文言:暂存之布:路径甲、路径乙各四千字节,statx 之缓冲,open_how,杂项,目录项之缓冲。汉语:暂存区布局(相对起址):0 路径甲(4 KiB)、4096 路径乙(4 KiB)、8192 statx 缓冲(256 字节)、8448 open_how(24 字节)、8480 杂项(32 字节)、16384 起 getdents64 缓冲(48 KiB);65536 起给 林进程 用(进程表、poll 数组、杂项、execve 的参数与环境指针表),以及 196608 起 64 KiB 的子进程工作区(原生子进程),共 256 KiB。

林底_路径乙

公开
化「有」而「整数」

暂无说明。

林底_状缓

公开
化「有」而「整数」

暂无说明。

林底_开法

公开
化「有」而「整数」

暂无说明。

林底_杂

公开
化「有」而「整数」

暂无说明。

林底_目录缓

公开
化「有」而「整数」

暂无说明。

林底_目录缓长

公开
「整数」

暂无说明。

林底_状块

公开
化「有」而「整数」

文言:供外层(文件原语)所用之状态块(六十四字节)、出槽(十六字节)、游标(八字节)。汉语:给外层文件原语用的状态块(8544 起 64 字节)、出槽(8608 起 16 字节)与目录游标(8624 起 8 字节)。

林底_出槽

公开
化「有」而「整数」

暂无说明。

林底_游标

公开
化「有」而「整数」

暂无说明。

林底_初始化

公开
化「有」而「有」

文言:初始化:取暂存,开根目录而置于三号。汉语:初始化:向动态区取 64 KiB 暂存;打开根目录“/”(O_RDONLY|O_CLOEXEC)并用 dup3 放到 3 号。

林底_零终

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:路径复制于暂存而以零终;逾容则返负一。汉语:把(址,长)的路径拷进暂存缓冲并补结尾零;太长返回 -1,否则返回缓冲地址。

林底_写宽

公开
化「整数」而化「整数」而化「整数」而「有」

文言:书六十四位于出址:低字、高字。汉语:把 64 位值(低字、高字)写到出址。

林底_时刻纳秒

公开
化「整数」而化「整数」而「有」

文言:statx 之时刻(秒八字节、纳秒四字节)化为纳秒之数,书于出址。汉语:把 statx 时间戳(8 字节秒、4 字节纳秒)换成自 1970 年起的纳秒数(64 位)写到出址。

林底_模式类型

公开
化「整数」而「整数」

文言:statx 之模式化为底层之类型。汉语:statx 的 stx_mode 换成状态块类型:目录 3、普通文件 4、符号链接 7、字符设备 2、块设备 1、套接字 6,其余 0。

林底_填状态

公开
化「整数」而「有」

文言:statx 之缓冲化为六十四字节之状态块。汉语:把 statx 缓冲换成 64 字节状态块(布局见底层文件规范)。

林底_取状

公开
化「整数」而化「整数」而化「整数」而化「整数」而「整数」

文言:statx 取状,成则填状态块。汉语:调用 statx(掩码 STATX_BASIC_STATS),成功就填状态块。

林底_路径模式

公开
化「整数」而化「整数」而化「爻」而「整数」

文言:路径之模式:取其 statx 之 stx_mode,不存在则返负一。汉语:取路径的 stx_mode(不跟随末段链接时加 AT_SYMLINK_NOFOLLOW);出错返回 -1。

林底_柄模式

公开
化「整数」而「整数」

文言:柄之模式:statx 以 AT_EMPTY_PATH 取之,误则负一。汉语:取已打开句柄的 stx_mode(statx 加 AT_EMPTY_PATH);出错返回 -1。

林底_读钟

公开
化「整数」而化「整数」而「整数」

文言:基础:时钟、随机、环境、退出、中断、平台、处理器之数。汉语:基础包:时钟、随机、环境(参数块与环境块沿用裸机实现,启动时已从 /proc 写进程序名区与参数区)、退出、中断、平台、处理器数。

林底_读单调纳秒

公开
化「整数」而「整数」

暂无说明。

林底_读墙钟纳秒

公开
化「整数」而「整数」

暂无说明。

林底_取时钟精度

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_取时区偏移

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:时区之偏:待办。汉语:时区偏移:待办事项(需读 /etc/localtime),暂报不支持。

林底_填随机字节

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_退出

公开
化「整数」而「有」

暂无说明。

林底_查询中断

公开
化「整数」而「整数」

暂无说明。

林底_取平台

公开
化「整数」而「整数」

暂无说明。

林底_数位

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:数亲和掩码之位。汉语:数 CPU 亲和掩码里置位的个数。

林底_取处理器数

公开
化「整数」而「整数」

暂无说明。

林底_计数果

公开
化「整数」而化「整数」而「整数」

文言:句柄:读、写、定位读写、寻址、关闭、同步、设长度、非阻塞、管道、初始授权与类别。汉语:句柄包:读写、定位读写、寻址、关闭、同步、设长度、设非阻塞、建管道、初始句柄与句柄类别。

林底_读

公开
化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_写

公开
化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_定位读

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_定位写

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_寻址

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林进程柄基

公开
「整数」

文言:进程之柄:自 2^30 起,第 i 格之柄为 2^30+i;进程表居暂存六五五三六起,六十四格,格十六字节:进程号、态(零空、一行、二毕)、退出码。汉语:进程句柄从 2^30 起编号(第 i 格的句柄是 2^30+i),不与文件描述符相撞;进程表在暂存区 65536 起,64 格,每格 16 字节:进程号、状态(0 空、1 运行中、2 已退出)、退出码。

林进程格数

公开
「整数」

暂无说明。

林底_进程表

公开
化「有」而「整数」

暂无说明。

林是进程柄

公开
化「整数」而「爻」

暂无说明。

林进程格

公开
化「整数」而「整数」

暂无说明。

林底_关闭

公开
化「整数」而「整数」

文言:闭柄:进程之柄释其格而不终其进程。汉语:关闭句柄;进程句柄只释放表格,不终止进程(待办事项:未退出就关闭的子进程不再回收,成为僵尸进程)。

林底_同步

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_设长度

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_设非阻塞

公开
化「整数」而化「整数」而「整数」

文言:非阻塞:F_GETFL 取标,加减 O_NONBLOCK 而 F_SETFL。汉语:设非阻塞:F_GETFL(3)取状态标志,按开关加上或去掉 O_NONBLOCK(0x800),再 F_SETFL(4)。

林底_建管道

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_取初始句柄

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

文言:初始授权唯三号之根目录,名为 /。汉语:初始句柄:只有 3 号根目录(类别 2,名字“/”)。

林底_取句柄类别

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_开标志

公开
化「整数」而「整数」

文言:文件:打开、状态、目录、建删改名、读链接。汉语:文件包:打开、取状态、取路径状态、读目录、建目录、删文件、删目录、改名、读链接。 文言:打开之标志化为 Linux 之 O_ 位。兼容六十四以第十七位为 NOFOLLOW,臂六十四以第十五位为之;兼取二位,彼位各为 LARGEFILE。汉语:把打开标志换成 Linux 的 O_ 位。x86-64 的 O_NOFOLLOW 是位 17,ARM64 是位 15;同时设置两位,在另一架构上多出的位只是 O_LARGEFILE。

林底_段末

公开
化「整数」而化「整数」而「整数」

文言:寻一段之末,遇斜线或零乃止。汉语:找到路径段末尾的斜线或零字节。

林底_链接缓

公开
化「有」而「整数」

文言:链接之暂存与途之柄,皆在底层暂存之空区。汉语:链接目标使用暂存区 8704 起的缓冲;逐段打开的目录句柄随进展立即关闭。

林底_关途

公开
化「整数」而化「整数」而「有」

暂无说明。

林底_安全走

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

文言:旧核无 openat2,则各段以 O_PATH、O_NOFOLLOW 开之;遇链接取其目标而复自根寻。上行之段逐步退一层,免先规整而略过链接。汉语:openat2 不可用时逐段用 O_PATH|O_NOFOLLOW 打开;遇符号链接从授权根重新解析目标。逐段处理 `..`,避免提前规格化时跳过符号链接。

林底_安全回退

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:旧核或转译层无 openat2,乃以逐段验链接之途开文。汉语:openat2 返回 ENOSYS 时使用逐段校验的回退;绝对路径和越出授权目录的链接返回 -EXDEV。

林底_开二或开

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:openat2 严验 O_PATH 之标,故双位不得兼置;先试兼容六十四之 NOFOLLOW,若 EINVAL 则试臂六十四之位。旧核之 openat 容兼置双位。汉语:openat2 对 O_PATH 标志严格校验,先用 x86-64 的 O_NOFOLLOW 位,遇 EINVAL 再试 ARM64 的位;ENOSYS 回退的 openat 可以同时设置两位。

林底_打开

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_取状态

公开
化「整数」而化「整数」而「整数」

暂无说明。

林底_取路径状态

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_末斜

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:寻末一斜线,返其位;无则负一。汉语:找到最后一个斜线的位置,没有则返回 -1。

林底_父柄

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:分径而开其父。末名另存,免逐段寻父时覆之;根柄不新开。汉语:拆出末段名称并安全打开父目录;把名称另存,避免解析父路径时覆盖它。无父路径时沿用根句柄。

林底_建目录

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_删文件

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_删目录

公开
化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_改名

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_读链接

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_目录项类型

公开
化「整数」而「整数」

文言:Linux 之目录项(ino 八、off 八、reclen 二、type 一、名以零终)化为接口之项(next 八、ino 八、名长四、type 一、填三、名)。d_type:目录四、文件八、链接十、字符二、块六、套接字十二。汉语:把 getdents64 的记录(d_ino 8、d_off 8、d_reclen 2、d_type 1、名字以零结尾)换成接口目录项(下一游标 8、索引节点 8、名长 4、类型 1、填充 3、名字);d_type 换成状态块类型:DT_DIR 4→3、DT_REG 8→4、DT_LNK 10→7、DT_CHR 2→2、DT_BLK 6→1、DT_SOCK 12→6,其余 0。

林底_转目录项们

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

文言:转一批目录项,返写之总长;逾缓冲则截。汉语:把目录项缓冲 [位, 止) 里的记录逐条转写到输出缓冲(已写 已 字节),写不下就截断在缓冲末尾;返回已写字节数。

林底_读尽目录

公开
化「整数」而化「整数」而化「整数」而「整数」

文言:尽读目录:游标为零则回首,否则视为已尽。汉语:读目录:游标为 0 时回到目录开头,循环 getdents64 把全部记录转写进输出缓冲,写满即止;游标非 0 时视为已读完(返回 0 字节)。完成后游标写成 1。

林底_读目录

公开
化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」

暂无说明。

林底_候杂

公开
化「有」而「整数」

文言:杂项之区(二百五十六字节):进程、候、网络与终端所用;六版地址暂于九十六起。汉语:杂项区(暂存 68608 起,256 字节),供进程、等待、网络与终端模式使用:+0 当前纳秒、+8 起始纳秒、+16 wait4 状态、+20 管道两端、+32 timespec、+48 整数槽、+52 长度槽、+64 套接字地址、+96 解析后的 IPv4 或 IPv6 地址、+80 termios 工作区、+152 execve 误码槽、+160 保存的原始 termios、+232 已保存标志。网络与终端临时槽分时使用。

林底_设终端模式

公开
化「整数」而化「整数」而「整数」

文言:终端:尺寸以 TIOCGWINSZ 取之。终端之模:TCGETS 取之(首取时存其原态);原始之模去 BRKINT、ICRNL、INPCK、ISTRIP、IXON 与 ECHO、ICANON、IEXTEN、ISIG,置 CS8,VMIN 一 VTIME 零(同 libuv 之原始模);行模复其原态;TCSETS 置之。汉语:终端包:取终端尺寸用 ioctl TIOCGWINSZ(0x5413);设终端模式用 TCGETS(0x5401)取 36 字节的内核 termios(第一次取时保存原状态),原始模式去掉 BRKINT、ICRNL、INPCK、ISTRIP、IXON(输入)与 ECHO、ICANON、IEXTEN、ISIG(本地),置 CS8,VMIN=1、VTIME=0(与 libuv 的原始模式相同,输出处理不变);行模式恢复保存的原状态;再用 TCSETS(0x5402)写回。不是终端返回 59。

林底_取终端尺寸

公开
化「整数」而化「整数」而「整数」

暂无说明。

林读行核

公开
化「整数」而化「整数」而「整数」

文言:Linux 之读行:自标准入逐字读至换行或文末,不回显(终端自回显之),去行末之回车;文末而无字则返负一。汉语:Linux 读行:从标准输入逐字节读到换行或文件尾,写进行缓冲;不回显(真终端由内核的行规程回显,管道本不该回显);去掉行尾的回车;文件尾且一个字节也没读到时返回 -1。

林读行

公开
化「有」而「整数」

暂无说明。