@@ -1518,6 +1518,40 @@ coarse_memory_provider_get_stats(void *provider,
15181518 return UMF_RESULT_SUCCESS ;
15191519}
15201520
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+
15211555static umf_result_t coarse_memory_provider_allocation_split (void * provider ,
15221556 void * ptr ,
15231557 size_t totalSize ,
@@ -1702,12 +1736,12 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
17021736 .get_min_page_size = coarse_memory_provider_get_min_page_size ,
17031737 .get_name = coarse_memory_provider_get_name ,
17041738 .ext .free = coarse_memory_provider_free ,
1739+ .ext .purge_lazy = coarse_memory_provider_purge_lazy ,
1740+ .ext .purge_force = coarse_memory_provider_purge_force ,
17051741 .ext .allocation_merge = coarse_memory_provider_allocation_merge ,
17061742 .ext .allocation_split = coarse_memory_provider_allocation_split ,
17071743 // TODO
17081744 /*
1709- .ext.purge_lazy = coarse_memory_provider_purge_lazy,
1710- .ext.purge_force = coarse_memory_provider_purge_force,
17111745 .ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
17121746 .ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
17131747 .ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
0 commit comments