Skip to content

Commit 0721d4d

Browse files
committed
Implement purge_lazy/_force() API of the Coarse provider
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent cffc50d commit 0721d4d

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

src/provider/provider_coarse.c

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
15211555
static 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

Comments
 (0)