mirror of
https://github.com/MaJerle/lwmem.git
synced 2025-01-13 21:42:53 +08:00
release v2.2.0
This commit is contained in:
parent
cc89b1b755
commit
c36034a686
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## Develop
|
## Develop
|
||||||
|
|
||||||
|
## v2.2.0
|
||||||
|
|
||||||
- Rework library CMake with removed INTERFACE type
|
- Rework library CMake with removed INTERFACE type
|
||||||
- Add `LWMEM_CFG_FULL` to allow control build configuration of the library
|
- Add `LWMEM_CFG_FULL` to allow control build configuration of the library
|
||||||
- Implement support for simple (no realloc, no free, grow-only malloc) allocation mechanism
|
- Implement support for simple (no realloc, no free, grow-only malloc) allocation mechanism
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
* Supports embedded applications with fragmented memories
|
* Supports embedded applications with fragmented memories
|
||||||
* Supports automotive applications
|
* Supports automotive applications
|
||||||
* Supports advanced free/realloc algorithms to optimize memory usage
|
* Supports advanced free/realloc algorithms to optimize memory usage
|
||||||
|
* **Since v2.2.0** Supports light implementation with allocation only
|
||||||
* Operating system ready, thread-safe API
|
* Operating system ready, thread-safe API
|
||||||
* C++ wrapper functions
|
* C++ wrapper functions
|
||||||
* User friendly MIT license
|
* User friendly MIT license
|
||||||
|
@ -25,6 +25,7 @@ Features
|
|||||||
* Supports embedded applications with fragmented memories
|
* Supports embedded applications with fragmented memories
|
||||||
* Supports automotive applications
|
* Supports automotive applications
|
||||||
* Supports advanced free/realloc algorithms to optimize memory usage
|
* Supports advanced free/realloc algorithms to optimize memory usage
|
||||||
|
* **Since v2.2.0** Supports light implementation with allocation only
|
||||||
* Operating system ready, thread-safe API
|
* Operating system ready, thread-safe API
|
||||||
* C++ wrapper functions
|
* C++ wrapper functions
|
||||||
* User friendly MIT license
|
* User friendly MIT license
|
||||||
|
@ -9,4 +9,5 @@ User manual
|
|||||||
how-it-works
|
how-it-works
|
||||||
instances
|
instances
|
||||||
realloc-algorithm
|
realloc-algorithm
|
||||||
|
light-version
|
||||||
thread-safety
|
thread-safety
|
19
docs/user-manual/light-version.rst
Normal file
19
docs/user-manual/light-version.rst
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.. _light_version:
|
||||||
|
|
||||||
|
LwMEM light implementation
|
||||||
|
==========================
|
||||||
|
|
||||||
|
When system is super memory constrained or when system only requires memory allocation at initialization stage,
|
||||||
|
it is possible to put the library into *light* mode by controlling the :c:macro:`LWMEM_CFG_FULL` user configuration option
|
||||||
|
|
||||||
|
When *full* mode is disabled, user must be aware of some contraints:
|
||||||
|
|
||||||
|
* It is only possible to allocate memory (no free, no realloc)
|
||||||
|
* It is only possible to use one (``1``) memory region. When assigning the memory with more than one region, function will return an error.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Light mode is useful for opaque types that are returned to user and must be allocated on the heap.
|
||||||
|
These are typically allocated at initialization stage and never freed during program execution.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "LwMEM",
|
"name": "LwMEM",
|
||||||
"version": "2.1.0",
|
"version": "2.2.0",
|
||||||
"description": "Lightweight dynamic memory manager optimized for embedded systems",
|
"description": "Lightweight dynamic memory manager optimized for embedded systems",
|
||||||
"keywords": "lwmem, memory, dynamic, heap, malloc, calloc, realloc, free, lightweight, manager, embedded, stm32, win32",
|
"keywords": "lwmem, memory, dynamic, heap, malloc, calloc, realloc, free, lightweight, manager, embedded, stm32, win32",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#ifndef LWMEM_HDR_H
|
#ifndef LWMEM_HDR_H
|
||||||
#define LWMEM_HDR_H
|
#define LWMEM_HDR_H
|
||||||
@ -125,6 +125,7 @@ size_t lwmem_get_size_ex(lwmem_t* lwobj, void* ptr);
|
|||||||
#endif /* LWMEM_CFG_FULL || __DOXYGEN__ */
|
#endif /* LWMEM_CFG_FULL || __DOXYGEN__ */
|
||||||
#if LWMEM_CFG_ENABLE_STATS || __DOXYGEN__
|
#if LWMEM_CFG_ENABLE_STATS || __DOXYGEN__
|
||||||
void lwmem_get_stats_ex(lwmem_t* lwobj, lwmem_stats_t* stats);
|
void lwmem_get_stats_ex(lwmem_t* lwobj, lwmem_stats_t* stats);
|
||||||
|
void lwmem_get_size(lwmem_stats_t* stats);
|
||||||
#endif /* LWMEM_CFG_ENABLE_STATS || __DOXYGEN__ */
|
#endif /* LWMEM_CFG_ENABLE_STATS || __DOXYGEN__ */
|
||||||
|
|
||||||
size_t lwmem_assignmem(const lwmem_region_t* regions);
|
size_t lwmem_assignmem(const lwmem_region_t* regions);
|
||||||
@ -137,20 +138,8 @@ int lwmem_realloc_s(void** ptr2ptr, size_t size);
|
|||||||
void lwmem_free(void* ptr);
|
void lwmem_free(void* ptr);
|
||||||
void lwmem_free_s(void** ptr2ptr);
|
void lwmem_free_s(void** ptr2ptr);
|
||||||
size_t lwmem_get_size(void* ptr);
|
size_t lwmem_get_size(void* ptr);
|
||||||
|
|
||||||
#endif /* LWMEM_CFG_FULL || __DOXYGEN__ */
|
#endif /* LWMEM_CFG_FULL || __DOXYGEN__ */
|
||||||
|
|
||||||
#if LWMEM_CFG_ENABLE_STATS || __DOXYGEN__
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \note This is a wrapper for \ref lwmem_get_stats_ex function.
|
|
||||||
* It operates in default LwMEM instance
|
|
||||||
* \param[in] ptr: Pointer to lwmem_stats_t to store result
|
|
||||||
*/
|
|
||||||
#define lwmem_get_stats(stats) lwmem_get_stats_ex(NULL, (stats))
|
|
||||||
|
|
||||||
#endif /* LWMEM_CFG_ENABLE_STATS || __DOXYGEN__ */
|
|
||||||
|
|
||||||
#if defined(LWMEM_DEV) && !__DOXYGEN__
|
#if defined(LWMEM_DEV) && !__DOXYGEN__
|
||||||
unsigned char lwmem_debug_create_regions(lwmem_region_t** regs_out, size_t count, size_t size);
|
unsigned char lwmem_debug_create_regions(lwmem_region_t** regs_out, size_t count, size_t size);
|
||||||
void lwmem_debug_save_state(void);
|
void lwmem_debug_save_state(void);
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#ifndef LWMEM_HDR_HPP
|
#ifndef LWMEM_HDR_HPP
|
||||||
#define LWMEM_HDR_HPP
|
#define LWMEM_HDR_HPP
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#ifndef LWMEM_OPT_HDR_H
|
#ifndef LWMEM_OPT_HDR_H
|
||||||
#define LWMEM_OPT_HDR_H
|
#define LWMEM_OPT_HDR_H
|
||||||
@ -89,7 +89,7 @@ extern "C" {
|
|||||||
* \brief Enables `1` or disables `0` full memory management support.
|
* \brief Enables `1` or disables `0` full memory management support.
|
||||||
*
|
*
|
||||||
* When enabled (default config), library supports allocation, reallocation and freeing of the memory.
|
* When enabled (default config), library supports allocation, reallocation and freeing of the memory.
|
||||||
* - Memory allocation and [c]allocation
|
* - Memory [c]allocation
|
||||||
* - Memory reallocation
|
* - Memory reallocation
|
||||||
* - Memory allocation in user defined memory regions
|
* - Memory allocation in user defined memory regions
|
||||||
* - Memory freeing
|
* - Memory freeing
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#ifndef LWMEM_OPTS_HDR_H
|
#ifndef LWMEM_OPTS_HDR_H
|
||||||
#define LWMEM_OPTS_HDR_H
|
#define LWMEM_OPTS_HDR_H
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#ifndef LWMEM_SYS_HDR_H
|
#ifndef LWMEM_SYS_HDR_H
|
||||||
#define LWMEM_SYS_HDR_H
|
#define LWMEM_SYS_HDR_H
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#include "lwmem/lwmem.h"
|
#include "lwmem/lwmem.h"
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
@ -1146,7 +1146,7 @@ lwmem_get_size_ex(lwmem_t* lwobj, void* ptr) {
|
|||||||
* \brief Get statistics of a LwMEM instance
|
* \brief Get statistics of a LwMEM instance
|
||||||
* \param[in] lwobj: LwMEM instance. Set to `NULL` to use default instance.
|
* \param[in] lwobj: LwMEM instance. Set to `NULL` to use default instance.
|
||||||
* Instance must be the same as used during allocation procedure
|
* Instance must be the same as used during allocation procedure
|
||||||
* \param[in] stats: Pointer to \ref lwmem_stats_t to store result
|
* \param[in,out] stats: Pointer to \ref lwmem_stats_t to store result
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
lwmem_get_stats_ex(lwmem_t* lwobj, lwmem_stats_t* stats) {
|
lwmem_get_stats_ex(lwmem_t* lwobj, lwmem_stats_t* stats) {
|
||||||
@ -1159,6 +1159,15 @@ lwmem_get_stats_ex(lwmem_t* lwobj, lwmem_stats_t* stats) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Get statistics of a default LwMEM instance
|
||||||
|
* \param[in,out] stats: Pointer to \ref lwmem_stats_t to store result
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
lwmem_get_size(lwmem_stats_t* stats) {
|
||||||
|
lwmem_get_stats_ex(NULL, stats);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* LWMEM_CFG_ENABLE_STATS || __DOXYGEN__ */
|
#endif /* LWMEM_CFG_ENABLE_STATS || __DOXYGEN__ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,5 +29,5 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#include "system/lwmem_sys.h"
|
#include "system/lwmem_sys.h"
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#include "system/lwmem_sys.h"
|
#include "system/lwmem_sys.h"
|
||||||
|
|
||||||
|
@ -29,13 +29,13 @@
|
|||||||
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
* This file is part of LwMEM - Lightweight dynamic memory manager library.
|
||||||
*
|
*
|
||||||
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
* Author: Tilen MAJERLE <tilen@majerle.eu>
|
||||||
* Version: v2.1.0
|
* Version: v2.2.0
|
||||||
*/
|
*/
|
||||||
#include "system/lwmem_sys.h"
|
#include "system/lwmem_sys.h"
|
||||||
|
|
||||||
#if LWMEM_CFG_OS && !__DOXYGEN__
|
#if LWMEM_CFG_OS && !__DOXYGEN__
|
||||||
|
|
||||||
#include "Windows.h"
|
#include "windows.h"
|
||||||
|
|
||||||
uint8_t
|
uint8_t
|
||||||
lwmem_sys_mutex_create(LWMEM_CFG_OS_MUTEX_HANDLE* m) {
|
lwmem_sys_mutex_create(LWMEM_CFG_OS_MUTEX_HANDLE* m) {
|
||||||
@ -50,12 +50,7 @@ lwmem_sys_mutex_isvalid(LWMEM_CFG_OS_MUTEX_HANDLE* m) {
|
|||||||
|
|
||||||
uint8_t
|
uint8_t
|
||||||
lwmem_sys_mutex_wait(LWMEM_CFG_OS_MUTEX_HANDLE* m) {
|
lwmem_sys_mutex_wait(LWMEM_CFG_OS_MUTEX_HANDLE* m) {
|
||||||
DWORD ret;
|
return WaitForSingleObject(*m, INFINITE) == WAIT_OBJECT_0;
|
||||||
ret = WaitForSingleObject(*m, INFINITE);
|
|
||||||
if (ret != WAIT_OBJECT_0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t
|
uint8_t
|
||||||
|
Loading…
x
Reference in New Issue
Block a user