Something went wrong. Try again.
A modern, network-enabled music player platform built on Rockbox technology. rockboxd.tsiry-sandratraina.com
rust deno navidrome airplay libadwaita zig mpris snapcast mpd rockbox audio subsonic
Something went wrong. Try again.
2.6 kB · 94 lines
Lua
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495--[[ __________ __ ___. Open \______ \ ____ ____ | | _\_ |__ _______ ___ Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ \/ \/ \/ \/ \/ Example Lua Memory Use Copyright (C) 2020 William Wilgus This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.]]--
local a = {}local b = {}loops = 1 --globallocal last_btn = 1
local ret = ""local status = truelocal depth = rb.LCD_DEPTHif depth < 8 then depth = 8 endlocal used, allocd, free = rb.mem_stats()local alloc_sz = (free / (depth / 8)) / 1024
local function alloc_tables(loops) for i=1,loops do a[i] = {{tostring(loops * i) .. " mem test"}}; b[i] = {} end b[1] = rb.new_image(loops, alloc_sz);end
local function alloc_tables_sm(loops) for i=1,loops do b[i] = {{}}; end local btn = rb.button_get(false) if (btn ~= 0) then if last_btn ~= btn then last_btn = btn return false; end while rb.button_get(false) ~= 0 do
end ret = "User Abort" status = false return true end return falseend
rb.lcd_putsxy(0, 0, "memchk loops : ")while (status and loops < 1000)do rb.lcd_putsxy(0, 20, loops) rb.lcd_update()
if alloc_tables_sm(loops) then break end -- do call protected to catch OOM condition status, ret = pcall(alloc_tables, loops * 1000) loops = loops + 1 _G.loops = loops rb.yield()end
used, allocd, free = rb.mem_stats()local lu = collectgarbage("count")local fmt = function(t, v) return string.format("%s: %d Kb\n", t, v /1024) end
-- this is how lua recommends to concat strings rather than ..local s_t = {}s_t[1] = "rockbox:\n"s_t[2] = "Loops : "s_t[3] = loops - 1s_t[4] = "\n"if not status == true then s_t[5] = ret
else s_t[4] = "" s_t[5] = ""ends_t[6] = "\n"s_t[7] = fmt("Used ", used)s_t[8] = fmt("Allocd ", allocd)s_t[9] = fmt("Free ", free)s_t[10] = "\nlua:\n"s_t[11] = fmt("Used", lu * 1024)s_t[12] = "\n\nNote that the rockbox used count is a high watermark\n"rb.splash_scroller(10 * rb.HZ, table.concat(s_t))