Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
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;
}