@@ -1671,6 +1671,91 @@ static umf_result_t coarse_memory_provider_allocation_merge(void *provider,
1671
1671
return umf_result ;
1672
1672
}
1673
1673
1674
+ static umf_result_t coarse_memory_provider_get_ipc_handle_size (void * provider ,
1675
+ size_t * size ) {
1676
+ assert (provider );
1677
+ assert (size );
1678
+
1679
+ coarse_memory_provider_t * coarse_provider =
1680
+ (struct coarse_memory_provider_t * )provider ;
1681
+ if (!coarse_provider -> upstream_memory_provider ) {
1682
+ LOG_ERR ("missing upstream memory provider" );
1683
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1684
+ }
1685
+
1686
+ return umfMemoryProviderGetIPCHandleSize (
1687
+ coarse_provider -> upstream_memory_provider , size );
1688
+ }
1689
+
1690
+ static umf_result_t
1691
+ coarse_memory_provider_get_ipc_handle (void * provider , const void * ptr ,
1692
+ size_t size , void * providerIpcData ) {
1693
+ assert (provider );
1694
+ assert (ptr );
1695
+ assert (providerIpcData );
1696
+
1697
+ coarse_memory_provider_t * coarse_provider =
1698
+ (struct coarse_memory_provider_t * )provider ;
1699
+ if (!coarse_provider -> upstream_memory_provider ) {
1700
+ LOG_ERR ("missing upstream memory provider" );
1701
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1702
+ }
1703
+
1704
+ return umfMemoryProviderGetIPCHandle (
1705
+ coarse_provider -> upstream_memory_provider , ptr , size , providerIpcData );
1706
+ }
1707
+
1708
+ static umf_result_t
1709
+ coarse_memory_provider_put_ipc_handle (void * provider , void * providerIpcData ) {
1710
+ assert (provider );
1711
+ assert (providerIpcData );
1712
+
1713
+ coarse_memory_provider_t * coarse_provider =
1714
+ (struct coarse_memory_provider_t * )provider ;
1715
+ if (!coarse_provider -> upstream_memory_provider ) {
1716
+ LOG_ERR ("missing upstream memory provider" );
1717
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1718
+ }
1719
+
1720
+ return umfMemoryProviderPutIPCHandle (
1721
+ coarse_provider -> upstream_memory_provider , providerIpcData );
1722
+ }
1723
+
1724
+ static umf_result_t
1725
+ coarse_memory_provider_open_ipc_handle (void * provider , void * providerIpcData ,
1726
+ void * * ptr ) {
1727
+ assert (provider );
1728
+ assert (providerIpcData );
1729
+ assert (ptr );
1730
+
1731
+ coarse_memory_provider_t * coarse_provider =
1732
+ (struct coarse_memory_provider_t * )provider ;
1733
+ if (!coarse_provider -> upstream_memory_provider ) {
1734
+ LOG_ERR ("missing upstream memory provider" );
1735
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1736
+ }
1737
+
1738
+ return umfMemoryProviderOpenIPCHandle (
1739
+ coarse_provider -> upstream_memory_provider , providerIpcData , ptr );
1740
+ }
1741
+
1742
+ static umf_result_t coarse_memory_provider_close_ipc_handle (void * provider ,
1743
+ void * ptr ,
1744
+ size_t size ) {
1745
+ assert (provider );
1746
+ assert (ptr );
1747
+
1748
+ coarse_memory_provider_t * coarse_provider =
1749
+ (struct coarse_memory_provider_t * )provider ;
1750
+ if (!coarse_provider -> upstream_memory_provider ) {
1751
+ LOG_ERR ("missing upstream memory provider" );
1752
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1753
+ }
1754
+
1755
+ return umfMemoryProviderCloseIPCHandle (
1756
+ coarse_provider -> upstream_memory_provider , ptr , size );
1757
+ }
1758
+
1674
1759
umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1675
1760
.version = UMF_VERSION_CURRENT ,
1676
1761
.initialize = coarse_memory_provider_initialize ,
@@ -1686,14 +1771,11 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1686
1771
.ext .purge_force = coarse_memory_provider_purge_force ,
1687
1772
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1688
1773
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1689
- // TODO
1690
- /*
1691
1774
.ipc .get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size ,
1692
1775
.ipc .get_ipc_handle = coarse_memory_provider_get_ipc_handle ,
1693
1776
.ipc .put_ipc_handle = coarse_memory_provider_put_ipc_handle ,
1694
1777
.ipc .open_ipc_handle = coarse_memory_provider_open_ipc_handle ,
1695
1778
.ipc .close_ipc_handle = coarse_memory_provider_close_ipc_handle ,
1696
- */
1697
1779
};
1698
1780
1699
1781
umf_memory_provider_ops_t * umfCoarseMemoryProviderOps (void ) {
0 commit comments