Skip to content

Commit 2db081b

Browse files
authored
Merge pull request #171 from igchor/default_params
Add function for returning default os params
2 parents 8c63afe + f43e36b commit 2db081b

File tree

6 files changed

+34
-81
lines changed

6 files changed

+34
-81
lines changed

include/umf/providers/provider_os_memory.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,22 @@ typedef enum umf_os_memory_provider_native_error {
8989

9090
extern umf_memory_provider_ops_t UMF_OS_MEMORY_PROVIDER_OPS;
9191

92+
/// @brief Create default params for os memory provider
93+
static inline umf_os_memory_provider_params_t
94+
umfOsMemoryProviderParamsDefault(void) {
95+
umf_os_memory_provider_params_t params = {
96+
UMF_PROTECTION_READ | UMF_PROTECTION_WRITE, /* protection */
97+
UMF_VISIBILITY_PRIVATE, /* visibility */
98+
NULL, /* nodemask */
99+
0, /* maxnode */
100+
UMF_NUMA_MODE_DEFAULT, /* numa_mode */
101+
0, /* numa_flags */
102+
0 /* traces */
103+
};
104+
105+
return params;
106+
}
107+
92108
#ifdef __cplusplus
93109
}
94110
#endif

src/memory_targets/memory_target_numa.c

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,6 @@ static umf_result_t numa_initialize(void *params, void **memTarget) {
4141

4242
static void numa_finalize(void *memTarget) { free(memTarget); }
4343

44-
static const umf_os_memory_provider_params_t
45-
UMF_OS_MEMORY_PROVIDER_PARAMS_DEFAULT = {
46-
// Visibility & protection
47-
.protection = UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
48-
.visibility = UMF_VISIBILITY_PRIVATE,
49-
50-
// NUMA config
51-
.nodemask = NULL,
52-
.maxnode = 0, // TODO: numa_max_node/GetNumaHighestNodeNumber
53-
.numa_mode = UMF_NUMA_MODE_BIND,
54-
.numa_flags = UMF_NUMA_FLAGS_STRICT, // TODO: determine default behavior
55-
56-
// Logging
57-
.traces = 0, // TODO: parse env variable for log level?
58-
};
59-
6044
static umf_result_t
6145
numa_targets_create_nodemask(struct numa_memory_target_t **targets,
6246
size_t numTargets, unsigned long **mask,
@@ -118,10 +102,11 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
118102
return ret;
119103
}
120104

121-
umf_os_memory_provider_params_t params =
122-
UMF_OS_MEMORY_PROVIDER_PARAMS_DEFAULT;
105+
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
123106
params.nodemask = nodemask;
124107
params.maxnode = maxnode;
108+
params.numa_mode = UMF_NUMA_MODE_BIND;
109+
params.numa_flags = UMF_NUMA_FLAGS_STRICT;
125110

126111
umf_memory_provider_handle_t numaProvider = NULL;
127112
ret = umfMemoryProviderCreate(&UMF_OS_MEMORY_PROVIDER_OPS, &params,

test/pools/jemalloc_pool.cpp

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,8 @@
88
#include "pool.hpp"
99
#include "poolFixtures.hpp"
1010

11-
static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS = {
12-
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
13-
/* .visibility = */ UMF_VISIBILITY_PRIVATE,
14-
15-
// NUMA config
16-
/* .nodemask = */ NULL,
17-
/* .maxnode = */ 0,
18-
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
19-
/* .numa_flags = */ 0,
20-
21-
// others
22-
/* .traces = */ 0,
23-
};
24-
11+
auto defaultParams = umfOsMemoryProviderParamsDefault();
2512
INSTANTIATE_TEST_SUITE_P(jemallocPoolTest, umfPoolTest,
2613
::testing::Values(poolCreateExtParams{
2714
&UMF_JEMALLOC_POOL_OPS, nullptr,
28-
&UMF_OS_MEMORY_PROVIDER_OPS,
29-
&UMF_OS_MEMORY_PROVIDER_PARAMS}));
15+
&UMF_OS_MEMORY_PROVIDER_OPS, &defaultParams}));

test/pools/scalable_pool.cpp

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,8 @@
88
#include "pool.hpp"
99
#include "poolFixtures.hpp"
1010

11-
static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS = {
12-
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
13-
/* .visibility = */ UMF_VISIBILITY_PRIVATE,
14-
15-
// NUMA config
16-
/* .nodemask = */ NULL,
17-
/* .maxnode = */ 0,
18-
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
19-
/* .numa_flags = */ 0,
20-
21-
// others
22-
/* .traces = */ 0,
23-
};
24-
11+
auto defaultParams = umfOsMemoryProviderParamsDefault();
2512
INSTANTIATE_TEST_SUITE_P(scalablePoolTest, umfPoolTest,
2613
::testing::Values(poolCreateExtParams{
2714
&UMF_SCALABLE_POOL_OPS, nullptr,
28-
&UMF_OS_MEMORY_PROVIDER_OPS,
29-
&UMF_OS_MEMORY_PROVIDER_PARAMS}));
15+
&UMF_OS_MEMORY_PROVIDER_OPS, &defaultParams}));

test/provider_os_memory.cpp

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,6 @@ typedef enum purge_t {
2222
PURGE_FORCE = 2,
2323
} purge_t;
2424

25-
static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS_TEST = {
26-
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
27-
/* .visibility = */ UMF_VISIBILITY_PRIVATE,
28-
29-
// NUMA config
30-
/* .nodemask = */ NULL,
31-
/* .maxnode = */ 0,
32-
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
33-
/* .numa_flags = */ 0,
34-
35-
// others
36-
/* .traces = */ 1,
37-
};
38-
3925
static const char *Native_error_str[] = {
4026
"success", // UMF_OS_RESULT_SUCCESS
4127
"memory allocation failed", // UMF_OS_RESULT_ERROR_ALLOC_FAILED
@@ -144,7 +130,7 @@ TEST_F(test, create_WRONG_NUMA_MODE) {
144130
umf_result_t umf_result;
145131
umf_memory_provider_handle_t os_memory_provider = nullptr;
146132
umf_os_memory_provider_params_t os_memory_provider_params =
147-
UMF_OS_MEMORY_PROVIDER_PARAMS_TEST;
133+
umfOsMemoryProviderParamsDefault();
148134

149135
// NUMA binding mode not supported for UMF_VISIBILITY_SHARED
150136
os_memory_provider_params.visibility = UMF_VISIBILITY_SHARED;
@@ -161,7 +147,7 @@ TEST_F(test, create_WRONG_NUMA_FLAGS) {
161147
umf_result_t umf_result;
162148
umf_memory_provider_handle_t os_memory_provider = nullptr;
163149
umf_os_memory_provider_params_t os_memory_provider_params =
164-
UMF_OS_MEMORY_PROVIDER_PARAMS_TEST;
150+
umfOsMemoryProviderParamsDefault();
165151

166152
// wrong NUMA flags
167153
os_memory_provider_params.numa_flags = (unsigned int)-1;
@@ -175,10 +161,10 @@ TEST_F(test, create_WRONG_NUMA_FLAGS) {
175161

176162
// positive tests using test_alloc_free_success
177163

164+
auto defaultParams = umfOsMemoryProviderParamsDefault();
178165
INSTANTIATE_TEST_SUITE_P(osProviderTest, umfProviderTest,
179166
::testing::Values(providerCreateExtParams{
180-
&UMF_OS_MEMORY_PROVIDER_OPS,
181-
&UMF_OS_MEMORY_PROVIDER_PARAMS_TEST}));
167+
&UMF_OS_MEMORY_PROVIDER_OPS, &defaultParams}));
182168

183169
TEST_P(umfProviderTest, create_destroy) {}
184170

test/provider_os_memory_config.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,10 @@ static constexpr size_t allocSize = 4096;
1919

2020
struct providerConfigTest : testing::Test {
2121
umf_memory_provider_handle_t provider = nullptr;
22-
umf_os_memory_provider_params_t params = {
23-
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
24-
/* .visibility = */ UMF_VISIBILITY_PRIVATE,
25-
26-
// NUMA config
27-
/* .nodemask = */ NULL,
28-
/* .maxnode = */ 0,
29-
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
30-
/* .numa_flags = */ 0,
31-
32-
// others
33-
/* .traces = */ 1,
34-
};
3522
const size_t size = 128;
3623
void *ptr = nullptr;
3724
std::string dest = "destination";
25+
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
3826

3927
void SetUp() override {
4028
int ret = numa_available();
@@ -81,6 +69,7 @@ struct providerConfigTest : testing::Test {
8169
TEST_F(providerConfigTest, protection_flag_none) {
8270
// pages may not be accessed - PROT_NONE
8371
params.protection = UMF_PROTECTION_NONE;
72+
8473
create_provider(&params);
8574
allocate_memory();
8675

@@ -94,6 +83,7 @@ TEST_F(providerConfigTest, protection_flag_none) {
9483
TEST_F(providerConfigTest, protection_flag_read) {
9584
// pages may be read - PROT_READ
9685
params.protection = UMF_PROTECTION_READ;
86+
9787
create_provider(&params);
9888
allocate_memory();
9989

@@ -107,6 +97,7 @@ TEST_F(providerConfigTest, protection_flag_read) {
10797
TEST_F(providerConfigTest, protection_flag_write) {
10898
// pages may be written to - PROT_WRITE
10999
params.protection = UMF_PROTECTION_WRITE;
100+
110101
create_provider(&params);
111102
allocate_memory();
112103

@@ -117,6 +108,7 @@ TEST_F(providerConfigTest, protection_flag_write) {
117108
TEST_F(providerConfigTest, protection_flag_read_write) {
118109
// pages may be read and written to - PROT_READ | PROT_WRITE
119110
params.protection = UMF_PROTECTION_READ | UMF_PROTECTION_WRITE;
111+
120112
create_provider(&params);
121113
allocate_memory();
122114

@@ -131,6 +123,7 @@ struct providerConfigTestNumaMode
131123
: providerConfigTest,
132124
testing::WithParamInterface<umf_numa_mode_t> {
133125
struct bitmask *allowed_nodes = nullptr;
126+
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
134127

135128
void SetUp() override {
136129
providerConfigTest::SetUp();
@@ -203,6 +196,7 @@ struct providerConfigTestVisibility
203196
std::string primary_str = "primary";
204197
std::string new_str = "new";
205198
std::string expected_str;
199+
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
206200

207201
void SetUp() override {
208202
providerConfigTest::SetUp();

0 commit comments

Comments
 (0)