Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
sys
Limits.hpp
Go to the documentation of this file.
1
// The Reactive C++ Toolbox.
2
// Copyright (C) 2013-2019 Swirly Cloud Limited
3
// Copyright (C) 2021 Reactive Markets Limited
4
//
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing, software
12
// distributed under the License is distributed on an "AS IS" BASIS,
13
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
// See the License for the specific language governing permissions and
15
// limitations under the License.
16
17
#ifndef TOOLBOX_SYS_LIMITS_HPP
18
#define TOOLBOX_SYS_LIMITS_HPP
19
20
#include <
toolbox/util/Math.hpp
>
21
22
namespace
toolbox
{
23
inline
namespace
sys {
24
25
// Assumptions:
26
// sysconf(_SC_LEVEL1_DCACHE_LINESIZE) == 64
27
// sysconf(_SC_PAGESIZE) == 4096
28
29
enum
: std::size_t {
30
CacheLineBits
= 6,
31
CacheLineSize
= 1 <<
CacheLineBits
,
32
PageBits
= 12,
33
PageSize
= 1 <<
PageBits
,
35
MaxLogLine
= 4096
36
};
37
38
constexpr
std::size_t
ceil_cache_line
(std::size_t
size
)
noexcept
39
{
40
return
ceil_pow2<CacheLineBits>
(
size
);
41
}
42
43
constexpr
std::size_t
ceil_page
(std::size_t
size
)
noexcept
44
{
45
return
ceil_pow2<PageBits>
(
size
);
46
}
47
48
}
// namespace sys
49
}
// namespace toolbox
50
51
#endif
// TOOLBOX_SYS_LIMITS_HPP
Math.hpp
toolbox::sys::ceil_cache_line
constexpr std::size_t ceil_cache_line(std::size_t size) noexcept
Definition
Limits.hpp:38
toolbox::sys::CacheLineSize
@ CacheLineSize
Definition
Limits.hpp:31
toolbox::sys::CacheLineBits
@ CacheLineBits
Definition
Limits.hpp:30
toolbox::sys::MaxLogLine
@ MaxLogLine
Maximum log line size.
Definition
Limits.hpp:35
toolbox::sys::PageSize
@ PageSize
Definition
Limits.hpp:33
toolbox::sys::PageBits
@ PageBits
Definition
Limits.hpp:32
toolbox::sys::ceil_page
constexpr std::size_t ceil_page(std::size_t size) noexcept
Definition
Limits.hpp:43
toolbox::util::size
constexpr std::size_t size(const detail::Struct< detail::Member< TagsT, ValuesT >... > &s)
Definition
Struct.hpp:98
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox
Definition
Benchmark.cpp:26
Generated by
1.9.8