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