Skip to content

Commit

Permalink
add fixed provider
Browse files Browse the repository at this point in the history
  • Loading branch information
lplewa committed Dec 6, 2024
1 parent 9bf1316 commit e93a980
Show file tree
Hide file tree
Showing 8 changed files with 744 additions and 5 deletions.
54 changes: 54 additions & 0 deletions include/umf/providers/provider_fixed_memory.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (C) 2024 Intel Corporation
*
* Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/

#ifndef UMF_FIXED_MEMORY_PROVIDER_H
#define UMF_FIXED_MEMORY_PROVIDER_H

#include <umf/providers/provider_os_memory.h>

#ifdef __cplusplus
extern "C" {
#endif

/// @cond
#define UMF_FIXED_RESULTS_START_FROM 4000
/// @endcond

struct umf_fixed_memory_provider_params_t;

typedef struct umf_fixed_memory_provider_params_t
*umf_fixed_memory_provider_params_handle_t;

/// @brief Create a struct to store parameters of the Fixed Memory Provider.
/// @param hParams [out] handle to the newly created parameters struct.
/// @param ptr [in] pointer to the memory region.
/// @param size [in] size of the memory region in bytes.
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
umf_result_t umfFixedMemoryProviderParamsCreate(
umf_fixed_memory_provider_params_handle_t *hParams, void *ptr, size_t size);

/// @brief Destroy parameters struct.
/// @param hParams [in] handle to the parameters of the Fixed Memory Provider.
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
umf_result_t umfFixedMemoryProviderParamsDestroy(
umf_fixed_memory_provider_params_handle_t hParams);

/// @brief Retrieve the operations structure for the Fixed Memory Provider.
/// @return Pointer to the umf_memory_provider_ops_t structure.
umf_memory_provider_ops_t *umfFixedMemoryProviderOps(void);

/// @brief Fixed Memory Provider operation results
typedef enum umf_fixed_memory_provider_native_error {
UMF_FIXED_RESULT_SUCCESS = UMF_FIXED_RESULTS_START_FROM, ///< Success
UMF_FIXED_RESULT_ERROR_PURGE_FORCE_FAILED, ///< Force purging failed
} umf_fixed_memory_provider_native_error_t;

#ifdef __cplusplus
}
#endif

#endif /* UMF_FIXED_MEMORY_PROVIDER_H */
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ set(UMF_SOURCES
provider/provider_cuda.c
provider/provider_devdax_memory.c
provider/provider_file_memory.c
provider/provider_fixed_memory.c
provider/provider_level_zero.c
provider/provider_os_memory.c
provider/provider_tracking.c
Expand Down
5 changes: 5 additions & 0 deletions src/coarse/coarse.c
Original file line number Diff line number Diff line change
Expand Up @@ -1030,6 +1030,11 @@ umf_result_t coarse_alloc(coarse_t *coarse, size_t size, size_t alignment,
alignment = ALIGN_UP(alignment, coarse->page_size);
}

if (size + alignment < size) {
LOG_ERR("size + alignment overflow");
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
}

if (utils_mutex_lock(&coarse->lock) != 0) {
LOG_ERR("locking the lock failed");
return UMF_RESULT_ERROR_UNKNOWN;
Expand Down
7 changes: 6 additions & 1 deletion src/libumf.def
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,23 @@ EXPORTS
umfCUDAMemoryProviderParamsSetContext
umfCUDAMemoryProviderParamsSetDevice
umfCUDAMemoryProviderParamsSetMemoryType
umfCoarseMemoryProviderGetStats
umfCoarseMemoryProviderOps
umfDevDaxMemoryProviderOps
umfDevDaxMemoryProviderParamsCreate
umfDevDaxMemoryProviderParamsDestroy
umfDevDaxMemoryProviderParamsSetDeviceDax
umfDevDaxMemoryProviderParamsSetProtection
umfFree
umfFileMemoryProviderOps
umfFileMemoryProviderParamsCreate
umfFileMemoryProviderParamsDestroy
umfFileMemoryProviderParamsSetPath
umfFileMemoryProviderParamsSetProtection
umfFileMemoryProviderParamsSetVisibility
umfFixedMemoryProviderOps
umfFixedMemoryProviderParamsCreate
umfFixedMemoryProviderParamsDestroy
umfFree
umfGetIPCHandle
umfGetLastFailedMemoryProvider
umfJemallocPoolOps
Expand Down
13 changes: 9 additions & 4 deletions src/libumf.map
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,23 @@ UMF_1.0 {
umfCUDAMemoryProviderParamsSetContext;
umfCUDAMemoryProviderParamsSetDevice;
umfCUDAMemoryProviderParamsSetMemoryType;
umfCoarseMemoryProviderGetStats;
umfCoarseMemoryProviderOps;
umfDevDaxMemoryProviderOps;
umfDevDaxMemoryProviderParamsCreate;
umfDevDaxMemoryProviderParamsDestroy;
umfDevDaxMemoryProviderParamsSetDeviceDax;
umfDevDaxMemoryProviderParamsSetProtection;
umfFree;
umfFileMemoryProviderOps;
umfFileMemoryProviderParamsCreate;
umfFileMemoryProviderParamsDestroy;
umfFileMemoryProviderParamsSetPath;
umfFileMemoryProviderParamsSetProtection;
umfFileMemoryProviderParamsSetVisibility;
umfFixedMemoryProviderOps;
umfFixedMemoryProviderParamsCreate;
umfFixedMemoryProviderParamsDestroy;
umfFree;
umfGetIPCHandle;
umfGetLastFailedMemoryProvider;
umfJemallocPoolOps;
Expand Down Expand Up @@ -81,13 +86,13 @@ UMF_1.0 {
umfOsMemoryProviderOps;
umfOsMemoryProviderParamsCreate;
umfOsMemoryProviderParamsDestroy;
umfOsMemoryProviderParamsSetProtection;
umfOsMemoryProviderParamsSetVisibility;
umfOsMemoryProviderParamsSetShmName;
umfOsMemoryProviderParamsSetNumaList;
umfOsMemoryProviderParamsSetNumaMode;
umfOsMemoryProviderParamsSetPartSize;
umfOsMemoryProviderParamsSetPartitions;
umfOsMemoryProviderParamsSetProtection;
umfOsMemoryProviderParamsSetShmName;
umfOsMemoryProviderParamsSetVisibility;
umfPoolAlignedMalloc;
umfPoolByPtr;
umfPoolCalloc;
Expand Down
Loading

0 comments on commit e93a980

Please sign in to comment.