@@ -1528,6 +1528,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
1528
1528
return umf_result ;
1529
1529
}
1530
1530
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
+
1531
1616
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1532
1617
.version = UMF_VERSION_CURRENT ,
1533
1618
.initialize = coarse_memory_provider_initialize ,
@@ -1543,14 +1628,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1543
1628
.ext .purge_force = coarse_memory_provider_purge_force ,
1544
1629
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1545
1630
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1546
- // TODO
1547
- /*
1548
1631
.ipc .get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size ,
1549
1632
.ipc .get_ipc_handle = coarse_memory_provider_get_ipc_handle ,
1550
1633
.ipc .put_ipc_handle = coarse_memory_provider_put_ipc_handle ,
1551
1634
.ipc .open_ipc_handle = coarse_memory_provider_open_ipc_handle ,
1552
1635
.ipc .close_ipc_handle = coarse_memory_provider_close_ipc_handle ,
1553
- */
1554
1636
};
1555
1637
1556
1638
umf_memory_provider_ops_t * umfCoarseMemoryProviderOps (void ) {
0 commit comments