Skip to content

Commit e9f92ca

Browse files
committed
add fixed provider
1 parent aef7ae7 commit e9f92ca

File tree

9 files changed

+807
-18
lines changed

9 files changed

+807
-18
lines changed

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,9 @@ More detailed documentation is available here: https://oneapi-src.github.io/unif
132132

133133
### Memory providers
134134

135-
#### Coarse Provider
135+
#### Fixed memory Provider
136136

137-
A memory provider that can provide memory from:
138-
1) a given pre-allocated buffer (the fixed-size memory provider option) or
139-
2) from an additional upstream provider (e.g. provider that does not support the free() operation
140-
like the File memory provider or the DevDax memory provider - see below).
137+
A memory provider that can provide memory from a given pre-allocated buffer.
141138

142139
#### OS memory provider
143140

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (C) 2024 Intel Corporation
3+
*
4+
* Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
5+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
*/
7+
8+
#ifndef UMF_FIXED_MEMORY_PROVIDER_H
9+
#define UMF_FIXED_MEMORY_PROVIDER_H
10+
11+
#include <umf/providers/provider_os_memory.h>
12+
13+
#ifdef __cplusplus
14+
extern "C" {
15+
#endif
16+
17+
/// @cond
18+
#define UMF_FIXED_RESULTS_START_FROM 4000
19+
/// @endcond
20+
21+
struct umf_fixed_memory_provider_params_t;
22+
23+
typedef struct umf_fixed_memory_provider_params_t
24+
*umf_fixed_memory_provider_params_handle_t;
25+
26+
/// @brief Create a struct to store parameters of the Fixed Memory Provider.
27+
/// @param hParams [out] handle to the newly created parameters struct.
28+
/// @param ptr [in] pointer to the memory region.
29+
/// @param size [in] size of the memory region in bytes.
30+
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
31+
umf_result_t umfFixedMemoryProviderParamsCreate(
32+
umf_fixed_memory_provider_params_handle_t *hParams, void *ptr, size_t size);
33+
34+
/// @brief Set the memory region in params struct. Overwrites the previous value.
35+
/// It provides an ability to use the same instance of params to create multiple
36+
/// instances of the provider for different memory regions.
37+
/// @param hParams [in] handle to the parameters of the Fixed Memory Provider.
38+
/// @param ptr [in] pointer to the memory region.
39+
/// @param size [in] size of the memory region in bytes.
40+
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
41+
umf_result_t umfFixedMemoryProviderParamsSetMemory(
42+
umf_fixed_memory_provider_params_handle_t hParams, void *ptr, size_t size);
43+
44+
/// @brief Destroy parameters struct.
45+
/// @param hParams [in] handle to the parameters of the Fixed Memory Provider.
46+
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
47+
umf_result_t umfFixedMemoryProviderParamsDestroy(
48+
umf_fixed_memory_provider_params_handle_t hParams);
49+
50+
/// @brief Retrieve the operations structure for the Fixed Memory Provider.
51+
/// @return Pointer to the umf_memory_provider_ops_t structure.
52+
umf_memory_provider_ops_t *umfFixedMemoryProviderOps(void);
53+
54+
/// @brief Fixed Memory Provider operation results
55+
typedef enum umf_fixed_memory_provider_native_error {
56+
UMF_FIXED_RESULT_SUCCESS = UMF_FIXED_RESULTS_START_FROM, ///< Success
57+
UMF_FIXED_RESULT_ERROR_PURGE_FORCE_FAILED, ///< Force purging failed
58+
} umf_fixed_memory_provider_native_error_t;
59+
60+
#ifdef __cplusplus
61+
}
62+
#endif
63+
64+
#endif /* UMF_FIXED_MEMORY_PROVIDER_H */

scripts/docs_config/api.rst

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,12 @@ and operate on the provider.
8080
.. doxygenfile:: memory_provider.h
8181
:sections: define enum typedef func var
8282

83-
Coarse Provider
83+
Fixed Memory Provider
8484
------------------------------------------
8585

86-
A memory provider that can provide memory from:
86+
A memory provider that can provide memory from a given pre-allocated buffer.
8787

88-
1) A given pre-allocated buffer (the fixed-size memory provider option) or
89-
2) From an additional upstream provider (e.g. provider that does not support
90-
the free() operation like the File memory provider or the DevDax memory
91-
provider - see below).
92-
93-
.. doxygenfile:: provider_coarse.h
88+
.. doxygenfile:: provider_fixed_memory.h
9489
:sections: define enum typedef func var
9590

9691
OS Memory Provider

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ set(UMF_SOURCES
6262
provider/provider_cuda.c
6363
provider/provider_devdax_memory.c
6464
provider/provider_file_memory.c
65+
provider/provider_fixed_memory.c
6566
provider/provider_level_zero.c
6667
provider/provider_os_memory.c
6768
provider/provider_tracking.c

src/libumf.def

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ EXPORTS
2525
umfDevDaxMemoryProviderParamsDestroy
2626
umfDevDaxMemoryProviderParamsSetDeviceDax
2727
umfDevDaxMemoryProviderParamsSetProtection
28-
umfFree
2928
umfFileMemoryProviderOps
3029
umfFileMemoryProviderParamsCreate
3130
umfFileMemoryProviderParamsDestroy
3231
umfFileMemoryProviderParamsSetPath
3332
umfFileMemoryProviderParamsSetProtection
3433
umfFileMemoryProviderParamsSetVisibility
34+
umfFixedMemoryProviderOps
35+
umfFixedMemoryProviderParamsCreate
36+
umfFixedMemoryProviderParamsDestroy
37+
umfFree
3538
umfGetIPCHandle
3639
umfGetLastFailedMemoryProvider
3740
umfJemallocPoolOps

src/libumf.map

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@ UMF_1.0 {
1919
umfDevDaxMemoryProviderParamsDestroy;
2020
umfDevDaxMemoryProviderParamsSetDeviceDax;
2121
umfDevDaxMemoryProviderParamsSetProtection;
22-
umfFree;
2322
umfFileMemoryProviderOps;
2423
umfFileMemoryProviderParamsCreate;
2524
umfFileMemoryProviderParamsDestroy;
2625
umfFileMemoryProviderParamsSetPath;
2726
umfFileMemoryProviderParamsSetProtection;
2827
umfFileMemoryProviderParamsSetVisibility;
28+
umfFixedMemoryProviderOps;
29+
umfFixedMemoryProviderParamsCreate;
30+
umfFixedMemoryProviderParamsDestroy;
31+
umfFree;
2932
umfGetIPCHandle;
3033
umfGetLastFailedMemoryProvider;
3134
umfJemallocPoolOps;
@@ -81,13 +84,13 @@ UMF_1.0 {
8184
umfOsMemoryProviderOps;
8285
umfOsMemoryProviderParamsCreate;
8386
umfOsMemoryProviderParamsDestroy;
84-
umfOsMemoryProviderParamsSetProtection;
85-
umfOsMemoryProviderParamsSetVisibility;
86-
umfOsMemoryProviderParamsSetShmName;
8787
umfOsMemoryProviderParamsSetNumaList;
8888
umfOsMemoryProviderParamsSetNumaMode;
8989
umfOsMemoryProviderParamsSetPartSize;
9090
umfOsMemoryProviderParamsSetPartitions;
91+
umfOsMemoryProviderParamsSetProtection;
92+
umfOsMemoryProviderParamsSetShmName;
93+
umfOsMemoryProviderParamsSetVisibility;
9194
umfPoolAlignedMalloc;
9295
umfPoolByPtr;
9396
umfPoolCalloc;

0 commit comments

Comments
 (0)