模块接口与用例¶
管理命名空间¶
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 |
|
评论
作者: