vecs: init

This commit is contained in:
nym21
2025-07-21 11:02:25 +02:00
parent 7ef70b953b
commit 5347523921
23 changed files with 471 additions and 86 deletions

View File

@@ -0,0 +1,79 @@
// use std::sync::Arc;
use bincode::{Decode, Encode};
// use parking_lot::{RwLock, RwLockReadGuard};
use crate::PAGE_SIZE;
// #[derive(Debug, Encode, Decode)]
#[derive(Debug, Encode, Decode)]
pub struct Region {
// Bad name
/// Must be multiple of 4096
start: usize,
length: usize,
/// Must be multiple of 4096
reserved: usize,
// lock: Arc<RwLock<()>>,
// variant: usize, // Raw or Compressed or something else ? to know if there is a header ? Since blocks 4096, storing headers individually would be dumb
}
impl Region {
pub fn new(start: usize, length: usize, reserved: usize) -> Self {
assert!(reserved > 0);
assert!(start % PAGE_SIZE == 0);
assert!(reserved % PAGE_SIZE == 0);
assert!(length <= reserved);
Self {
start,
length,
reserved,
// lock: Arc::new(RwLock::new(())),
}
}
pub fn start(&self) -> usize {
self.start
}
pub fn length(&self) -> usize {
self.length
}
pub fn reserved(&self) -> usize {
self.reserved
}
// pub fn lock(&self) -> RwLockReadGuard<'_, ()> {
// self.lock.read()
// }
}
// #[derive(Debug, Encode, Decode)]
// pub struct RegionInner {
// start: usize,
// length: usize,
// reserved: usize,
// }
// impl From<Region> for RegionInner {
// fn from(value: Region) -> Self {
// Self {
// start: value.start,
// length: value.length,
// reserved: value.reserved,
// }
// }
// }
// impl From<RegionInner> for Region {
// fn from(value: RegionInner) -> Self {
// Self {
// start: value.start,
// length: value.length,
// reserved: value.reserved,
// lock: Arc::new(RwLock::new(())),
// }
// }
// }