Ejemplo n.º 1
0
bool runTest(int * line, const char ** file) {
    bool tests_pass = true;

    do {
        uintptr_t init_sbrk_ptr = (uintptr_t)mbed_sbrk(0);
        uintptr_t ptr;
        ptr = (uintptr_t) mbed_sbrk(TEST_SMALL);
        if(!CHECK_EQ(ptr, (uintptr_t) init_sbrk_ptr, tests_pass, *file, *line)) {
            break;
        }

        ptr = (uintptr_t) mbed_sbrk(TEST_SMALL);
        if(!CHECK_EQ(ptr, init_sbrk_ptr + TEST_SMALL, tests_pass, *file, *line)) {
            break;
        }

        ptr = (uintptr_t) mbed_krbs(TEST_SMALL);
        if(!CHECK_EQ(ptr, (uintptr_t) &__mbed_krbs_start - TEST_SMALL, tests_pass, *file, *line)) {
            break;
        }
        if(!CHECK_EQ(mbed_sbrk_diff, (ptrdiff_t)&__heap_size - 3*TEST_SMALL - (init_sbrk_ptr - (uintptr_t)&__mbed_sbrk_start), tests_pass, *file, *line)) {
            break;
        }


        // Test small increments
        for (unsigned int i = 0; tests_pass && i < TEST_SMALL; i++) {
            ptr = (uintptr_t) mbed_krbs(i);
            if(!CHECK_EQ(0, ptr & (TEST_SMALL - 1), tests_pass, *file, *line)) {
                break;
            }
        }
        for (unsigned int i = 0; tests_pass && i < TEST_SMALL; i++) {
            ptr = (uintptr_t) mbed_sbrk(i);
            if(!CHECK_EQ(0, (uintptr_t) mbed_sbrk_ptr & (TEST_SMALL - 1), tests_pass, *file, *line)) {
                break;
            }
        }

        // Allocate a big block
        ptr = (uintptr_t) mbed_sbrk((ptrdiff_t)&__heap_size);
        if(!CHECK_EQ((intptr_t)ptr, -1, tests_pass, *file, *line)) {
            break;
        }

        ptr = (uintptr_t) mbed_krbs((ptrdiff_t)&__heap_size);
        if(!CHECK_EQ((intptr_t)ptr, -1, tests_pass, *file, *line)) {
            break;
        }

        break;

    } while (0);
    return tests_pass;
}
Ejemplo n.º 2
0
void * __wrap__sbrk_r(struct _reent *r, ptrdiff_t size) {
    (void) r;
    return mbed_sbrk(size);
}