@@ -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+
15311616umf_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
15561638umf_memory_provider_ops_t * umfCoarseMemoryProviderOps (void ) {
0 commit comments