@@ -1504,6 +1504,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
1504
1504
return umf_result ;
1505
1505
}
1506
1506
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
+
1507
1592
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1508
1593
.version = UMF_VERSION_CURRENT ,
1509
1594
.initialize = coarse_memory_provider_initialize ,
@@ -1519,14 +1604,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1519
1604
.ext .purge_force = coarse_memory_provider_purge_force ,
1520
1605
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1521
1606
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1522
- // TODO
1523
- /*
1524
1607
.ipc .get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size ,
1525
1608
.ipc .get_ipc_handle = coarse_memory_provider_get_ipc_handle ,
1526
1609
.ipc .put_ipc_handle = coarse_memory_provider_put_ipc_handle ,
1527
1610
.ipc .open_ipc_handle = coarse_memory_provider_open_ipc_handle ,
1528
1611
.ipc .close_ipc_handle = coarse_memory_provider_close_ipc_handle ,
1529
- */
1530
1612
};
1531
1613
1532
1614
umf_memory_provider_ops_t * umfCoarseMemoryProviderOps (void ) {
0 commit comments