13个版本

使用旧的Rust 2015

0.0.14 2017年5月24日
0.0.13 2017年5月24日
0.0.12 2017年4月25日
0.0.11 2016年10月1日
0.0.10 2016年9月19日

#508 in Unix APIs

Download history 46/week @ 2024-03-13 71/week @ 2024-03-20 98/week @ 2024-03-27 59/week @ 2024-04-03 50/week @ 2024-04-10 50/week @ 2024-04-17 65/week @ 2024-04-24 70/week @ 2024-05-01 53/week @ 2024-05-08 49/week @ 2024-05-15 49/week @ 2024-05-22 46/week @ 2024-05-29 44/week @ 2024-06-05 43/week @ 2024-06-12 54/week @ 2024-06-19 32/week @ 2024-06-26

175 每月下载次数
21 个crate中使用 (7 直接)

MIT 许可证

1MB
13K SLoC

[](This file is part of syscall-alt. It is subject to the license terms in the COPYRIGHT file found in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/syscall-alt/master/COPYRIGHT. No part of syscall-alt, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the COPYRIGHT file.) [](Copyright © 2016 The developers of syscall-alt. See the COPYRIGHT file in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/syscall-alt/master/COPYRIGHT.)

syscall-alt

syscall-alt 是一个Rust crate,提供了针对某些Linux平台的系统调用内联汇编(asm! 宏)定义。它还包括:

  • 一个定义常用Linux系统调用的枚举;
  • 一些简单的封装逻辑,以便于与系统调用一起使用。
  • 正确的系统调用/Posix错误代码('E'),例如 EINVAL
    • Linux:
      • 在MIPS和PowerPC上略有不同
      • MIPS64与MIPS相同
      • PowerPC64与PowerPC相同
      • PowerPC几乎与x86_64相同,除了 EDEADLOCK:-
        • PowerPC是唯一一个 EDEADLOCK != EDEADLK (所以使用 match 时要小心)
      • MIPS与x86_64 非常 不同
        • 但它有完全相同的一组E数字
  • SYS调用数字和E数字对每个架构都可用,例如,如果您想了解针对 arm 的它们,但编译为 x86_64,它们都是可用的
    • 注意使用 EDEADLOCKEDEADLCKENOTSUPEOPNOTSUPP;它们的定义和值各不相同,有时缺失,有时相等
    • 在使用 EWOULDBLOCKEAGAIN 时要小心;所有当前平台都将 EWOULDBLOCK 视为与 EAGAIN 相同,但这并不是 POSIX 的要求。
  • 这是一个 Windows 模拟,包含 EAGAIN 等在 Windows 中定义的项(但没有 syscall 编号)。

代码非常原始,所以请预期会有破坏性变更。

这个 crate 是 #[!no_std],并且不需要 std 库或 libc crate。

待办事项

许可

此项目的许可协议为 AGPL。

无运行时依赖