void collectData(uint None, uint Unused)
{
	/*
#if(DEBUG_LEVEL>0)
	if(sv->p2p_addr==0)
		io_printf(IO_STD, "trig!\n");
#endif
*/
	// convert from phys to virt cpu
	for(uint i=0; i<18; i++) {
		virt_cpu = sv->p2v_map[i];	// the the virtual cpu id
		virt_cpu_idle_cntr[virt_cpu] = stored_cpu_idle_cntr[i];
	}
	sark_mem_cpy((void *)&reportMsg.cmd_rc, (void *)&myProfile, sizeof(pro_info_t));
	//sark_mem_cpy((void *)reportMsg.data, (void *)stored_cpu_idle_cntr, 18);
	sark_mem_cpy((void *)reportMsg.data, (void *)virt_cpu_idle_cntr, 18);
#if(DEBUG_LEVEL>2)
	if(sv->p2p_addr==0) {
		if(streaming==FALSE)
			io_printf(IO_STD, "no streaming!\n");
		else
			io_printf(IO_STD, "do streaming!\n");
	}
	return;
#endif

	if(streaming==FALSE) return;
/*
#if(DEBUG_LEVEL>0)
	io_printf(IO_BUF, "Send!\n");
	return;
#endif
*/
	spin1_send_sdp_msg (&reportMsg, DEF_TIMEOUT);
}
Beispiel #2
0
address_t append(address_t* address, void* data, size_t size_bytes){
    try(address && data && size_bytes);

    address_t old_addr = *address;

    sark_mem_cpy(*address, data, size_bytes);
    *address += (size_bytes+3) >> 2;

    return old_addr;
}

size_t put(address_t* addr, info_t info, void* k, void* v){

    size_t k_size = k_size_from_info(info);
    size_t v_size = v_size_from_info(info);

    try(k_size && v_size && k && v);

    append(addr, &info, sizeof(info_t));
    append(addr, k,     k_size);
    append(addr, v,     v_size);

    return sizeof(info_t) +
           MULTIPLE_OF_4(k_size) +
           MULTIPLE_OF_4(v_size);
}