diff options
-rw-r--r-- | firmware/test/buflib/Makefile | 3 | ||||
-rw-r--r-- | firmware/test/buflib/test_max.c | 75 |
2 files changed, 77 insertions, 1 deletions
diff --git a/firmware/test/buflib/Makefile b/firmware/test/buflib/Makefile index 9349c05206..247937b552 100644 --- a/firmware/test/buflib/Makefile +++ b/firmware/test/buflib/Makefile @@ -11,7 +11,8 @@ LDFLAGS += -L. -lpthread TARGETS_OBJ = test_main.o \ test_main2.o \ test_move.o \ - test_move2.o + test_move2.o \ + test_max.o TARGETS = $(TARGETS_OBJ:.o=) diff --git a/firmware/test/buflib/test_max.c b/firmware/test/buflib/test_max.c new file mode 100644 index 0000000000..5378fcf6bd --- /dev/null +++ b/firmware/test/buflib/test_max.c @@ -0,0 +1,75 @@ +/*************************************************************************** +* __________ __ ___. +* Open \______ \ ____ ____ | | _\_ |__ _______ ___ +* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +* \/ \/ \/ \/ \/ +* $Id$ +* +* Copyright (C) 2011 Thomas Martitz +* +* 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. +* +****************************************************************************/ +#include <stdio.h> +#include "core_alloc.h" +#include "util.h" + + +/* + * Expected output (64bit): +------------------- +get_all(1): 0x6027a0 + 0x6027c8 + 6424 +get_all(1): 0x6027a0 + 0x6027c8 + 3232 +get_all(1): 0x6027a0 + 0x6027c8 + 3232 +dont freeze(2): 0x603440 + 0x603470 + 152 +0x6027a0: val: 404 (get_all) +0x603440: val: 19 (dont freeze) +------------------- +*/ +struct buflib_callbacks ops; +int main(void) +{ + UT_core_allocator_init(); + size_t size; + int handle = core_alloc_maximum("get_all", &size, &ops); + + if (handle <= 0) + printf("core_alloc_maximum error\n"); + int handle2; + + core_print_allocs(&print_simple); + + /* this should freeze */ + // core_alloc("freeze", 100); + core_shrink(handle, core_get_data(handle), size/2); + + core_print_allocs(&print_simple); + + /* this should not freeze anymore */ + handle2 = core_alloc("dont freeze", 100); + if (handle2 <= 0) + printf("handle 2 failed!\n"); + + core_print_allocs(&print_simple); + core_print_blocks(&print_simple); + + core_free(handle); + core_free(handle2); + return 0; +} |