rtl: add CachePadded

This commit is contained in:
Loïc Grégoire
2026-07-05 00:28:04 -04:00
parent 79b96ed3dc
commit ed7c449ad2
2 changed files with 19 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
const std = @import("std");
/// Type padded to a cache line.
pub fn CachePadded(comptime T: type) type {
return struct {
const cache_line = std.atomic.cache_line;
const value_size = @sizeOf(T);
const padded_size = std.mem.alignForward(usize, value_size, cache_line);
const pad = padded_size - value_size;
value: T align(cache_line),
_pad: [pad]u8 = undefined,
pub fn init(val: T) @This() {
return .{ .value = val };
}
};
}
+1
View File
@@ -15,6 +15,7 @@ pub const BitMap = @import("bitmap.zig").BitMap;
pub const AtomicBitMap = @import("bitmap.zig").AtomicBitMap;
pub const HandoffList = @import("handoff.zig").HandoffList;
pub const LinkerSet = @import("linker_set.zig").LinkerSet;
pub const CachePadded = @import("cache_padded.zig").CachePadded;
/// Asserts that a given type `T` matches the schema declared by `I`.
/// This includes public methods and fields.