mirror of
https://github.com/rdmsr/zag.git
synced 2026-10-27 13:58:20 +00:00
rtl: add CachePadded
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user