Lines Matching defs:objsize

325  * \param objsize       For variable-sized objects, size multiplier
333 static size_t caps_max_numobjs(enum objtype type, gensize_t srcsize, gensize_t objsize)
340 if (objsize > srcsize) {
343 return srcsize / objsize;
347 if (srcsize < OBJSIZE_L2CNODE || objsize < OBJSIZE_L2CNODE) {
351 return srcsize / objsize;
355 if (srcsize < OBJSIZE_L2CNODE || objsize != OBJSIZE_L2CNODE) {
356 // disallow L2 CNode creation if source too small or objsize wrong
359 return srcsize / objsize;
443 gensize_t objsize, size_t count)
462 (size_t)objsize * count, lpaddr);
464 memset((void*)lvaddr, 0, objsize * count);
471 type == ObjType_L1CNode ? 1 : 2, (size_t)objsize * count,
474 memset((void*)lvaddr, 0, objsize * count);
491 // objsize is size of VNode; but not given as such
492 objsize = vnode_objsize(type);
494 (size_t)objsize * count, lpaddr);
496 memset((void*)lvaddr, 0, objsize * count);
518 (size_t)objsize * count, lpaddr, (int)type);
530 * area, based at 'addr' and of size 'objsize'. For each created kernel
534 * that case, 'objsize' should be non-zero. and give the size multiplier. *
539 * \param objsize For variable-sized objects, size in bytes.
541 * (count <= caps_max_numobjs(type, size, objsize))
551 gensize_t objsize, size_t count, coreid_t owner,
561 // objsize is 0 for non-sized types (e.g. VNodes)
563 //assert(objsize % BASE_PAGE_SIZE == 0);
569 ", %" PRIuGENSIZE " bytes, objsize=%"PRIuGENSIZE
571 genpaddr, size, objsize, count, (int)owner, (int)type);
594 err = caps_zero_objects(type, lpaddr, objsize, count);
608 temp_cap.u.frame.base = genpaddr + dest_i * objsize;
609 temp_cap.u.frame.bytes = objsize;
622 temp_cap.u.physaddr.base = genpaddr + dest_i * objsize;
623 temp_cap.u.physaddr.bytes = objsize;
635 temp_cap.u.ram.base = genpaddr + dest_i * objsize;
636 temp_cap.u.ram.bytes = objsize;
648 temp_cap.u.devframe.base = genpaddr + dest_i * objsize;
649 temp_cap.u.devframe.bytes = objsize;
660 assert(objsize >= OBJSIZE_L2CNODE);
661 assert(objsize % OBJSIZE_L2CNODE == 0);
662 temp_cap.u.l1cnode.cnode = lpaddr + dest_i * objsize;
663 temp_cap.u.l1cnode.allocated_bytes = objsize;
675 temp_cap.u.l2cnode.cnode = lpaddr + dest_i * objsize;
963 assert(objsize == 0);
983 assert(objsize == 0);
1020 assert(objsize == 0);
1296 size_t bytes, size_t objsize,
1310 /* objsize > 0 and not multiple of BASE_PAGE_SIZE */
1311 if (objsize > 0 && objsize & base_mask) {
1316 /* check that bytes can be evenly divided into objsize sized chunks */
1317 if (exact && bytes > 0 && objsize > 0) {
1318 if (bytes % objsize) {
1321 return bytes % objsize == 0;
1329 if (bytes < OBJSIZE_L2CNODE || objsize < OBJSIZE_L2CNODE) {
1330 debug(SUBSYS_CAPS, "source size or L1 CNode objsize < OBJSIZE_L2CNODE\n");
1333 /* check that bytes can be evenly divided into L1 CNodes of objsize */
1334 if (exact && (bytes % objsize != 0)) {
1335 debug(SUBSYS_CAPS, "source not evenly divisible into L1 CNodes of objsize\n");
1339 return objsize % (1UL << OBJBITS_CTE) == 0;
1344 if (bytes < OBJSIZE_L2CNODE || objsize != OBJSIZE_L2CNODE) {
1345 debug(SUBSYS_CAPS, "source size < or L2 CNode objsize != OBJSIZE_L2CNODE\n");
1348 if (exact && (bytes % objsize != 0)) {
1349 debug(SUBSYS_CAPS, "source not evenly divisible into L2 CNodes of objsize\n");
1360 if (objsize > 0 && objsize != OBJSIZE_DISPATCHER) {
1380 size_t objsize, coreid_t owner, struct cte *caps)
1386 ", bytes=%zu, objsize=%zu\n", type, addr, bytes, objsize);
1388 assert(check_caps_create_arguments(type, bytes, objsize, false));
1389 assert(addr == 0 || check_caps_create_arguments(type, bytes, objsize, true));
1391 size_t numobjs = caps_max_numobjs(type, bytes, objsize);
1400 errval_t err = caps_create(type, addr, bytes, objsize, numobjs, owner, caps);
1418 errval_t caps_retype(enum objtype type, gensize_t objsize, size_t count,
1439 ", objsize=%" PRIuGENSIZE ", count=%zu\n",
1440 __FUNCTION__, type, offset, objsize, count);
1462 if (type_is_mappable(type) && objsize % base_size != 0) {
1463 debug(SUBSYS_CAPS, "%s: objsize = %"PRIuGENSIZE"\n", __FUNCTION__, objsize);
1466 else if (type == ObjType_L1CNode && objsize % OBJSIZE_L2CNODE != 0)
1468 printk(LOG_WARN, "%s: CNode: objsize = %" PRIuGENSIZE "\n", __FUNCTION__, objsize);
1471 else if (type == ObjType_L2CNode && objsize != OBJSIZE_L2CNODE)
1473 printk(LOG_WARN, "%s: L2CNode: objsize = %"PRIuGENSIZE"\n", __FUNCTION__, objsize);
1476 assert((type_is_mappable(type) && objsize % base_size == 0) ||
1477 (type == ObjType_L1CNode && objsize % OBJSIZE_L2CNODE == 0 &&
1478 objsize >= OBJSIZE_L2CNODE) ||
1479 (type == ObjType_L2CNode && objsize == OBJSIZE_L2CNODE) ||
1522 maxobjs = caps_max_numobjs(type, get_size(src_cap), objsize);
1547 if (offset + count * objsize > get_size(src_cap)) {
1550 count, objsize, offset);
1561 err = mdb_find_range(get_type_root(src_cap->type), base, objsize * count,
1576 __FUNCTION__, base, base+objsize*count);
1589 get_address(&found_cte->cap) < base+objsize*count);
1638 uint64_t vec_end_new = objsize;
1671 err = caps_create(type, base, size, objsize, count, my_core_id, dest_cte);
1688 if (count == 1 && objsize == get_size(src_cap) && type == src_cap->type) {