Skip to content

Commit de334f0

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

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
@@ -1504,6 +1504,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
15041504
return umf_result;
15051505
}
15061506

1507+
static umf_result_t coarse_memory_provider_get_ipc_handle_size(void *provider,
1508+
size_t *size) {
1509+
assert(provider);
1510+
assert(size);
1511+
1512+
coarse_memory_provider_t *coarse_provider =
1513+
(struct coarse_memory_provider_t *)provider;
1514+
if (!coarse_provider->upstream_memory_provider) {
1515+
LOG_ERR("missing upstream memory provider");
1516+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1517+
}
1518+
1519+
return umfMemoryProviderGetIPCHandleSize(
1520+
coarse_provider->upstream_memory_provider, size);
1521+
}
1522+
1523+
static umf_result_t
1524+
coarse_memory_provider_get_ipc_handle(void *provider, const void *ptr,
1525+
size_t size, void *providerIpcData) {
1526+
assert(provider);
1527+
assert(ptr);
1528+
assert(providerIpcData);
1529+
1530+
coarse_memory_provider_t *coarse_provider =
1531+
(struct coarse_memory_provider_t *)provider;
1532+
if (!coarse_provider->upstream_memory_provider) {
1533+
LOG_ERR("missing upstream memory provider");
1534+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1535+
}
1536+
1537+
return umfMemoryProviderGetIPCHandle(
1538+
coarse_provider->upstream_memory_provider, ptr, size, providerIpcData);
1539+
}
1540+
1541+
static umf_result_t
1542+
coarse_memory_provider_put_ipc_handle(void *provider, void *providerIpcData) {
1543+
assert(provider);
1544+
assert(providerIpcData);
1545+
1546+
coarse_memory_provider_t *coarse_provider =
1547+
(struct coarse_memory_provider_t *)provider;
1548+
if (!coarse_provider->upstream_memory_provider) {
1549+
LOG_ERR("missing upstream memory provider");
1550+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1551+
}
1552+
1553+
return umfMemoryProviderPutIPCHandle(
1554+
coarse_provider->upstream_memory_provider, providerIpcData);
1555+
}
1556+
1557+
static umf_result_t
1558+
coarse_memory_provider_open_ipc_handle(void *provider, void *providerIpcData,
1559+
void **ptr) {
1560+
assert(provider);
1561+
assert(providerIpcData);
1562+
assert(ptr);
1563+
1564+
coarse_memory_provider_t *coarse_provider =
1565+
(struct coarse_memory_provider_t *)provider;
1566+
if (!coarse_provider->upstream_memory_provider) {
1567+
LOG_ERR("missing upstream memory provider");
1568+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1569+
}
1570+
1571+
return umfMemoryProviderOpenIPCHandle(
1572+
coarse_provider->upstream_memory_provider, providerIpcData, ptr);
1573+
}
1574+
1575+
static umf_result_t coarse_memory_provider_close_ipc_handle(void *provider,
1576+
void *ptr,
1577+
size_t size) {
1578+
assert(provider);
1579+
assert(ptr);
1580+
1581+
coarse_memory_provider_t *coarse_provider =
1582+
(struct coarse_memory_provider_t *)provider;
1583+
if (!coarse_provider->upstream_memory_provider) {
1584+
LOG_ERR("missing upstream memory provider");
1585+
return UMF_RESULT_ERROR_NOT_SUPPORTED;
1586+
}
1587+
1588+
return umfMemoryProviderCloseIPCHandle(
1589+
coarse_provider->upstream_memory_provider, ptr, size);
1590+
}
1591+
15071592
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15081593
.version = UMF_VERSION_CURRENT,
15091594
.initialize = coarse_memory_provider_initialize,
@@ -1519,14 +1604,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
15191604
.ext.purge_force = coarse_memory_provider_purge_force,
15201605
.ext.allocation_merge = coarse_memory_provider_allocation_merge,
15211606
.ext.allocation_split = coarse_memory_provider_allocation_split,
1522-
// TODO
1523-
/*
15241607
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
15251608
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
15261609
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
15271610
.ipc.open_ipc_handle = coarse_memory_provider_open_ipc_handle,
15281611
.ipc.close_ipc_handle = coarse_memory_provider_close_ipc_handle,
1529-
*/
15301612
};
15311613

15321614
umf_memory_provider_ops_t *umfCoarseMemoryProviderOps(void) {

0 commit comments

Comments
 (0)