static void check_imagergba( Telem* elem ) { int i, w, h, size; if (!verify_nparams( 2, -1, elem )) return; param_number( elem->params, 1 ); param_number( elem->params, 2 ); w = atoi( elem->params[0]->data.name ); h = atoi( elem->params[1]->data.name ); size = w*h*4; if (!verify_nparams( size+2, size+2, elem )) return; for (i=0; i<size; i++) param_number( elem->params, i+3 ); elem->data.image.w = w; elem->data.image.h = h; }
static struct rman fds; static struct rman memblks; static struct rman unmapped; static void hier_init(const char *, int); static void hier_extend(int, int); static int memblk_init(struct rman *); static int memblk_init(struct rman *rman __unused) { void *addr; size_t len; u_int pgcnt; pgcnt = param_number("memblk-page-count"); while (pgcnt > 0) { /* * Allow up to memblk-max-size pages in a memory block, clamp to * pgcnt. */ len = (random() % param_number("memblk-max-size")) + 1; if (len > pgcnt) len = pgcnt; pgcnt -= len; len *= getpagesize(); addr = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_ANON, -1, 0); if (addr == NULL) err(1, "mmap"); if (random() % 2 == 0)