arr_o_gpu/arr_o_gpu/allocator/method/allocate.rs
1use std::num::NonZeroU64;
2
3use uuid::Uuid;
4
5use crate::arr_o_gpu::allocator::Allocator;
6
7impl Allocator {
8 pub fn allocate(&mut self, size: u32) -> Result<monagement::Allocated, String> {
9 self.core
10 .allocate(NonZeroU64::new(size as u64).ok_or("size must be greater than 0")?)
11 }
12
13 // pub fn allocate(&mut self, data_length: u32) -> (u32, u32) {
14 // let mut pointer = (SpaceType::RangeSpace(0), 0, 0);
15
16 // // monagement branch
17 // if !self.monanagement.is_empty() {
18 // // not empty
19 // for (_, (key, (_, range))) in self.monanagement.iter().enumerate() {
20 // let len = range.end - range.start;
21 // if data_length == len {
22 // // range is same => Range Mode
23 // let id = Uuid::new_v4().as_u128();
24 // pointer = (SpaceType::RangeSpace(id), range.start, range.end);
25
26 // let key = *key;
27 // self.monanagement.remove(&key);
28 // break;
29 // } else if data_length < len {
30 // // range is bigger => Fragement Mode
31 // let id = Uuid::new_v4().as_u128();
32 // pointer = (
33 // SpaceType::FragmentSpace(id, 0),
34 // range.start,
35 // range.start + data_length,
36 // );
37
38 // // update range
39 // let key = *key;
40 // let start = range.start + data_length;
41 // let end = range.end;
42
43 // self.monanagement.remove(&key);
44 // self.monanagement.insert(start, (id, start..end));
45 // break;
46 // }
47 // }
48
49 // if pointer.1 == 0 && pointer.2 == 0 {
50 // // using last space
51 // let id = Uuid::new_v4().as_u128();
52 // pointer = (
53 // SpaceType::RangeSpace(id),
54 // self.last_space.0,
55 // self.last_space.0 + data_length,
56 // );
57 // // update last_space
58 // let start = self.last_space.0 + data_length;
59 // if start > self.last_space.1 {
60 // panic!("Allocator Error: Memory Overflow");
61 // }
62 // self.last_space.0 = start;
63 // }
64 // } else {
65 // // empty
66 // let id = Uuid::new_v4().as_u128();
67
68 // pointer = (
69 // SpaceType::RangeSpace(id),
70 // self.last_space.0,
71 // self.last_space.0 + data_length,
72 // );
73 // // update last_space
74 // let start = self.last_space.0 + data_length;
75 // if start > self.last_space.1 {
76 // panic!("Allocator Error: Memory Overflow");
77 // }
78 // self.last_space.0 = start;
79 // }
80 // // monagement branch
81
82 // pointer
83 // }
84}