int all_zero(int *p, int len)
{
    IN;
    int ix = 0;
    for (ix = 0; ix < len; ix ++)
    {
        if (p[ix])
        {
            P("[%d]=%d\n", ix, p[ix]);
            return R_I(1);
        }
    }
    return R_I(0);
}
int test_new() {
    IN;
    int *p;
    p = NEW(int);
    int res = NOT_I(all_zero(p, 1),==,0);
    FREE(p);
    res |= NOT_I(p,==,NULL);
    p = NEWN(int, 8000);
    res |= NOT_I(all_zero(p, 8000),==,0);
    FREE(p);
    p = NEWN(int, 1000000);
    res |= NOT_I(all_zero(p, 1000000),==,0);
    FREE(p);
    return R_I(res);
}
Beispiel #3
0
/**
 * This verifies if a range of memory at a given address was
 * filled up using the start value.
 *
 * @author a0194118 (9/6/2009)
 *
 * @param start   start value
 * @param block   pointer to block info strucure
 *
 * @return 0 on success, non-0 error value on failure
 */
int check_mem(uint16_t start, MemAllocBlock *block)
{
    IN;
    uint16_t *ptr = (uint16_t *)block->ptr, delta = 1, step = 1;
    bytes_t height, width, stride, r, i;
    if (block->pixelFormat == PIXEL_FMT_PAGE)
    {
        height = 1;
        stride = width = block->dim.len;
    }
    else
    {
        height = block->dim.area.height;
        width = block->dim.area.width;
        stride = block->stride;
    }
    width *= def_bpp(block->pixelFormat);

    CHK_I(width,<=,stride);
    uint32_t *ptr32 = (uint32_t *)ptr;
    for (r = 0; r < height; r++)
    {
        if (block->pixelFormat == PIXEL_FMT_32BIT)
        {
            for (i = 0; i < width; i += sizeof(uint32_t))
            {
                uint32_t val = (start & 0xFFFF) | (((uint32_t)(start + delta) & 0xFFFF) << 16);
                if (*ptr32++ != val) {
                    DP("assert: val[%u,%u] (=0x%x) != 0x%x", r, i, *--ptr32, val);
                    return R_I(MEMMGR_ERR_GENERIC);
                }
                start += delta;
                delta += step;
                /* increase step if overflown */
                if (delta < step) delta = ++step;
                start += delta;
                delta += step;
                /* increase step if overflown */
                if (delta < step) delta = ++step;
            }
#ifdef __WRITE_IN_STRIDE__
            while (i < stride && ((r < height - 1) || ((PAGE_SIZE - 1) & (uint32_t)ptr32)))
            {
                if (*ptr32++) {
                    DP("assert: val[%u,%u] (=0x%x) != 0", r, i, *--ptr32);
                    return R_I(MEMMGR_ERR_GENERIC);
                }
                i += sizeof(uint32_t);
            }
#else
            ptr32 += (stride - i) / sizeof(uint32_t);
#endif
        }
        else
        {
            for (i = 0; i < width; i += sizeof(uint16_t))
            {
                if (*ptr++ != start) {
                    DP("assert: val[%u,%u] (=0x%x) != 0x%x", r, i, *--ptr, start);
                    return R_I(MEMMGR_ERR_GENERIC);
                }
                start += delta;
                delta += step;
                /* increase step if overflown */
                if (delta < step) delta = ++step;
            }
#ifdef __WRITE_IN_STRIDE__
            while (i < stride && ((r < height - 1) || ((PAGE_SIZE - 1) & (uint32_t)ptr)))
            {
                if (*ptr++) {
                    DP("assert: val[%u,%u] (=0x%x) != 0", r, i, *--ptr);
                    return R_I(MEMMGR_ERR_GENERIC);
                }
                i += sizeof(uint16_t);
            }
#else
            ptr += (stride - i) / sizeof(uint16_t);
#endif
        }
    }
    return R_I(MEMMGR_ERR_NONE);
}