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