19
19
#include "utils_common.h"
20
20
#include "utils_log.h"
21
21
22
+ umf_result_t umfPoolGetIPCHandleSize (umf_memory_pool_handle_t hPool ,
23
+ size_t * size ) {
24
+ umf_result_t ret = UMF_RESULT_SUCCESS ;
25
+ if (hPool == NULL ) {
26
+ LOG_ERR ("pool handle is NULL." );
27
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
28
+ }
29
+
30
+ if (size == NULL ) {
31
+ LOG_ERR ("size is NULL." );
32
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
33
+ }
34
+
35
+ // We cannot use umfPoolGetMemoryProvider function because it returns
36
+ // upstream provider but we need tracking one
37
+ umf_memory_provider_handle_t hProvider = hPool -> provider ;
38
+ assert (hProvider );
39
+
40
+ size_t providerIPCHandleSize ;
41
+ ret = umfMemoryProviderGetIPCHandleSize (hProvider , & providerIPCHandleSize );
42
+ if (ret != UMF_RESULT_SUCCESS ) {
43
+ LOG_ERR ("cannot get IPC handle size." );
44
+ return ret ;
45
+ }
46
+
47
+ * size = sizeof (umf_ipc_data_t ) + providerIPCHandleSize ;
48
+
49
+ return ret ;
50
+ }
51
+
22
52
umf_result_t umfGetIPCHandle (const void * ptr , umf_ipc_handle_t * umfIPCHandle ,
23
53
size_t * size ) {
24
54
size_t ipcHandleSize = 0 ;
@@ -29,25 +59,23 @@ umf_result_t umfGetIPCHandle(const void *ptr, umf_ipc_handle_t *umfIPCHandle,
29
59
return ret ;
30
60
}
31
61
32
- // We cannot use umfPoolGetMemoryProvider function because it returns
33
- // upstream provider but we need tracking one
34
- umf_memory_provider_handle_t provider = allocInfo .pool -> provider ;
35
- assert (provider );
36
-
37
- size_t providerIPCHandleSize ;
38
- ret = umfMemoryProviderGetIPCHandleSize (provider , & providerIPCHandleSize );
62
+ ret = umfPoolGetIPCHandleSize (allocInfo .pool , & ipcHandleSize );
39
63
if (ret != UMF_RESULT_SUCCESS ) {
40
64
LOG_ERR ("cannot get IPC handle size." );
41
65
return ret ;
42
66
}
43
67
44
- ipcHandleSize = sizeof (umf_ipc_data_t ) + providerIPCHandleSize ;
45
68
umf_ipc_data_t * ipcData = umf_ba_global_alloc (ipcHandleSize );
46
69
if (!ipcData ) {
47
70
LOG_ERR ("failed to allocate ipcData" );
48
71
return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
49
72
}
50
73
74
+ // We cannot use umfPoolGetMemoryProvider function because it returns
75
+ // upstream provider but we need tracking one
76
+ umf_memory_provider_handle_t provider = allocInfo .pool -> provider ;
77
+ assert (provider );
78
+
51
79
ret = umfMemoryProviderGetIPCHandle (provider , allocInfo .base ,
52
80
allocInfo .baseSize ,
53
81
(void * )ipcData -> providerIpcData );
0 commit comments