Skip to content

Commit 4fd3031

Browse files
committed
Implement IPC API of the Coarse provider
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 64456b7 commit 4fd3031

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
@@ -1671,6 +1671,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
16711671
return umf_result;
16721672
}
16731673

1674+
static umf_result_t coarse_memory_provider_get_ipc_handle_size(void *provider,
1675+
size_t *size) {
1676+
assert(provider);
1677+
assert(size);
1678+
1679+
coarse_memory_provider_t *coarse_provider =
1680+
(struct coarse_memory_provider_t *)provider;
1681+
if (!coarse_provider->upstream_memory_provider) {
1682+
LOG_ERR("missing upstream memory provider");
1683+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1684+
}
1685+
1686+
return umfMemoryProviderGetIPCHandleSize(
1687+
coarse_provider->upstream_memory_provider, size);
1688+
}
1689+
1690+
static umf_result_t
1691+
coarse_memory_provider_get_ipc_handle(void *provider, const void *ptr,
1692+
size_t size, void *providerIpcData) {
1693+
assert(provider);
1694+
assert(ptr);
1695+
assert(providerIpcData);
1696+
1697+
coarse_memory_provider_t *coarse_provider =
1698+
(struct coarse_memory_provider_t *)provider;
1699+
if (!coarse_provider->upstream_memory_provider) {
1700+
LOG_ERR("missing upstream memory provider");
1701+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1702+
}
1703+
1704+
return umfMemoryProviderGetIPCHandle(
1705+
coarse_provider->upstream_memory_provider, ptr, size, providerIpcData);
1706+
}
1707+
1708+
static umf_result_t
1709+
coarse_memory_provider_put_ipc_handle(void *provider, void *providerIpcData) {
1710+
assert(provider);
1711+
assert(providerIpcData);
1712+
1713+
coarse_memory_provider_t *coarse_provider =
1714+
(struct coarse_memory_provider_t *)provider;
1715+
if (!coarse_provider->upstream_memory_provider) {
1716+
LOG_ERR("missing upstream memory provider");
1717+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1718+
}
1719+
1720+
return umfMemoryProviderPutIPCHandle(
1721+
coarse_provider->upstream_memory_provider, providerIpcData);
1722+
}
1723+
1724+
static umf_result_t
1725+
coarse_memory_provider_open_ipc_handle(void *provider, void *providerIpcData,
1726+
void **ptr) {
1727+
assert(provider);
1728+
assert(providerIpcData);
1729+
assert(ptr);
1730+
1731+
coarse_memory_provider_t *coarse_provider =
1732+
(struct coarse_memory_provider_t *)provider;
1733+
if (!coarse_provider->upstream_memory_provider) {
1734+
LOG_ERR("missing upstream memory provider");
1735+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1736+
}
1737+
1738+
return umfMemoryProviderOpenIPCHandle(
1739+
coarse_provider->upstream_memory_provider, providerIpcData, ptr);
1740+
}
1741+
1742+
static umf_result_t coarse_memory_provider_close_ipc_handle(void *provider,
1743+
void *ptr,
1744+
size_t size) {
1745+
assert(provider);
1746+
assert(ptr);
1747+
1748+
coarse_memory_provider_t *coarse_provider =
1749+
(struct coarse_memory_provider_t *)provider;
1750+
if (!coarse_provider->upstream_memory_provider) {
1751+
LOG_ERR("missing upstream memory provider");
1752+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1753+
}
1754+
1755+
return umfMemoryProviderCloseIPCHandle(
1756+
coarse_provider->upstream_memory_provider, ptr, size);
1757+
}
1758+
16741759
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
16751760
.version = UMF_VERSION_CURRENT,
16761761
.initialize = coarse_memory_provider_initialize,
@@ -1686,14 +1771,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
16861771
.ext.purge_force = coarse_memory_provider_purge_force,
16871772
.ext.allocation_merge = coarse_memory_provider_allocation_merge,
16881773
.ext.allocation_split = coarse_memory_provider_allocation_split,
1689-
// TODO
1690-
/*
16911774
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
16921775
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
16931776
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
16941777
.ipc.open_ipc_handle = coarse_memory_provider_open_ipc_handle,
16951778
.ipc.close_ipc_handle = coarse_memory_provider_close_ipc_handle,
1696-
*/
16971779
};
16981780

16991781
umf_memory_provider_ops_t *umfCoarseMemoryProviderOps(void) {

0 commit comments

Comments
 (0)