@@ -1517,6 +1517,40 @@ coarse_memory_provider_get_stats(void *provider,
1517
1517
return UMF_RESULT_SUCCESS ;
1518
1518
}
1519
1519
1520
+ static umf_result_t coarse_memory_provider_purge_lazy (void * provider , void * ptr ,
1521
+ size_t size ) {
1522
+ if (provider == NULL || ptr == NULL ) {
1523
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
1524
+ }
1525
+
1526
+ coarse_memory_provider_t * coarse_provider =
1527
+ (struct coarse_memory_provider_t * )provider ;
1528
+ if (coarse_provider -> upstream_memory_provider == NULL ) {
1529
+ LOG_ERR ("no upstream memory provider given" );
1530
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1531
+ }
1532
+
1533
+ return umfMemoryProviderPurgeLazy (coarse_provider -> upstream_memory_provider ,
1534
+ ptr , size );
1535
+ }
1536
+
1537
+ static umf_result_t coarse_memory_provider_purge_force (void * provider ,
1538
+ void * ptr , size_t size ) {
1539
+ if (provider == NULL || ptr == NULL ) {
1540
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
1541
+ }
1542
+
1543
+ coarse_memory_provider_t * coarse_provider =
1544
+ (struct coarse_memory_provider_t * )provider ;
1545
+ if (coarse_provider -> upstream_memory_provider == NULL ) {
1546
+ LOG_ERR ("no upstream memory provider given" );
1547
+ return UMF_RESULT_ERROR_NOT_SUPPORTED ;
1548
+ }
1549
+
1550
+ return umfMemoryProviderPurgeForce (
1551
+ coarse_provider -> upstream_memory_provider , ptr , size );
1552
+ }
1553
+
1520
1554
static umf_result_t coarse_memory_provider_allocation_split (void * provider ,
1521
1555
void * ptr ,
1522
1556
size_t totalSize ,
@@ -1701,12 +1735,12 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
1701
1735
.get_min_page_size = coarse_memory_provider_get_min_page_size ,
1702
1736
.get_name = coarse_memory_provider_get_name ,
1703
1737
.ext .free = coarse_memory_provider_free ,
1738
+ .ext .purge_lazy = coarse_memory_provider_purge_lazy ,
1739
+ .ext .purge_force = coarse_memory_provider_purge_force ,
1704
1740
.ext .allocation_merge = coarse_memory_provider_allocation_merge ,
1705
1741
.ext .allocation_split = coarse_memory_provider_allocation_split ,
1706
1742
// TODO
1707
1743
/*
1708
- .ext.purge_lazy = coarse_memory_provider_purge_lazy,
1709
- .ext.purge_force = coarse_memory_provider_purge_force,
1710
1744
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
1711
1745
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
1712
1746
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
0 commit comments