@@ -1535,6 +1535,40 @@ coarse_memory_provider_get_stats(void *provider,
15351535 return UMF_RESULT_SUCCESS ;
15361536}
15371537
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+
15381572static umf_result_t coarse_memory_provider_allocation_split (void * provider ,
15391573 void * ptr ,
15401574 size_t totalSize ,
@@ -1719,12 +1753,12 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
17191753 .get_min_page_size = coarse_memory_provider_get_min_page_size ,
17201754 .get_name = coarse_memory_provider_get_name ,
17211755 .ext .free = coarse_memory_provider_free ,
1756+ .ext .purge_lazy = coarse_memory_provider_purge_lazy ,
1757+ .ext .purge_force = coarse_memory_provider_purge_force ,
17221758 .ext .allocation_merge = coarse_memory_provider_allocation_merge ,
17231759 .ext .allocation_split = coarse_memory_provider_allocation_split ,
17241760 // TODO
17251761 /*
1726- .ext.purge_lazy = coarse_memory_provider_purge_lazy,
1727- .ext.purge_force = coarse_memory_provider_purge_force,
17281762 .ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
17291763 .ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
17301764 .ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,
0 commit comments