mirror of
https://github.com/rdmsr/zag.git
synced 2026-10-27 13:58:20 +00:00
19 lines
510 B
Zig
19 lines
510 B
Zig
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 };
|
|
}
|
|
};
|
|
}
|