Skip to content

Commit 6b5856b

Browse files
committed
memory/SlicePool: move divide_round_up() to util/DivideRoundUp.hxx
1 parent 861b59c commit 6b5856b

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

src/memory/SlicePool.cxx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "system/PageAllocator.hxx"
1010
#include "system/HugePage.hxx"
1111
#include "system/VmaName.hxx"
12+
#include "util/DivideRoundUp.hxx"
1213
#include "util/Poison.h"
1314

1415
#include <cstdint>
@@ -23,12 +24,6 @@ align_size(std::size_t size) noexcept
2324
return RoundUpToPowerOfTwo(size, (std::size_t)0x20);
2425
}
2526

26-
static constexpr unsigned
27-
divide_round_up(unsigned a, unsigned b) noexcept
28-
{
29-
return (a + b - 1) / b;
30-
}
31-
3227
/*
3328
* SliceArea methods
3429
*
@@ -174,7 +169,7 @@ SliceArea::PunchSliceRange(unsigned start,
174169
{
175170
assert(start <= end);
176171

177-
unsigned start_page = divide_round_up(start, pool.slices_per_page)
172+
unsigned start_page = DivideRoundUp(start, pool.slices_per_page)
178173
* pool.pages_per_slice;
179174
unsigned end_page = (start / pool.slices_per_page )
180175
* pool.pages_per_slice;
@@ -223,8 +218,8 @@ SlicePool::SlicePool(std::size_t _slice_size, unsigned _slices_per_area,
223218
slices_per_page = PAGE_SIZE / slice_size;
224219
pages_per_slice = 1;
225220

226-
pages_per_area = divide_round_up(_slices_per_area,
227-
slices_per_page);
221+
pages_per_area = DivideRoundUp(_slices_per_area,
222+
slices_per_page);
228223
} else {
229224
slice_size = AlignToPageSize(_slice_size);
230225

@@ -237,7 +232,7 @@ SlicePool::SlicePool(std::size_t _slice_size, unsigned _slices_per_area,
237232
slices_per_area = (pages_per_area / pages_per_slice) * slices_per_page;
238233

239234
const std::size_t header_size = SliceArea::GetHeaderSize(slices_per_area);
240-
header_pages = divide_round_up(header_size, PAGE_SIZE);
235+
header_pages = DivideRoundUp(header_size, PAGE_SIZE);
241236

242237
area_size = PAGE_SIZE * (header_pages + pages_per_area);
243238
}

src/util/DivideRoundUp.hxx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// SPDX-License-Identifier: BSD-2-Clause
2+
// Copyright CM4all GmbH
3+
// author: Max Kellermann <max.kellermann@ionos.com>
4+
5+
#pragma once
6+
7+
#include <concepts> // for std::unsigned_integral
8+
9+
template<std::unsigned_integral T>
10+
static constexpr T
11+
DivideRoundUp(T a, T b) noexcept
12+
{
13+
return (a + b - 1) / b;
14+
}

0 commit comments

Comments
 (0)