Example #1
0
void do_info_cyclecount(Monitor *mon, QObject **ret_data)
{
	QDict *qdict;
	QObject *obj;

	qdict = qdict_new();
	obj = qobject_from_jsonf(" { 'instruction_class_idx' : 1 , "
								"'cycle_count': %" PRId64 " }" , total_data_proc_cycle_count);

	qdict_put_obj(qdict, "1", obj);
	
	obj = qobject_from_jsonf(" { 'instruction_class_idx' : 2 , "
								"'cycle_count': %" PRId64 " }" , total_branch_cycle_count);

	qdict_put_obj(qdict, "2", obj);

	obj = qobject_from_jsonf(" { 'instruction_class_idx' : 3 , "
								"'cycle_count': %" PRId64 " }" , total_multiply_cycle_count);

	qdict_put_obj(qdict, "3", obj);
	
	obj = qobject_from_jsonf(" { 'instruction_class_idx' : 4 , "
								"'cycle_count': %" PRId64 " }" , total_ldst_cycle_count);

	qdict_put_obj(qdict, "4", obj);
	
	obj = qobject_from_jsonf(" { 'instruction_class_idx' : 5 , "
								"'cycle_count': %" PRId64 " }" , total_misc_cycle_count);

	qdict_put_obj(qdict, "5", obj);
	
	*ret_data = QOBJECT(qdict);

}
Example #2
0
void do_info_migrate(Monitor *mon, QObject **ret_data)
{
    QDict *qdict;
    MigrationState *s = current_migration;

    if (s) {
        switch (s->get_status(s)) {
        case MIG_STATE_ACTIVE:
            qdict = qdict_new();
            qdict_put(qdict, "status", qstring_from_str("active"));

            migrate_put_status(qdict, "ram", ram_bytes_transferred(),
                               ram_bytes_remaining(), ram_bytes_total());

            if (blk_mig_active()) {
                migrate_put_status(qdict, "disk", blk_mig_bytes_transferred(),
                                   blk_mig_bytes_remaining(),
                                   blk_mig_bytes_total());
            }

            *ret_data = QOBJECT(qdict);
            break;
        case MIG_STATE_COMPLETED:
            *ret_data = qobject_from_jsonf("{ 'status': 'completed' }");
            break;
        case MIG_STATE_ERROR:
            *ret_data = qobject_from_jsonf("{ 'status': 'failed' }");
            break;
        case MIG_STATE_CANCELLED:
            *ret_data = qobject_from_jsonf("{ 'status': 'cancelled' }");
            break;
        }
    }
}
Example #3
0
static void panicked_mon_event(const char *action)
{
    QObject *data;

    data = qobject_from_jsonf("{ 'action': %s }", action);
    monitor_protocol_event(QEVENT_GUEST_PANICKED, data);
    qobject_decref(data);
}
Example #4
0
static int process_cpu_info(QemuHttpConnection *conn) {
    CPUState *env;
    QList *cpu_list;
    int i;

    cpu_list = qlist_new();

    for (env = first_cpu; env != NULL; env = env->next_cpu) {
        QDict *cpu;
        QObject *obj;

        obj = qobject_from_jsonf("{ 'CPU': %d }", env->cpu_index);

        cpu = qobject_to_qdict(obj);

        qdict_put(cpu, "eip", qint_from_int(env->eip + env->segs[R_CS].base));
        qdict_put(cpu, "eax", qint_from_int(EAX));
        qdict_put(cpu, "ebx", qint_from_int(EBX));
        qdict_put(cpu, "ecx", qint_from_int(ECX));
        qdict_put(cpu, "edx", qint_from_int(EDX));
        qdict_put(cpu, "esp", qint_from_int(ESP));
        qdict_put(cpu, "ebp", qint_from_int(EBP));
        qdict_put(cpu, "esi", qint_from_int(ESI));
        qdict_put(cpu, "edi", qint_from_int(EDI));

        qdict_put(cpu, "dt", qint_from_int(dev_time));
        qdict_put(cpu, "qt", qint_from_int(qemu_time));

#ifdef CONFIG_PROFILER
        qdict_put(cpu, "tb_count", qint_from_int(tcg_ctx.tb_count));
        qdict_put(cpu, "tb_count1", qint_from_int(tcg_ctx.tb_count1));
        qdict_put(cpu, "op_count", qint_from_int(tcg_ctx.op_count));
        qdict_put(cpu, "op_count_max", qint_from_int(tcg_ctx.op_count_max));
        qdict_put(cpu, "temp_count", qint_from_int(tcg_ctx.temp_count));
        qdict_put(cpu, "temp_count_max", qint_from_int(tcg_ctx.temp_count_max));
        qdict_put(cpu, "del_op_count", qint_from_int(tcg_ctx.del_op_count));
        qdict_put(cpu, "code_in_len", qint_from_int(tcg_ctx.code_in_len));
        qdict_put(cpu, "code_out_len", qint_from_int(tcg_ctx.code_out_len));
        qdict_put(cpu, "interm_time", qint_from_int(tcg_ctx.interm_time));
        qdict_put(cpu, "code_time", qint_from_int(tcg_ctx.code_time));
        qdict_put(cpu, "la_time", qint_from_int(tcg_ctx.la_time));
        qdict_put(cpu, "restore_count", qint_from_int(tcg_ctx.restore_count));
        qdict_put(cpu, "restore_time", qint_from_int(tcg_ctx.restore_time));

        for (i = INDEX_op_end; i < NB_OPS; i++) {
            qdict_put(cpu, tcg_op_defs[i].name, qint_from_int(tcg_table_op_count[i]));
        }
#endif

        qlist_append(cpu_list, cpu);
    }

    int st = 0;
    st = respond_with_json(conn, QOBJECT(cpu_list));
    qobject_decref(QOBJECT(cpu_list));

    return st;
}
Example #5
0
static void migrate_put_status(QDict *qdict, const char *name,
                               uint64_t trans, uint64_t rem, uint64_t total)
{
    QObject *obj;

    obj = qobject_from_jsonf("{ 'transferred': %" PRId64 ", "
                               "'remaining': %" PRId64 ", "
                               "'total': %" PRId64 " }", trans, rem, total);
    qdict_put_obj(qdict, name, obj);
}
Example #6
0
void do_info_energy(Monitor *mon, QObject **ret_data)
{
	QDict *qdict;
	QObject *obj;
	struct energy_counter s;
	uint64_t dynamic_energy, leakage_energy;
	calculate_active_energy(&s);
	calculate_sleep_energy(&s);
	dynamic_energy = s.data_proc_energy + s.branch_energy +  s.multiply_energy + s.ldst_energy + s.misc_energy;
	leakage_energy = s.sleep_energy;
	qdict = qdict_new();
	obj = qobject_from_jsonf(" { 'ENERGY_TYPE' : 'DYNAMIC' , "
								"'value': %" PRId64 " }" , dynamic_energy);
	qdict_put_obj(qdict, "1", obj);
	obj = qobject_from_jsonf(" { 'ENERGY_TYPE' : 'LEAKAGE' , "
								"'value': %" PRId64 " }" , leakage_energy);
	qdict_put_obj(qdict, "2", obj);
	*ret_data = QOBJECT(qdict);	
}
Example #7
0
QObject *qobject_from_block_job(BlockJob *job)
{
    return qobject_from_jsonf("{ 'type': %s,"
                              "'device': %s,"
                              "'len': %" PRId64 ","
                              "'offset': %" PRId64 ","
                              "'speed': %" PRId64 " }",
                              BlockJobType_lookup[job->driver->job_type],
                              bdrv_get_device_name(job->bs),
                              job->len,
                              job->offset,
                              job->speed);
}
Example #8
0
QObject *qmp_build_error_object(Error *err)
{
    return qobject_from_jsonf("{ 'class': %s, 'desc': %s }",
                              ErrorClass_lookup[error_get_class(err)],
                              error_get_pretty(err));
}