Skip to content

Commit 0a806a3

Browse files
committed
Implement IPC API of the Coarse provider
Fixes: #900 Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 82190ec commit 0a806a3

File tree

1 file changed

+85
-3
lines changed

1 file changed

+85
-3
lines changed

src/provider/provider_coarse.c

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,6 +1528,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
15281528
return umf_result;
15291529
}
15301530

1531+
static umf_result_t coarse_memory_provider_get_ipc_handle_size(void *provider,
1532+
size_t *size) {
1533+
assert(provider);
1534+
assert(size);
1535+
1536+
coarse_memory_provider_t *coarse_provider =
1537+
(struct coarse_memory_provider_t *)provider;
1538+
if (!coarse_provider->upstream_memory_provider) {
1539+
LOG_ERR("missing upstream memory provider");
1540+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1541+
}
1542+
1543+
return umfMemoryProviderGetIPCHandleSize(
1544+
coarse_provider->upstream_memory_provider, size);
1545+
}
1546+
1547+
static umf_result_t
1548+
coarse_memory_provider_get_ipc_handle(void *provider, const void *ptr,
1549+
size_t size, void *providerIpcData) {
1550+
assert(provider);
1551+
assert(ptr);
1552+
assert(providerIpcData);
1553+
1554+
coarse_memory_provider_t *coarse_provider =
1555+
(struct coarse_memory_provider_t *)provider;
1556+
if (!coarse_provider->upstream_memory_provider) {
1557+
LOG_ERR("missing upstream memory provider");
1558+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1559+
}
1560+
1561+
return umfMemoryProviderGetIPCHandle(
1562+
coarse_provider->upstream_memory_provider, ptr, size, providerIpcData);
1563+
}
1564+
1565+
static umf_result_t
1566+
coarse_memory_provider_put_ipc_handle(void *provider, void *providerIpcData) {
1567+
assert(provider);
1568+
assert(providerIpcData);
1569+
1570+
coarse_memory_provider_t *coarse_provider =
1571+
(struct coarse_memory_provider_t *)provider;
1572+
if (!coarse_provider->upstream_memory_provider) {
1573+
LOG_ERR("missing upstream memory provider");
1574+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1575+
}
1576+
1577+
return umfMemoryProviderPutIPCHandle(
1578+
coarse_provider->upstream_memory_provider, providerIpcData);
1579+
}
1580+
1581+
static umf_result_t
1582+
coarse_memory_provider_open_ipc_handle(void *provider, void *providerIpcData,
1583+
void **ptr) {
1584+
assert(provider);
1585+
assert(providerIpcData);
1586+
assert(ptr);
1587+
1588+
coarse_memory_provider_t *coarse_provider =
1589+
(struct coarse_memory_provider_t *)provider;
1590+
if (!coarse_provider->upstream_memory_provider) {
1591+
LOG_ERR("missing upstream memory provider");
1592+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1593+
}
1594+
1595+
return umfMemoryProviderOpenIPCHandle(
1596+
coarse_provider->upstream_memory_provider, providerIpcData, ptr);
1597+
}
1598+
1599+
static umf_result_t coarse_memory_provider_close_ipc_handle(void *provider,
1600+
void *ptr,
1601+
size_t size) {
1602+
assert(provider);
1603+
assert(ptr);
1604+
1605+
coarse_memory_provider_t *coarse_provider =
1606+
(struct coarse_memory_provider_t *)provider;
1607+
if (!coarse_provider->upstream_memory_provider) {
1608+
LOG_ERR("missing upstream memory provider");
1609+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1610+
}
1611+
1612+
return umfMemoryProviderCloseIPCHandle(
1613+
coarse_provider->upstream_memory_provider, ptr, size);
1614+
}
1615+
15311616
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15321617
.version = UMF_VERSION_CURRENT,
15331618
.initialize = coarse_memory_provider_initialize,
@@ -1543,14 +1628,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15431628
.ext.purge_force = coarse_memory_provider_purge_force,
15441629
.ext.allocation_merge = coarse_memory_provider_allocation_merge,
15451630
.ext.allocation_split = coarse_memory_provider_allocation_split,
1546-
// TODO
1547-
/*
15481631
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
15491632
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
15501633
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
15511634
.ipc.open_ipc_handle = coarse_memory_provider_open_ipc_handle,
15521635
.ipc.close_ipc_handle = coarse_memory_provider_close_ipc_handle,
1553-
*/
15541636
};
15551637

15561638
umf_memory_provider_ops_t *umfCoarseMemoryProviderOps(void) {

0 commit comments

Comments
 (0)