模块接口与用例¶
管理命名空间¶
AxNamespace::global¶
获取全局命名空间。实际上获取的是 axns_resource 段的地址。
Axnamespace::new_thread_local¶
新建一个线程本地命名空间。分配了一块内存区域并拷贝全局命名空间。
AxNamespaceIf::current_namespace_base¶
需要调用者通过 #[crate_interface::impl_interface] 提供的方法。获取当前线程命名空间的基地址。
例如在 Starry 中,我们把用户程序的命名空间保存在 TaskExt 中,就需要在这里实现获取当前 TaskExt 并返回命名空间的基地址的逻辑。
注册资源¶
def_resource!¶
通过 def_resource! 宏定义可被命名空间管理的资源。该宏把资源链接到 axns_resource 段中,由此计算资源存储在命名空间中的偏移,并实现一系列解引用方法。
ResArc<T>¶
对 LazyInit<Arc<T>> 的简单封装,用于懒惰初始化资源。
例子¶
1 2 3 4 5 6 7 8 9 10 | |
评论
作者: