Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

添加AlignedBox和int_like宏 #272

Merged

Conversation

fslongjin
Copy link
Member

这个pr包含了AlignedBox以及int_like宏。

AlignedBox

AlignedBox 是一个用于分配对齐内存的结构体,它提供了一些对齐的宏和函数、结构体。分配的内存地址符合 ALIGN 的要求。如果类型 T 的对齐要求大于 ALIGN,则采用 T 的对齐要求。

AlignedBox 的原理是使用 Rust 的 core::alloc::Layout 结构体来分配内存。Layout 结构体描述了如何分配一块内存,包括大小、对齐方式等信息。在 AlignedBox 中,使用 Layout 结构体来描述分配内存的大小和对齐方式,然后使用 Rust 的全局内存分配器 GlobalAlloc 来分配内存。

AlignedBox 的功能是提供一种方便的方式来分配对齐内存。在某些情况下,需要分配对齐内存,例如在使用 SIMD 指令时,需要将数据对齐到指定的字节边界。AlignedBox 可以帮助用户方便地分配对齐内存,而不需要手动计算内存大小和对齐方式.

int_like宏

这部分是从redox里面借来的。
int_like 是一个 宏,用于定义一个新的类型,该类型是由一个整数类型(通常是 usize)支持的,但是不会影响安全性。
比如,把Pid定义为一个由usize支持的类型,同时定义AtomicPid是一个由AtomicUsize支持的类型。

int_like 宏的原理是使用 Rust 的 derive 宏来自动生成一些常用的 trait 实现,例如 PartialEq、Eq、PartialOrd、Ord、Debug、Clone 和 Copy。此外,它还使用 Rust 的 const fn 来定义一些常用的方法,例如 into 和 from,以便用户可以方便地将新类型转换为支持的整数类型。

int_like 宏的功能是提供一种方便的方式来定义一个新类型,该类型是由一个整数类型支持的,但是不会影响安全性。这对于需要使用整数类型的场景非常有用,例如定义一个 Pid 类型,该类型是由一个 usize 支持的,但是不会影响安全性。

@fslongjin fslongjin merged commit bb24249 into DragonOS-Community:master May 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant