mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-23 15:56:59 +08:00
feat(sysmon): show max memory usage (#5661)
This commit is contained in:
committed by
GitHub
parent
09ff66b3a4
commit
84f72db6d9
@@ -271,10 +271,13 @@ static void mem_observer_cb(lv_observer_t * observer, lv_subject_t * subject)
|
||||
uint32_t used_size = mon->total_size - mon->free_size;;
|
||||
uint32_t used_kb = used_size / 1024;
|
||||
uint32_t used_kb_tenth = (used_size - (used_kb * 1024)) / 102;
|
||||
uint32_t max_used_kb = mon->max_used / 1024;
|
||||
uint32_t max_used_kb_tenth = (mon->max_used - (max_used_kb * 1024)) / 102;
|
||||
lv_label_set_text_fmt(label,
|
||||
"%"LV_PRIu32 ".%"LV_PRIu32 " kB, %d%%\n"
|
||||
"%d%% frag.",
|
||||
"%"LV_PRIu32 ".%"LV_PRIu32 " kB (%d%%)\n"
|
||||
"%"LV_PRIu32 ".%"LV_PRIu32 " kB max, %d%% frag.",
|
||||
used_kb, used_kb_tenth, mon->used_pct,
|
||||
max_used_kb, max_used_kb_tenth,
|
||||
mon->frag_pct);
|
||||
}
|
||||
|
||||
|
||||
@@ -141,10 +141,13 @@ void * lv_malloc_core(size_t size)
|
||||
#if LV_USE_OS
|
||||
lv_mutex_lock(&state.mutex);
|
||||
#endif
|
||||
state.cur_used += size;
|
||||
state.max_used = LV_MAX(state.cur_used, state.max_used);
|
||||
void * p = lv_tlsf_malloc(state.tlsf, size);
|
||||
|
||||
if(p) {
|
||||
state.cur_used += lv_tlsf_block_size(p);
|
||||
state.max_used = LV_MAX(state.cur_used, state.max_used);
|
||||
}
|
||||
|
||||
#if LV_USE_OS
|
||||
lv_mutex_unlock(&state.mutex);
|
||||
#endif
|
||||
@@ -157,8 +160,14 @@ void * lv_realloc_core(void * p, size_t new_size)
|
||||
lv_mutex_lock(&state.mutex);
|
||||
#endif
|
||||
|
||||
size_t old_size = lv_tlsf_block_size(p);
|
||||
void * p_new = lv_tlsf_realloc(state.tlsf, p, new_size);
|
||||
|
||||
if(p_new) {
|
||||
state.cur_used -= old_size;
|
||||
state.cur_used += lv_tlsf_block_size(p_new);
|
||||
state.max_used = LV_MAX(state.cur_used, state.max_used);
|
||||
}
|
||||
#if LV_USE_OS
|
||||
lv_mutex_unlock(&state.mutex);
|
||||
#endif
|
||||
@@ -175,7 +184,8 @@ void lv_free_core(void * p)
|
||||
#if LV_MEM_ADD_JUNK
|
||||
lv_memset(p, 0xbb, lv_tlsf_block_size(data));
|
||||
#endif
|
||||
size_t size = lv_tlsf_free(state.tlsf, p);
|
||||
size_t size = lv_tlsf_block_size(p);
|
||||
lv_tlsf_free(state.tlsf, p);
|
||||
if(state.cur_used > size) state.cur_used -= size;
|
||||
else state.cur_used = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user