mirror of
https://github.com/rdmsr/zag.git
synced 2026-11-01 15:48:21 +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 AtomicBitMap = @import("bitmap.zig").AtomicBitMap;
|
||||||
pub const HandoffList = @import("handoff.zig").HandoffList;
|
pub const HandoffList = @import("handoff.zig").HandoffList;
|
||||||
pub const LinkerSet = @import("linker_set.zig").LinkerSet;
|
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`.
|
/// Asserts that a given type `T` matches the schema declared by `I`.
|
||||||
/// This includes public methods and fields.
|
/// This includes public methods and fields.
|
||||||
|
|||||||
Reference in New Issue
Block a user