Skip to content

Commit 408ed93

Browse files
Add alignment helpers to core.memory
1 parent 1d48b3c commit 408ed93

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

source/numem/core/memory/package.d

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,25 @@ T move(T)(scope ref return T from) {
253253
*/
254254
void copyTo(T)(ref T from, ref T to) {
255255
__copy(from, to);
256+
}
257+
258+
/**
259+
Returns `bytes` aligned to a multiple of `alignment`.
260+
*/
261+
pragma(inline, true)
262+
size_t alignSize(size_t bytes, size_t alignment) {
263+
return bytes+(bytes%alignment);
264+
}
265+
266+
/**
267+
Aligns `bytes` to the closest memory page boundary.
268+
If page-size is unknown, aligns to increments of `fallback`.
269+
270+
Returns:
271+
New byte count aligned to page size.
272+
*/
273+
size_t alignToPage(size_t bytes, size_t fallback=4096) {
274+
import numem.core.system : sysGetPageSize;
275+
size_t pageSize = sysGetPageSize();
276+
return alignSize(bytes, pageSize == 1 ? fallback : pageSize);
256277
}

0 commit comments

Comments
 (0)