static void insert_line_router(Node *node, ChassisList *chassislist) { int i = get_line_index(node); if (chassislist->linenode[i]) return; /* already filled slot */ chassislist->linenode[i] = node; node->chrecord->chassisnum = chassislist->chassisnum; }
static int insert_line_router(ibnd_node_t * node, ibnd_chassis_t * chassis) { int i = get_line_index(node); if (i < 0) return i; if (chassis->linenode[i]) return 0; /* already filled slot */ chassis->linenode[i] = node; node->chassis = chassis; return 0; }
cache_set* cache_get_line_index(Cache *cache, int addr, size_t *set_i, size_t *line_i) { size_t set_index; int tag; if (cache->assoc == DIRECT) { set_index = extract_set_index(cache, addr); tag = extract_tag(cache, addr); } else if (cache->assoc == FULL_ASSOC) { set_index = 0; tag = extract_tag(cache, addr); } else { // n-assoc set_index = extract_set_index(cache, addr); tag = extract_tag(cache, addr); } cache_set *cur_set = cache->sets[set_index]; size_t line_index = get_line_index(cur_set, tag); *set_i = set_index; *line_i = line_index; return cur_set; }