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