size_t infra_sizefunc(void* k, void* ATTR_UNUSED(d)) { struct infra_key* key = (struct infra_key*)k; return sizeof(*key) + sizeof(struct infra_data) + key->namelen + lock_get_mem(&key->entry.lock); }
size_t ub_rrset_sizefunc(void* key, void* data) { struct ub_packed_rrset_key* k = (struct ub_packed_rrset_key*)key; struct packed_rrset_data* d = (struct packed_rrset_data*)data; size_t s = sizeof(struct ub_packed_rrset_key) + k->rk.dname_len; s += packed_rrset_sizeof(d) + lock_get_mem(&k->entry.lock); return s; }
size_t msgreply_sizefunc(void* k, void* d) { struct msgreply_entry* q = (struct msgreply_entry*)k; struct reply_info* r = (struct reply_info*)d; size_t s = sizeof(struct msgreply_entry) + sizeof(struct reply_info) + q->key.qname_len + lock_get_mem(&q->entry.lock) - sizeof(struct rrset_ref); s += r->rrset_count * sizeof(struct rrset_ref); s += r->rrset_count * sizeof(struct ub_packed_rrset_key*); return s; }
size_t alloc_get_mem(struct alloc_cache* alloc) { alloc_special_type* p; size_t s = sizeof(*alloc); if(!alloc->super) { lock_quick_lock(&alloc->lock); /* superalloc needs locking */ } s += sizeof(alloc_special_type) * alloc->num_quar; for(p = alloc->quar; p; p = alloc_special_next(p)) { s += lock_get_mem(&p->entry.lock); } s += alloc->num_reg_blocks * ALLOC_REG_SIZE; if(!alloc->super) { lock_quick_unlock(&alloc->lock); } return s; }