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); }
/** * 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); }