void hmp_drive_mirror(Monitor *mon, const QDict *qdict) { const char *device = qdict_get_str(qdict, "device"); const char *filename = qdict_get_try_str(qdict, "target"); const char *format = qdict_get_try_str(qdict, "format"); int reuse = qdict_get_try_bool(qdict, "reuse", 0); int full = qdict_get_try_bool(qdict, "full", 0); int speed = qdict_get_try_int(qdict, "speed", 0); enum NewImageMode mode; Error *errp = NULL; if (!filename) { error_set(&errp, QERR_MISSING_PARAMETER, "target"); hmp_handle_error(mon, &errp); return; } if (reuse) { mode = NEW_IMAGE_MODE_EXISTING; } else { mode = NEW_IMAGE_MODE_ABSOLUTE_PATHS; } qmp___com_redhat_drive_mirror(device, filename, !!format, format, qdict_haskey(qdict, "speed"), speed, true, full, true, mode, &errp); hmp_handle_error(mon, &errp); }
static void qdict_get_try_int_test(void) { int ret; const int value = 100; const char *key = "int"; QDict *tests_dict = qdict_new(); qdict_put(tests_dict, key, qint_from_int(value)); ret = qdict_get_try_int(tests_dict, key, 0); g_assert(ret == value); QDECREF(tests_dict); }
/* This function is hooked as final emit function, which can verify the correctness. */ static void event_test_emit(test_QAPIEvent event, QDict *d, Error **errp) { QDict *t; int64_t s, ms; /* Verify that we have timestamp, then remove it to compare other fields */ t = qdict_get_qdict(d, "timestamp"); g_assert(t); s = qdict_get_try_int(t, "seconds", -2); ms = qdict_get_try_int(t, "microseconds", -2); if (s == -1) { g_assert(ms == -1); } else { g_assert(s >= 0); g_assert(ms >= 0 && ms <= 999999); } g_assert(qdict_size(t) == 2); qdict_del(d, "timestamp"); g_assert(qdict_cmp_simple(d, test_event_data->expect)); }
static void migrate_check_parameter(QTestState *who, const char *parameter, const char *value) { QDict *rsp, *rsp_return; char *result; rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }"); rsp_return = qdict_get_qdict(rsp, "return"); result = g_strdup_printf("%" PRId64, qdict_get_try_int(rsp_return, parameter, -1)); g_assert_cmpstr(result, ==, value); g_free(result); qobject_unref(rsp); }
static uint64_t get_migration_pass(void) { QDict *rsp, *rsp_return, *rsp_ram; uint64_t result; rsp = return_or_event(qmp("{ 'execute': 'query-migrate' }")); rsp_return = qdict_get_qdict(rsp, "return"); if (!qdict_haskey(rsp_return, "ram")) { /* Still in setup */ result = 0; } else { rsp_ram = qdict_get_qdict(rsp_return, "ram"); result = qdict_get_try_int(rsp_ram, "dirty-sync-count", 0); } QDECREF(rsp); return result; }
static uint64_t get_migration_pass(QTestState *who) { QDict *rsp, *rsp_return, *rsp_ram; uint64_t result; rsp = wait_command(who, "{ 'execute': 'query-migrate' }"); rsp_return = qdict_get_qdict(rsp, "return"); if (!qdict_haskey(rsp_return, "ram")) { /* Still in setup */ result = 0; } else { rsp_ram = qdict_get_qdict(rsp_return, "ram"); result = qdict_get_try_int(rsp_ram, "dirty-sync-count", 0); } qobject_unref(rsp); return result; }
void do_list_dba_task( Monitor* mon, const QDict* qdict ) { const dba_context* ctx; int i, tid = qdict_get_try_int( qdict, "tid", -1 ); monitor_printf( mon, "%8s%8s%12s%12s%12s\t%s -> %s\n", "TaskID", "State", "Taint(Tag)", "Syscall", "Timer", "HostSample", "GuestSample" ); monitor_printf( mon, "===================================================================================================\n" ); // show targeted task if( tid != -1 ) { ctx = dba_get_task_context( tid ); if( ctx == NULL ) return; monitor_printf( mon, "%8d%8s%7s(%3d)%12s%12zu\t%s -> %s\n", tid, (ctx->state == DBA_TASK_BUSY)? "BUSY" : (ctx->state == DBA_TASK_DONE)? "DONE" : "IDLE", (ctx->taint.is_enabled)? "TRUE" : "FALSE", (ctx->taint.is_enabled)? ctx->taint.tag : 0 , (ctx->syscall.is_enabled)? "TRUE" : "FALSE", ctx->sample_timer, ctx->sample_hpath, ctx->sample_gpath ); return; } // enumerate for( i = 0; i < DBA_MAX_TASKS; ++i ) { ctx = dba_get_task_context( i ); if( ctx == NULL ) continue; monitor_printf( mon, "%8d%8s%7s(%3d)%12s%12zu\t%s -> %s\n", i, (ctx->state == DBA_TASK_BUSY)? "BUSY" : (ctx->state == DBA_TASK_DONE)? "DONE" : "IDLE", (ctx->taint.is_enabled)? "TRUE" : "FALSE", (ctx->taint.is_enabled)? ctx->taint.tag : 0 , (ctx->syscall.is_enabled)? "TRUE" : "FALSE", ctx->sample_timer, ctx->sample_hpath, ctx->sample_gpath ); } }
void hmp_info_cmma(Monitor *mon, const QDict *qdict) { S390StAttribState *sas = s390_get_stattrib_device(); S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas); uint64_t addr = qdict_get_int(qdict, "addr"); uint64_t buflen = qdict_get_try_int(qdict, "count", 8); uint8_t *vals; int cx, len; vals = g_try_malloc(buflen); if (!vals) { monitor_printf(mon, "Error: %s\n", strerror(errno)); return; } len = sac->peek_stattr(sas, addr / TARGET_PAGE_SIZE, buflen, vals); if (len < 0) { monitor_printf(mon, "Error: %s", strerror(-len)); goto out; } monitor_printf(mon, " CMMA attributes, " "pages %" PRIu64 "+%d (0x%" PRIx64 "):\n", addr / TARGET_PAGE_SIZE, len, addr & ~TARGET_PAGE_MASK); for (cx = 0; cx < len; cx++) { if (cx % 8 == 7) { monitor_printf(mon, "%02x\n", vals[cx]); } else { monitor_printf(mon, "%02x", vals[cx]); } } monitor_printf(mon, "\n"); out: g_free(vals); }
void hmp_panda_unload_plugin(Monitor *mon, const QDict *qdict) { Error *err; const int index = qdict_get_try_int(qdict, "index", -1); qmp_unload_plugin(index, &err); }