Skip to content

Commit 40e3160

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

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
@@ -1509,6 +1509,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
15091509
return umf_result;
15101510
}
15111511

1512+
static umf_result_t coarse_memory_provider_get_ipc_handle_size(void *provider,
1513+
size_t *size) {
1514+
assert(provider);
1515+
assert(size);
1516+
1517+
coarse_memory_provider_t *coarse_provider =
1518+
(struct coarse_memory_provider_t *)provider;
1519+
if (!coarse_provider->upstream_memory_provider) {
1520+
LOG_ERR("missing upstream memory provider");
1521+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1522+
}
1523+
1524+
return umfMemoryProviderGetIPCHandleSize(
1525+
coarse_provider->upstream_memory_provider, size);
1526+
}
1527+
1528+
static umf_result_t
1529+
coarse_memory_provider_get_ipc_handle(void *provider, const void *ptr,
1530+
size_t size, void *providerIpcData) {
1531+
assert(provider);
1532+
assert(ptr);
1533+
assert(providerIpcData);
1534+
1535+
coarse_memory_provider_t *coarse_provider =
1536+
(struct coarse_memory_provider_t *)provider;
1537+
if (!coarse_provider->upstream_memory_provider) {
1538+
LOG_ERR("missing upstream memory provider");
1539+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1540+
}
1541+
1542+
return umfMemoryProviderGetIPCHandle(
1543+
coarse_provider->upstream_memory_provider, ptr, size, providerIpcData);
1544+
}
1545+
1546+
static umf_result_t
1547+
coarse_memory_provider_put_ipc_handle(void *provider, void *providerIpcData) {
1548+
assert(provider);
1549+
assert(providerIpcData);
1550+
1551+
coarse_memory_provider_t *coarse_provider =
1552+
(struct coarse_memory_provider_t *)provider;
1553+
if (!coarse_provider->upstream_memory_provider) {
1554+
LOG_ERR("missing upstream memory provider");
1555+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1556+
}
1557+
1558+
return umfMemoryProviderPutIPCHandle(
1559+
coarse_provider->upstream_memory_provider, providerIpcData);
1560+
}
1561+
1562+
static umf_result_t
1563+
coarse_memory_provider_open_ipc_handle(void *provider, void *providerIpcData,
1564+
void **ptr) {
1565+
assert(provider);
1566+
assert(providerIpcData);
1567+
assert(ptr);
1568+
1569+
coarse_memory_provider_t *coarse_provider =
1570+
(struct coarse_memory_provider_t *)provider;
1571+
if (!coarse_provider->upstream_memory_provider) {
1572+
LOG_ERR("missing upstream memory provider");
1573+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1574+
}
1575+
1576+
return umfMemoryProviderOpenIPCHandle(
1577+
coarse_provider->upstream_memory_provider, providerIpcData, ptr);
1578+
}
1579+
1580+
static umf_result_t coarse_memory_provider_close_ipc_handle(void *provider,
1581+
void *ptr,
1582+
size_t size) {
1583+
assert(provider);
1584+
assert(ptr);
1585+
1586+
coarse_memory_provider_t *coarse_provider =
1587+
(struct coarse_memory_provider_t *)provider;
1588+
if (!coarse_provider->upstream_memory_provider) {
1589+
LOG_ERR("missing upstream memory provider");
1590+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1591+
}
1592+
1593+
return umfMemoryProviderCloseIPCHandle(
1594+
coarse_provider->upstream_memory_provider, ptr, size);
1595+
}
1596+
15121597
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15131598
.version = UMF_VERSION_CURRENT,
15141599
.initialize = coarse_memory_provider_initialize,
@@ -1524,14 +1609,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15241609
.ext.purge_force = coarse_memory_provider_purge_force,
15251610
.ext.allocation_merge = coarse_memory_provider_allocation_merge,
15261611
.ext.allocation_split = coarse_memory_provider_allocation_split,
1527-
// TODO
1528-
/*
15291612
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
15301613
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
15311614
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
15321615
.ipc.open_ipc_handle = coarse_memory_provider_open_ipc_handle,
15331616
.ipc.close_ipc_handle = coarse_memory_provider_close_ipc_handle,
1534-
*/
15351617
};
15361618

15371619
umf_memory_provider_ops_t *umfCoarseMemoryProviderOps(void) {

0 commit comments

Comments
 (0)