3个版本
使用旧的Rust 2015
0.4.2 | 2023年12月19日 |
---|---|
0.4.1 | 2022年6月7日 |
0.4.0 | 2021年11月15日 |
#15 in 操作系统
633,266 每月下载量
在 1,378 个crate中使用 (40 直接)
88KB
2K SLoC
mach2
Rust接口,用于访问在macOS中通过libSystem(以及libsystem_kernel)链接的Mach 3.0内核在/usr/include/mach中暴露的用户空间API。
该库不暴露Mach 3.0内核在SDK/系统/库/框架/内核.framework/Versions/A/Headers/mach中暴露的内核空间API。
也就是说,如果您正在编写内核驻留的设备驱动程序或其他内核扩展,您必须使用其他东西。用户空间内核API通常与内核空间API不兼容,即使在它们匹配的情况下,它们有时也可能在ABI上不兼容,使用此库可能会导致未定义行为。
使用方法
将以下内容添加到您的Cargo.toml
中,以有条件地包含对支持它的平台的mach。
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.mach]
version = "0.4"
可用的crate功能
- 不稳定(默认禁用):公开新更改的API。启用此功能可能会带来破坏性更改(请参阅破坏性更改策略)。
破坏性更改策略
当最新工具链上的项目被更改/删除时,我们执行以下步骤
- 弃用现有项目
- 在
不稳定
功能下声明新项目 - 自发布包含该更改的新版本的一个月或更长时间后,删除/更改较旧的项目
例如,如果const FOO
值从3
更改为4
,我们首先在不稳定
下公开新的,即4
。因此,不稳定
用户应该在弃用后的第一个版本中注意到更改。一个月或更长时间后,所有用户都应该注意到。
示例
示例可以在本仓库的examples目录中找到。
由于 examples/dump_process_registers.rs
使用了需要提升权限的 task_for_pid()
函数,因此需要禁用系统完整性保护(SIP)并且成为 admin
或 _developer
组的成员才能运行示例。然而,请注意,禁用 SIP 并不鼓励,并且仅应出于开发/调试目的进行。
- 重启 macOS 至恢复模式。
- 点击
Options
。 - 登录您的用户。
- 在菜单中点击
Utilities
,然后Terminal
。 - 在终端中键入以下命令以禁用 SIP:
csrutil disable
(要重新启用 SIP,请使用csrutil enable
)。 - 重启您的计算机。
要运行示例,请按以下步骤构建:
cargo b --example dump_process_registers
然后使用 sudo
运行。
sudo ./target/debug/examples/dump_process_registers
平台支持
以下表格描述了当前的 CI 设置
目标 | 最小 Rust | XCode | 构建 | 测试 | 运行 |
---|---|---|---|---|---|
x86_64-apple-darwin |
1.33.0 | 10.3.0 - 13.1.0 | ✓ | ✓ | ✓ |
aarch64-apple-darwin |
nightly | 13.1.0 | ✓ | - | - |
aarch64-apple-ios |
nightly | 13.1.0 | ✓ | - | - |
aarch64-apple-ios-sim |
nightly | 13.1.0 | ✓ | - | - |
x86_64-apple-ios |
nightly | 13.1.0 | ✓ | - | - |
许可证
本项目受以下任一许可证的许可:
- 2 条款 BSD 许可证(《LICENSE-BSD》),或者
- Apache 许可证第 2 版(《LICENSE-APACHE》或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT》)
任选其一。
贡献
除非您明确声明,否则您提交给 mach
的任何贡献,如 Apache-2.0 许可证中定义的,将按上述方式三重许可,不附加任何额外的条款或条件。
要本地测试库,运行:
TARGET=x86_64-apple-darwin RUST_VERSION=nightly ./ci/run.sh
其中您可以将 TARGET
和 RUST_VERSION
替换为您要测试的目标(例如 aarch64-apple-darwin
)以及您要用于测试的 Rust 版本(例如 stable
,1.33.0
等)。