lib/gpalloc/src/large/model.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const std = @import("std");
 2 const size_class = @import("../root.zig").class;
 3 
 4 const Alignment = std.mem.Alignment;
 5 
 6 pub const class_step: usize = 4 * 1024;
 7 pub const max_small_cached_size: usize = 256 * 1024;
 8 pub const huge_class_step: usize = 4 * 1024 * 1024;
 9 pub const min_huge_cached_size: usize = 4 * 1024 * 1024;
10 pub const max_cached_size: usize = 32 * 1024 * 1024;
11 pub const medium_class_step: usize = 64 * 1024;
12 pub const min_medium_cached_size: usize = max_small_cached_size + medium_class_step;
13 pub const max_medium_cached_size: usize = 512 * 1024;
14 pub const medium_default_limit_bytes: usize = 16 * 1024 * 1024;
15 pub const alignment = Alignment.fromByteUnits(size_class.min_alignment);
16 
17 pub const min_cached_size = size_class.max_small_size + class_step;
18 pub const small_class_count = (max_small_cached_size - min_cached_size) / class_step + 1;
19 pub const huge_class_count = (max_cached_size - min_huge_cached_size) / huge_class_step + 1;
20 pub const class_count = small_class_count + huge_class_count;
21 pub const medium_class_count =
22     (max_medium_cached_size - min_medium_cached_size) / medium_class_step + 1;
23 pub const bin_capacity: u16 = 64;
24 pub const header_magic: u64 = 0x5441_4c47_4341_0001;
25 pub const medium_header_magic: u64 = 0x5441_4d47_4341_0001;
26 
27 pub const Class = struct {
28     index: usize,
29     size: usize,
30 };
31 
32 pub const Entry = struct {
33     class: Class,
34     ptr: [*]u8,
35 };
36 
37 pub const Header = extern struct {
38     magic: u64,
39     class_index: usize,
40 };
41 
42 pub const header_size = std.mem.alignForward(
43     usize,
44     @sizeOf(Header),
45     size_class.min_alignment,
46 );