aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeo Xu <xuxingliang@xiaomi.com>2023-11-29 18:15:27 +0800
committerGitHub <noreply@github.com>2023-11-29 11:15:27 +0100
commit6bc99b1d1f593703360e29165f218faf61daf109 (patch)
tree98f3361b17a0855bfd7accedc16b4db63e82b592
parent34f7e9e01249c076121429125ca50ecbab34b5ed (diff)
downloadlvgl-6bc99b1d1f593703360e29165f218faf61daf109.tar.gz
lvgl-6bc99b1d1f593703360e29165f218faf61daf109.zip
feat(stdlib): add lv_memmove (#4888)
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
-rw-r--r--src/libs/lz4/lz4.h5
-rw-r--r--src/stdlib/builtin/lv_mem_core_builtin.c2
-rw-r--r--src/stdlib/builtin/lv_sprintf_builtin.c2
-rw-r--r--src/stdlib/builtin/lv_string_builtin.c18
-rw-r--r--src/stdlib/builtin/lv_tlsf.c2
-rw-r--r--src/stdlib/builtin/lv_tlsf.h2
-rw-r--r--src/stdlib/clib/lv_mem_core_clib.c2
-rw-r--r--src/stdlib/clib/lv_string_clib.c12
-rw-r--r--src/stdlib/lv_string.h9
-rw-r--r--src/stdlib/micropython/lv_mem_core_micropython.c2
-rw-r--r--src/stdlib/rtthread/lv_mem_core_rtthread.c2
-rw-r--r--src/stdlib/rtthread/lv_sprintf_rtthread.c2
-rw-r--r--src/stdlib/rtthread/lv_string_rtthread.c12
13 files changed, 49 insertions, 23 deletions
diff --git a/src/libs/lz4/lz4.h b/src/libs/lz4/lz4.h
index 3af8297d4..72080233e 100644
--- a/src/libs/lz4/lz4.h
+++ b/src/libs/lz4/lz4.h
@@ -46,10 +46,7 @@ extern "C" {
#define LZ4_FREESTANDING 1
#define LZ4_memset lv_memset
#define LZ4_memcpy lv_memcpy
-#define LZ4_memmove memmove
-/**
- * @todo add LZ4_memmove
- */
+#define LZ4_memmove lv_memmove
#ifndef LZ4_H_2983827168210
#define LZ4_H_2983827168210
diff --git a/src/stdlib/builtin/lv_mem_core_builtin.c b/src/stdlib/builtin/lv_mem_core_builtin.c
index 0763ab3d8..4d42f8929 100644
--- a/src/stdlib/builtin/lv_mem_core_builtin.c
+++ b/src/stdlib/builtin/lv_mem_core_builtin.c
@@ -260,4 +260,4 @@ static void lv_mem_walker(void * ptr, size_t size, int used, void * user)
mon_p->free_biggest_size = size;
}
}
-#endif /*LV_USE_BUILTIN_MALLOC*/
+#endif /*LV_STDLIB_BUILTIN*/
diff --git a/src/stdlib/builtin/lv_sprintf_builtin.c b/src/stdlib/builtin/lv_sprintf_builtin.c
index 97b99ee3f..d5fc55537 100644
--- a/src/stdlib/builtin/lv_sprintf_builtin.c
+++ b/src/stdlib/builtin/lv_sprintf_builtin.c
@@ -883,4 +883,4 @@ int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va)
return _lv_vsnprintf(_out_buffer, buffer, count, format, va);
}
-#endif /*LV_USE_BUILTIN_SNPRINTF*/
+#endif /*LV_STDLIB_BUILTIN*/
diff --git a/src/stdlib/builtin/lv_string_builtin.c b/src/stdlib/builtin/lv_string_builtin.c
index aa20626b5..0e27ab2ae 100644
--- a/src/stdlib/builtin/lv_string_builtin.c
+++ b/src/stdlib/builtin/lv_string_builtin.c
@@ -145,6 +145,22 @@ LV_ATTRIBUTE_FAST_MEM void lv_memset(void * dst, uint8_t v, size_t len)
}
}
+LV_ATTRIBUTE_FAST_MEM void * lv_memmove(void * dst, const void * src, size_t len)
+{
+ if(dst < src || (char *)dst > ((char *)src + len)) {
+ return lv_memcpy(dst, src, len);
+ }
+ else {
+ char * tmp = (char *)dst + len;
+ char * s = (char *) src + len;
+
+ while(len--) {
+ *--tmp = *--s;
+ }
+ return dst;
+ }
+}
+
/* See https://en.cppreference.com/w/c/string/byte/strlen for reference */
size_t lv_strlen(const char * str)
{
@@ -194,4 +210,4 @@ char * lv_strdup(const char * src)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_BUILTIN_MEMCPY*/
+#endif /*LV_STDLIB_BUILTIN*/
diff --git a/src/stdlib/builtin/lv_tlsf.c b/src/stdlib/builtin/lv_tlsf.c
index b582c3d9b..8910b05ef 100644
--- a/src/stdlib/builtin/lv_tlsf.c
+++ b/src/stdlib/builtin/lv_tlsf.c
@@ -1242,4 +1242,4 @@ void * lv_tlsf_realloc(lv_tlsf_t tlsf, void * ptr, size_t size)
return p;
}
-#endif /* LV_USE_BUILTIN_MALLOC */
+#endif /*LV_STDLIB_BUILTIN*/
diff --git a/src/stdlib/builtin/lv_tlsf.h b/src/stdlib/builtin/lv_tlsf.h
index 066dae45e..0fa6decbe 100644
--- a/src/stdlib/builtin/lv_tlsf.h
+++ b/src/stdlib/builtin/lv_tlsf.h
@@ -105,4 +105,4 @@ int lv_tlsf_check_pool(lv_pool_t pool);
#endif /*LV_TLSF_H*/
-#endif /* LV_USE_BUILTIN_MALLOC */
+#endif /*LV_STDLIB_BUILTIN*/
diff --git a/src/stdlib/clib/lv_mem_core_clib.c b/src/stdlib/clib/lv_mem_core_clib.c
index 997c9d0a4..9cdddf4d1 100644
--- a/src/stdlib/clib/lv_mem_core_clib.c
+++ b/src/stdlib/clib/lv_mem_core_clib.c
@@ -91,4 +91,4 @@ lv_result_t lv_mem_test_core(void)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_BUILTIN_MALLOC*/
+#endif /*LV_STDLIB_CLIB*/
diff --git a/src/stdlib/clib/lv_string_clib.c b/src/stdlib/clib/lv_string_clib.c
index 25a2873e7..8d9222245 100644
--- a/src/stdlib/clib/lv_string_clib.c
+++ b/src/stdlib/clib/lv_string_clib.c
@@ -8,12 +8,9 @@
#include "../../lv_conf_internal.h"
#if LV_USE_STDLIB_STRING == LV_STDLIB_CLIB
#include "../lv_string.h"
+#include "../lv_mem.h" /*Need lv_malloc*/
#include <string.h>
-#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
- #include "../lv_mem.h"
-#endif
-
/*********************
* DEFINES
*********************/
@@ -48,6 +45,11 @@ LV_ATTRIBUTE_FAST_MEM void lv_memset(void * dst, uint8_t v, size_t len)
memset(dst, v, len);
}
+LV_ATTRIBUTE_FAST_MEM void * lv_memmove(void * dst, const void * src, size_t len)
+{
+ return memmove(dst, src, len);
+}
+
size_t lv_strlen(const char * str)
{
return strlen(str);
@@ -92,4 +94,4 @@ char * lv_strdup(const char * src)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_BUILTIN_MEMCPY*/
+#endif /*LV_STDLIB_CLIB*/
diff --git a/src/stdlib/lv_string.h b/src/stdlib/lv_string.h
index 063163167..20cda4ecf 100644
--- a/src/stdlib/lv_string.h
+++ b/src/stdlib/lv_string.h
@@ -49,6 +49,15 @@ void * lv_memcpy(void * dst, const void * src, size_t len);
void lv_memset(void * dst, uint8_t v, size_t len);
/**
+ * @brief Move a block of memory from source to destination
+ * @param dst Pointer to the destination array where the content is to be copied.
+ * @param src Pointer to the source of data to be copied.
+ * @param len Number of bytes to copy
+ * @return Pointer to the destination array.
+ */
+void * lv_memmove(void * dst, const void * src, size_t len);
+
+/**
* Same as `memset(dst, 0x00, len)`.
* @param dst pointer to the destination buffer
* @param len number of byte to set
diff --git a/src/stdlib/micropython/lv_mem_core_micropython.c b/src/stdlib/micropython/lv_mem_core_micropython.c
index a55b3be15..69c8bd681 100644
--- a/src/stdlib/micropython/lv_mem_core_micropython.c
+++ b/src/stdlib/micropython/lv_mem_core_micropython.c
@@ -92,4 +92,4 @@ lv_result_t lv_mem_test_core(void)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_BUILTIN_MALLOC*/
+#endif /*LV_STDLIB_MICROPYTHON*/
diff --git a/src/stdlib/rtthread/lv_mem_core_rtthread.c b/src/stdlib/rtthread/lv_mem_core_rtthread.c
index 8e1f6fd26..29a600a6a 100644
--- a/src/stdlib/rtthread/lv_mem_core_rtthread.c
+++ b/src/stdlib/rtthread/lv_mem_core_rtthread.c
@@ -95,4 +95,4 @@ lv_result_t lv_mem_test_core(void)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_STDLIB_MALLOC*/
+#endif /*LV_STDLIB_RTTHREAD*/
diff --git a/src/stdlib/rtthread/lv_sprintf_rtthread.c b/src/stdlib/rtthread/lv_sprintf_rtthread.c
index 835269dd3..721f4fd05 100644
--- a/src/stdlib/rtthread/lv_sprintf_rtthread.c
+++ b/src/stdlib/rtthread/lv_sprintf_rtthread.c
@@ -58,4 +58,4 @@ int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_STDLIB_SPRINTF*/
+#endif /*LV_STDLIB_RTTHREAD*/
diff --git a/src/stdlib/rtthread/lv_string_rtthread.c b/src/stdlib/rtthread/lv_string_rtthread.c
index f425c81e1..02480c74a 100644
--- a/src/stdlib/rtthread/lv_string_rtthread.c
+++ b/src/stdlib/rtthread/lv_string_rtthread.c
@@ -8,12 +8,9 @@
#include "../../lv_conf_internal.h"
#if LV_USE_STDLIB_STRING == LV_STDLIB_RTTHREAD
#include "../lv_string.h"
+#include "../lv_mem.h" /*Need lv_malloc*/
#include <rtthread.h>
-#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
- #include "../lv_mem.h"
-#endif
-
/*********************
* DEFINES
*********************/
@@ -48,6 +45,11 @@ LV_ATTRIBUTE_FAST_MEM void lv_memset(void * dst, uint8_t v, size_t len)
rt_memset(dst, v, len);
}
+LV_ATTRIBUTE_FAST_MEM void * lv_memmove(void * dst, const void * src, size_t len)
+{
+ return rt_memmove(dst, src, len);
+}
+
size_t lv_strlen(const char * str)
{
return rt_strlen(str);
@@ -87,4 +89,4 @@ char * lv_strdup(const char * src)
* STATIC FUNCTIONS
**********************/
-#endif /*LV_USE_STDLIB_STRING*/
+#endif /*LV_STDLIB_RTTHREAD*/