@@ -1509,6 +1509,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
1509
1509
return umf_result ;
1510
1510
}
1511
1511
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
+
1512
1597
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1513
1598
.version = UMF_VERSION_CURRENT ,
1514
1599
.initialize = coarse_memory_provider_initialize ,
@@ -1524,14 +1609,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1524
1609
.ext .purge_force = coarse_memory_provider_purge_force ,
1525
1610
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1526
1611
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1527
- // TODO
1528
- /*
1529
1612
.ipc .get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size ,
1530
1613
.ipc .get_ipc_handle = coarse_memory_provider_get_ipc_handle ,
1531
1614
.ipc .put_ipc_handle = coarse_memory_provider_put_ipc_handle ,
1532
1615
.ipc .open_ipc_handle = coarse_memory_provider_open_ipc_handle ,
1533
1616
.ipc .close_ipc_handle = coarse_memory_provider_close_ipc_handle ,
1534
- */
1535
1617
};
1536
1618
1537
1619
umf_memory_provider_ops_t * umfCoarseMemoryProviderOps (void ) {
0 commit comments