diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-02-06 20:21:13 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-06 20:21:13 -0500 |
| commit | 8a5d3e2eaf72195993e4932bfda66d08a36c6064 (patch) | |
| tree | 6a09c68ee70d00e97feeae55b213203fbaddc295 /std/mem.zig | |
| parent | 3abf293a84b4dc052c0d735018db520eade6274b (diff) | |
| parent | 89ffb5819703c81514e4f29d2cadb5b74ea1f840 (diff) | |
| download | zig-8a5d3e2eaf72195993e4932bfda66d08a36c6064.tar.gz zig-8a5d3e2eaf72195993e4932bfda66d08a36c6064.zip | |
Merge pull request #1924 from ziglang/tls
Implement Thread Local Variables
Diffstat (limited to 'std/mem.zig')
| -rw-r--r-- | std/mem.zig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/std/mem.zig b/std/mem.zig index 26ae4ef089..178a5f6c6f 100644 --- a/std/mem.zig +++ b/std/mem.zig @@ -1366,3 +1366,23 @@ test "std.mem.subArrayPtr" { sub2[1] = 'X'; debug.assert(std.mem.eql(u8, a2, "abcXef")); } + +/// Round an address up to the nearest aligned address +pub fn alignForward(addr: usize, alignment: usize) usize { + return (addr + alignment - 1) & ~(alignment - 1); +} + +test "std.mem.alignForward" { + debug.assertOrPanic(alignForward(1, 1) == 1); + debug.assertOrPanic(alignForward(2, 1) == 2); + debug.assertOrPanic(alignForward(1, 2) == 2); + debug.assertOrPanic(alignForward(2, 2) == 2); + debug.assertOrPanic(alignForward(3, 2) == 4); + debug.assertOrPanic(alignForward(4, 2) == 4); + debug.assertOrPanic(alignForward(7, 8) == 8); + debug.assertOrPanic(alignForward(8, 8) == 8); + debug.assertOrPanic(alignForward(9, 8) == 16); + debug.assertOrPanic(alignForward(15, 8) == 16); + debug.assertOrPanic(alignForward(16, 8) == 16); + debug.assertOrPanic(alignForward(17, 8) == 24); +} |
