@@ -1535,6 +1535,40 @@ coarse_memory_provider_get_stats(void *provider,
1535
1535
return UMF_RESULT_SUCCESS ;
1536
1536
}
1537
1537
1538
+ static umf_result_t coarse_memory_provider_purge_lazy (void * provider , void * ptr ,
1539
+ size_t size ) {
1540
+ if (provider == NULL || ptr == NULL ) {
1541
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
1542
+ }
1543
+
1544
+ coarse_memory_provider_t * coarse_provider =
1545
+ (struct coarse_memory_provider_t * )provider ;
1546
+ if (coarse_provider -> upstream_memory_provider == NULL ) {
1547
+ LOG_ERR ("no upstream memory provider given" );
1548
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1549
+ }
1550
+
1551
+ return umfMemoryProviderPurgeLazy (coarse_provider -> upstream_memory_provider ,
1552
+ ptr , size );
1553
+ }
1554
+
1555
+ static umf_result_t coarse_memory_provider_purge_force (void * provider ,
1556
+ void * ptr , size_t size ) {
1557
+ if (provider == NULL || ptr == NULL ) {
1558
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
1559
+ }
1560
+
1561
+ coarse_memory_provider_t * coarse_provider =
1562
+ (struct coarse_memory_provider_t * )provider ;
1563
+ if (coarse_provider -> upstream_memory_provider == NULL ) {
1564
+ LOG_ERR ("no upstream memory provider given" );
1565
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1566
+ }
1567
+
1568
+ return umfMemoryProviderPurgeForce (
1569
+ coarse_provider -> upstream_memory_provider , ptr , size );
1570
+ }
1571
+
1538
1572
static umf_result_t coarse_memory_provider_allocation_split (void * provider ,
1539
1573
void * ptr ,
1540
1574
size_t totalSize ,
@@ -1719,12 +1753,12 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1719
1753
.get_min_page_size = coarse_memory_provider_get_min_page_size ,
1720
1754
.get_name = coarse_memory_provider_get_name ,
1721
1755
.ext .free = coarse_memory_provider_free ,
1756
+ .ext .purge_lazy = coarse_memory_provider_purge_lazy ,
1757
+ .ext .purge_force = coarse_memory_provider_purge_force ,
1722
1758
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1723
1759
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1724
1760
// TODO
1725
1761
/*
1726
- .ext.purge_lazy = coarse_memory_provider_purge_lazy,
1727
- .ext.purge_force = coarse_memory_provider_purge_force,
1728
1762
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
1729
1763
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
1730
1764
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
0 commit comments