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