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); }
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; } } }
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); }
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; }
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); }
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); }
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); }
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)); }