Skip to content

Commit 2690c93

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

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
@@ -1517,6 +1517,40 @@ coarse_memory_provider_get_stats(void *provider,
15171517
return UMF_RESULT_SUCCESS;
15181518
}
15191519

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+
15201554
static umf_result_t coarse_memory_provider_allocation_split(void *provider,
15211555
void *ptr,
15221556
size_t totalSize,
@@ -1701,12 +1735,12 @@ umf_memory_provider_ops_t UMF_COARSE_MEMORY_PROVIDER_OPS = {
17011735
.get_min_page_size = coarse_memory_provider_get_min_page_size,
17021736
.get_name = coarse_memory_provider_get_name,
17031737
.ext.free = coarse_memory_provider_free,
1738+
.ext.purge_lazy = coarse_memory_provider_purge_lazy,
1739+
.ext.purge_force = coarse_memory_provider_purge_force,
17041740
.ext.allocation_merge = coarse_memory_provider_allocation_merge,
17051741
.ext.allocation_split = coarse_memory_provider_allocation_split,
17061742
// TODO
17071743
/*
1708-
.ext.purge_lazy = coarse_memory_provider_purge_lazy,
1709-
.ext.purge_force = coarse_memory_provider_purge_force,
17101744
.ipc.get_ipc_handle_size = coarse_memory_provider_get_ipc_handle_size,
17111745
.ipc.get_ipc_handle = coarse_memory_provider_get_ipc_handle,
17121746
.ipc.put_ipc_handle = coarse_memory_provider_put_ipc_handle,

0 commit comments

Comments
 (0)