Skip to content

Commit b74fd8a

Browse files
committed
use Pool instead of Provider IPC API in tests
1 parent 0420d07 commit b74fd8a

File tree

2 files changed

+33
-40
lines changed

2 files changed

+33
-40
lines changed

test/common/ipc_common.c

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
131131
return -1;
132132
}
133133

134+
umf_memory_pool_handle_t pool;
135+
umf_result = umfPoolCreate(umfScalablePoolOps(), provider, NULL, 0, &pool);
136+
134137
producer_socket = consumer_connect(port);
135138
if (producer_socket < 0) {
136139
goto err_umfMemoryProviderDestroy;
@@ -183,7 +186,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
183186
len);
184187

185188
void *SHM_ptr;
186-
umf_result = umfMemoryProviderOpenIPCHandle(provider, IPC_handle, &SHM_ptr);
189+
umf_result = umfOpenIPCHandle(pool, IPC_handle, &SHM_ptr);
187190
if (umf_result == UMF_RESULT_ERROR_NOT_SUPPORTED) {
188191
fprintf(stderr,
189192
"[consumer] SKIP: opening the IPC handle is not supported\n");
@@ -240,8 +243,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
240243

241244
err_closeIPCHandle:
242245
// we do not know the exact size of the remote shared memory
243-
umf_result = umfMemoryProviderCloseIPCHandle(provider, SHM_ptr,
244-
sizeof(unsigned long long));
246+
umf_result = umfCloseIPCHandle(SHM_ptr);
245247
if (umf_result != UMF_RESULT_SUCCESS) {
246248
fprintf(stderr, "[consumer] ERROR: closing the IPC handle failed\n");
247249
}
@@ -254,6 +256,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
254256

255257
err_umfMemoryProviderDestroy:
256258
umfMemoryProviderDestroy(provider);
259+
umfPoolDestroy(pool);
257260

258261
if (ret == 0) {
259262
fprintf(stderr, "[consumer] Shutting down (status OK) ...\n");
@@ -321,6 +324,9 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
321324
return -1;
322325
}
323326

327+
umf_memory_pool_handle_t pool;
328+
umf_result = umfPoolCreate(umfScalablePoolOps(), provider, NULL, 0, &pool);
329+
324330
size_t page_size;
325331
umf_result = umfMemoryProviderGetMinPageSize(provider, NULL, &page_size);
326332
if (umf_result != UMF_RESULT_SUCCESS) {
@@ -335,45 +341,38 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
335341
size_t ptr2_size = 2 * page_size;
336342
size_t size_IPC_shared_memory = 3 * page_size;
337343

338-
umf_result = umfMemoryProviderAlloc(provider, ptr1_size, 0, &ptr1);
339-
if (umf_result != UMF_RESULT_SUCCESS) {
344+
ptr1 = umfPoolMalloc(pool, ptr1_size);
345+
if (ptr1 == NULL) {
340346
fprintf(stderr, "[producer] ERROR: allocating 1 page failed\n");
341347
goto err_umfMemoryProviderDestroy;
342348
}
343349

344-
umf_result = umfMemoryProviderAlloc(provider, ptr2_size, 0, &ptr2);
345-
if (umf_result != UMF_RESULT_SUCCESS) {
350+
ptr2 = umfPoolMalloc(pool, ptr2_size);
351+
if (ptr2 == NULL) {
346352
fprintf(stderr, "[producer] ERROR: allocating 2 pages failed\n");
347353
goto err_free_ptr1;
348354
}
349355

350-
umf_result = umfMemoryProviderAlloc(provider, size_IPC_shared_memory, 0,
351-
&IPC_shared_memory);
352-
if (umf_result != UMF_RESULT_SUCCESS) {
356+
IPC_shared_memory = umfPoolMalloc(pool, size_IPC_shared_memory);
357+
if (IPC_shared_memory == NULL) {
353358
fprintf(stderr, "[producer] ERROR: allocating 3 pages failed\n");
354359
goto err_free_ptr2;
355360
}
356361

357362
// get size of the IPC handle
358363
size_t IPC_handle_size;
359-
umf_result = umfMemoryProviderGetIPCHandleSize(provider, &IPC_handle_size);
360-
if (umf_result != UMF_RESULT_SUCCESS) {
361-
fprintf(stderr,
362-
"[producer] ERROR: getting size of the IPC handle failed\n");
363-
goto err_free_IPC_shared_memory;
364-
}
364+
umf_ipc_handle_t IPC_handle = NULL;
365365

366-
// allocate data for IPC provider
367-
void *IPC_handle = malloc(IPC_handle_size);
368-
if (IPC_handle == NULL) {
366+
// get the IPC handle from the OS memory provider
367+
umf_result =
368+
umfGetIPCHandle(IPC_shared_memory, &IPC_handle, &IPC_handle_size);
369+
if (umf_result != UMF_RESULT_SUCCESS) {
369370
fprintf(stderr,
370-
"[producer] ERROR: allocating memory for IPC handle failed\n");
371+
"[producer] ERROR: getting the IPC handle from the OS memory "
372+
"provider failed\n");
371373
goto err_free_IPC_shared_memory;
372374
}
373375

374-
// zero the IPC handle and the shared memory
375-
memset(IPC_handle, 0, IPC_handle_size);
376-
377376
// save a random number (&provider) in the shared memory
378377
unsigned long long SHM_number_1 = (unsigned long long)&provider;
379378
memcopy_callback(IPC_shared_memory, &SHM_number_1, sizeof(SHM_number_1),
@@ -382,16 +381,6 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
382381
fprintf(stderr, "[producer] My shared memory contains a number: %llu\n",
383382
SHM_number_1);
384383

385-
// get the IPC handle from the OS memory provider
386-
umf_result = umfMemoryProviderGetIPCHandle(
387-
provider, IPC_shared_memory, size_IPC_shared_memory, IPC_handle);
388-
if (umf_result != UMF_RESULT_SUCCESS) {
389-
fprintf(stderr,
390-
"[producer] ERROR: getting the IPC handle from the OS memory "
391-
"provider failed\n");
392-
goto err_free_IPC_handle;
393-
}
394-
395384
fprintf(stderr, "[producer] Got the IPC handle\n");
396385

397386
producer_socket = producer_connect(port);
@@ -494,23 +483,24 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
494483
close(producer_socket);
495484

496485
err_PutIPCHandle:
497-
umf_result = umfMemoryProviderPutIPCHandle(provider, IPC_handle);
486+
umf_result = umfPutIPCHandle(IPC_handle);
498487
if (umf_result != UMF_RESULT_SUCCESS) {
499488
fprintf(stderr, "[producer] ERROR: putting the IPC handle failed\n");
500489
}
501490

502491
fprintf(stderr, "[producer] Put the IPC handle\n");
503492

504-
err_free_IPC_handle:
505-
free(IPC_handle);
506493
err_free_IPC_shared_memory:
507-
(void)umfMemoryProviderFree(provider, IPC_shared_memory,
508-
size_IPC_shared_memory);
494+
(void)umfFree(IPC_shared_memory);
495+
509496
err_free_ptr2:
510-
(void)umfMemoryProviderFree(provider, ptr2, ptr2_size);
497+
(void)umfFree(ptr2);
498+
511499
err_free_ptr1:
512-
(void)umfMemoryProviderFree(provider, ptr1, ptr1_size);
500+
(void)umfFree(ptr1);
501+
513502
err_umfMemoryProviderDestroy:
503+
umfPoolDestroy(pool);
514504
umfMemoryProviderDestroy(provider);
515505

516506
if (ret == 0) {

test/common/ipc_common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
#ifndef UMF_TEST_IPC_COMMON_H
99
#define UMF_TEST_IPC_COMMON_H
1010

11+
#include <umf/ipc.h>
12+
#include <umf/memory_pool.h>
1113
#include <umf/memory_provider.h>
14+
#include <umf/pools/pool_scalable.h>
1215

1316
// pointer to the function that returns void and accept two int values
1417
typedef void (*memcopy_callback_t)(void *dst, const void *src, size_t size,

0 commit comments

Comments
 (0)