Skip to content

Commit dc4ff8b

Browse files
Merge pull request #925 from vinser52/svinogra_os_params
Update OS provider config API
2 parents 28a2faf + 6c2ebb1 commit dc4ff8b

22 files changed

+1145
-296
lines changed

benchmark/multithread.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,12 @@ static void mt_alloc_free(poolCreateExtParams params,
9191
}
9292

9393
int main() {
94-
auto osParams = umfOsMemoryProviderParamsDefault();
94+
umf_os_memory_provider_params_handle_t osParams = nullptr;
95+
umf_result_t res = umfOsMemoryProviderParamsCreate(&osParams);
96+
if (res != UMF_RESULT_SUCCESS) {
97+
std::cerr << "os memory provider params create failed" << std::endl;
98+
return -1;
99+
}
95100

96101
#if defined(UMF_POOL_SCALABLE_ENABLED)
97102

@@ -102,7 +107,7 @@ int main() {
102107

103108
std::cout << "scalable_pool mt_alloc_free: ";
104109
mt_alloc_free(poolCreateExtParams{umfScalablePoolOps(), nullptr,
105-
umfOsMemoryProviderOps(), &osParams},
110+
umfOsMemoryProviderOps(), osParams},
106111
params);
107112
#else
108113
std::cout << "skipping scalable_pool mt_alloc_free" << std::endl;
@@ -111,7 +116,7 @@ int main() {
111116
#if defined(UMF_BUILD_LIBUMF_POOL_JEMALLOC)
112117
std::cout << "jemalloc_pool mt_alloc_free: ";
113118
mt_alloc_free(poolCreateExtParams{umfJemallocPoolOps(), nullptr,
114-
umfOsMemoryProviderOps(), &osParams});
119+
umfOsMemoryProviderOps(), osParams});
115120
#else
116121
std::cout << "skipping jemalloc_pool mt_alloc_free" << std::endl;
117122
#endif
@@ -126,7 +131,7 @@ int main() {
126131

127132
std::cout << "disjoint_pool mt_alloc_free: ";
128133
mt_alloc_free(poolCreateExtParams{umfDisjointPoolOps(), hDisjointParams,
129-
umfOsMemoryProviderOps(), &osParams});
134+
umfOsMemoryProviderOps(), osParams});
130135
#else
131136
std::cout << "skipping disjoint_pool mt_alloc_free" << std::endl;
132137
#endif

benchmark/ubench.c

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -124,22 +124,6 @@ UBENCH_EX(simple, glibc_malloc) {
124124

125125
////////////////// OS MEMORY PROVIDER
126126

127-
static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS = {
128-
/* .protection = */ UMF_PROTECTION_READ | UMF_PROTECTION_WRITE,
129-
/* .visibility = */ UMF_MEM_MAP_PRIVATE,
130-
/* .shm_name = */ NULL,
131-
132-
// NUMA config
133-
/* .numa_list = */ NULL,
134-
/* .numa_list_len = */ 0,
135-
136-
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
137-
/* .part_size = */ 0,
138-
139-
/* .partitions = */ NULL,
140-
/* .partitions_len = */ 0,
141-
};
142-
143127
static void *w_umfMemoryProviderAlloc(void *provider, size_t size,
144128
size_t alignment) {
145129
void *ptr = NULL;
@@ -171,9 +155,17 @@ UBENCH_EX(simple, os_memory_provider) {
171155

172156
umf_result_t umf_result;
173157
umf_memory_provider_handle_t os_memory_provider = NULL;
174-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
175-
&UMF_OS_MEMORY_PROVIDER_PARAMS,
158+
umf_os_memory_provider_params_handle_t os_params = NULL;
159+
160+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
161+
if (umf_result != UMF_RESULT_SUCCESS) {
162+
fprintf(stderr, "error: umfOsMemoryProviderParamsCreate() failed\n");
163+
exit(-1);
164+
}
165+
166+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
176167
&os_memory_provider);
168+
umfOsMemoryProviderParamsDestroy(os_params);
177169
if (umf_result != UMF_RESULT_SUCCESS) {
178170
fprintf(stderr, "error: umfMemoryProviderCreate() failed\n");
179171
exit(-1);
@@ -215,9 +207,17 @@ UBENCH_EX(simple, proxy_pool_with_os_memory_provider) {
215207

216208
umf_result_t umf_result;
217209
umf_memory_provider_handle_t os_memory_provider = NULL;
218-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
219-
&UMF_OS_MEMORY_PROVIDER_PARAMS,
210+
umf_os_memory_provider_params_handle_t os_params = NULL;
211+
212+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
213+
if (umf_result != UMF_RESULT_SUCCESS) {
214+
fprintf(stderr, "error: umfOsMemoryProviderParamsCreate() failed\n");
215+
exit(-1);
216+
}
217+
218+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
220219
&os_memory_provider);
220+
umfOsMemoryProviderParamsDestroy(os_params);
221221
if (umf_result != UMF_RESULT_SUCCESS) {
222222
fprintf(stderr, "error: umfMemoryProviderCreate() failed\n");
223223
exit(-1);
@@ -252,9 +252,17 @@ UBENCH_EX(simple, disjoint_pool_with_os_memory_provider) {
252252

253253
umf_result_t umf_result;
254254
umf_memory_provider_handle_t os_memory_provider = NULL;
255-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
256-
&UMF_OS_MEMORY_PROVIDER_PARAMS,
255+
umf_os_memory_provider_params_handle_t os_params = NULL;
256+
257+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
258+
if (umf_result != UMF_RESULT_SUCCESS) {
259+
fprintf(stderr, "error: umfOsMemoryProviderParamsCreate() failed\n");
260+
exit(-1);
261+
}
262+
263+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
257264
&os_memory_provider);
265+
umfOsMemoryProviderParamsDestroy(os_params);
258266
if (umf_result != UMF_RESULT_SUCCESS) {
259267
fprintf(stderr, "error: umfMemoryProviderCreate() failed\n");
260268
exit(-1);
@@ -329,9 +337,17 @@ UBENCH_EX(simple, jemalloc_pool_with_os_memory_provider) {
329337

330338
umf_result_t umf_result;
331339
umf_memory_provider_handle_t os_memory_provider = NULL;
332-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
333-
&UMF_OS_MEMORY_PROVIDER_PARAMS,
340+
umf_os_memory_provider_params_handle_t os_params = NULL;
341+
342+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
343+
if (umf_result != UMF_RESULT_SUCCESS) {
344+
fprintf(stderr, "error: umfOsMemoryProviderParamsCreate() failed\n");
345+
exit(-1);
346+
}
347+
348+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
334349
&os_memory_provider);
350+
umfOsMemoryProviderParamsDestroy(os_params);
335351
if (umf_result != UMF_RESULT_SUCCESS) {
336352
fprintf(stderr, "error: umfMemoryProviderCreate() failed\n");
337353
exit(-1);
@@ -367,9 +383,17 @@ UBENCH_EX(simple, scalable_pool_with_os_memory_provider) {
367383

368384
umf_result_t umf_result;
369385
umf_memory_provider_handle_t os_memory_provider = NULL;
370-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
371-
&UMF_OS_MEMORY_PROVIDER_PARAMS,
386+
umf_os_memory_provider_params_handle_t os_params = NULL;
387+
388+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
389+
if (umf_result != UMF_RESULT_SUCCESS) {
390+
fprintf(stderr, "error: umfOsMemoryProviderParamsCreate() failed\n");
391+
exit(-1);
392+
}
393+
394+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
372395
&os_memory_provider);
396+
umfOsMemoryProviderParamsDestroy(os_params);
373397
if (umf_result != UMF_RESULT_SUCCESS) {
374398
fprintf(stderr, "error: umfMemoryProviderCreate() failed\n");
375399
exit(-1);

examples/basic/basic.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,17 @@ int main(void) {
2323
// in an mmap call like this:
2424
// mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)
2525
umf_memory_provider_ops_t *provider_ops = umfOsMemoryProviderOps();
26-
umf_os_memory_provider_params_t params = umfOsMemoryProviderParamsDefault();
26+
umf_os_memory_provider_params_handle_t params = NULL;
2727
umf_memory_provider_handle_t provider;
2828

29-
res = umfMemoryProviderCreate(provider_ops, &params, &provider);
29+
res = umfOsMemoryProviderParamsCreate(&params);
30+
if (res != UMF_RESULT_SUCCESS) {
31+
printf("Failed to create OS memory provider params!\n");
32+
return -1;
33+
}
34+
35+
res = umfMemoryProviderCreate(provider_ops, params, &provider);
36+
umfOsMemoryProviderParamsDestroy(params);
3037
if (res != UMF_RESULT_SUCCESS) {
3138
printf("Failed to create a memory provider!\n");
3239
return -1;

examples/dram_and_fsdax/dram_and_fsdax.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,16 @@ static umf_memory_pool_handle_t create_dram_pool(void) {
2121
umf_memory_pool_handle_t pool_dram;
2222
umf_result_t umf_result;
2323

24-
umf_os_memory_provider_params_t params_dram =
25-
umfOsMemoryProviderParamsDefault();
24+
umf_os_memory_provider_params_handle_t params_dram = NULL;
25+
umf_result = umfOsMemoryProviderParamsCreate(&params_dram);
26+
if (umf_result != UMF_RESULT_SUCCESS) {
27+
fprintf(stderr, "Failed to create OS memory provider params!\n");
28+
return NULL;
29+
}
2630

27-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), &params_dram,
31+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), params_dram,
2832
&provider_dram);
33+
umfOsMemoryProviderParamsDestroy(params_dram);
2934
if (umf_result != UMF_RESULT_SUCCESS) {
3035
fprintf(stderr, "Creation of the OS memory provider failed");
3136
return NULL;

examples/ipc_ipcapi/ipc_ipcapi_consumer.c

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,33 @@ int main(int argc, char *argv[]) {
9999
int port = atoi(argv[1]);
100100

101101
umf_memory_provider_handle_t OS_memory_provider = NULL;
102-
umf_os_memory_provider_params_t os_params;
102+
umf_os_memory_provider_params_handle_t os_params = NULL;
103103
enum umf_result_t umf_result;
104104

105-
os_params = umfOsMemoryProviderParamsDefault();
106-
os_params.visibility = UMF_MEM_MAP_SHARED;
105+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
106+
if (umf_result != UMF_RESULT_SUCCESS) {
107+
fprintf(
108+
stderr,
109+
"[consumer] ERROR: creating OS memory provider params failed\n");
110+
return -1;
111+
}
112+
umf_result =
113+
umfOsMemoryProviderParamsSetVisibility(os_params, UMF_MEM_MAP_SHARED);
114+
if (umf_result != UMF_RESULT_SUCCESS) {
115+
fprintf(stderr, "[consumer] ERROR: setting visibility mode failed\n");
116+
goto err_destroy_OS_params;
117+
}
107118
if (argc >= 3) {
108-
os_params.shm_name = argv[2];
119+
umf_result = umfOsMemoryProviderParamsSetShmName(os_params, argv[2]);
120+
if (umf_result != UMF_RESULT_SUCCESS) {
121+
fprintf(stderr,
122+
"[consumer] ERROR: setting shared memory name failed\n");
123+
goto err_destroy_OS_params;
124+
}
109125
}
110126

111127
// create OS memory provider
112-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), &os_params,
128+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
113129
&OS_memory_provider);
114130
if (umf_result != UMF_RESULT_SUCCESS) {
115131
fprintf(stderr,
@@ -267,6 +283,9 @@ int main(int argc, char *argv[]) {
267283
err_destroy_OS_memory_provider:
268284
umfMemoryProviderDestroy(OS_memory_provider);
269285

286+
err_destroy_OS_params:
287+
umfOsMemoryProviderParamsDestroy(os_params);
288+
270289
if (ret == 0) {
271290
fprintf(stderr, "[consumer] Shutting down (status OK) ...\n");
272291
} else if (ret == 1) {

examples/ipc_ipcapi/ipc_ipcapi_producer.c

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,33 @@ int main(int argc, char *argv[]) {
7070
int port = atoi(argv[1]);
7171

7272
umf_memory_provider_handle_t OS_memory_provider = NULL;
73-
umf_os_memory_provider_params_t os_params;
73+
umf_os_memory_provider_params_handle_t os_params = NULL;
7474
enum umf_result_t umf_result;
7575

76-
os_params = umfOsMemoryProviderParamsDefault();
77-
os_params.visibility = UMF_MEM_MAP_SHARED;
76+
umf_result = umfOsMemoryProviderParamsCreate(&os_params);
77+
if (umf_result != UMF_RESULT_SUCCESS) {
78+
fprintf(
79+
stderr,
80+
"[producer] ERROR: creating OS memory provider params failed\n");
81+
return -1;
82+
}
83+
umf_result =
84+
umfOsMemoryProviderParamsSetVisibility(os_params, UMF_MEM_MAP_SHARED);
85+
if (umf_result != UMF_RESULT_SUCCESS) {
86+
fprintf(stderr, "[producer] ERROR: setting visibility mode failed\n");
87+
goto err_destroy_OS_params;
88+
}
7889
if (argc >= 3) {
79-
os_params.shm_name = argv[2];
90+
umf_result = umfOsMemoryProviderParamsSetShmName(os_params, argv[2]);
91+
if (umf_result != UMF_RESULT_SUCCESS) {
92+
fprintf(stderr,
93+
"[producer] ERROR: setting shared memory name failed\n");
94+
goto err_destroy_OS_params;
95+
}
8096
}
8197

8298
// create OS memory provider
83-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), &os_params,
99+
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(), os_params,
84100
&OS_memory_provider);
85101
if (umf_result != UMF_RESULT_SUCCESS) {
86102
fprintf(stderr,
@@ -240,6 +256,9 @@ int main(int argc, char *argv[]) {
240256
err_destroy_OS_memory_provider:
241257
umfMemoryProviderDestroy(OS_memory_provider);
242258

259+
err_destroy_OS_params:
260+
umfOsMemoryProviderParamsDestroy(os_params);
261+
243262
if (ret == 0) {
244263
fprintf(stderr, "[producer] Shutting down (status OK) ...\n");
245264
} else if (ret == 1) {

0 commit comments

Comments
 (0)