@@ -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