1use core::{num::NonZeroU32, ptr::NonNull};
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq)]
5pub struct PerCpuRegion {
6 runtime_base: NonNull<u8>,
7 area_stride: usize,
8 area_count: NonZeroU32,
9}
10
11unsafe impl Send for PerCpuRegion {}
14unsafe impl Sync for PerCpuRegion {}
16
17impl PerCpuRegion {
18 pub const fn new(
20 runtime_base: NonNull<u8>,
21 area_stride: usize,
22 area_count: NonZeroU32,
23 ) -> Self {
24 Self {
25 runtime_base,
26 area_stride,
27 area_count,
28 }
29 }
30
31 pub fn runtime_base(self) -> usize {
33 self.runtime_base.as_ptr() as usize
34 }
35
36 pub const fn area_stride(self) -> usize {
38 self.area_stride
39 }
40
41 pub const fn area_count(self) -> NonZeroU32 {
43 self.area_count
44 }
45}