* [Qemu-devel] [PATCH v2 1/6] monitor: Don't check for mon_get_cpu() failure
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-26 21:34 ` Anthony Liguori
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 2/6] QError: New QERR_OPEN_FILE_FAILED Markus Armbruster
` (5 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
mon_get_cpu() can't return null pointer, because it passes its return
value to cpu_synchronize_state() first, which crashes if its argument
is null.
Remove the (pretty cheesy) handling of this non-existing error.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
monitor.c | 39 +++------------------------------------
1 files changed, 3 insertions(+), 36 deletions(-)
diff --git a/monitor.c b/monitor.c
index 938eb3b..c22901f 100644
--- a/monitor.c
+++ b/monitor.c
@@ -693,8 +693,6 @@ static void do_info_registers(Monitor *mon)
{
CPUState *env;
env = mon_get_cpu();
- if (!env)
- return;
#ifdef TARGET_I386
cpu_dump_state(env, (FILE *)mon, monitor_fprintf,
X86_DUMP_FPU);
@@ -1128,7 +1126,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
int flags;
flags = 0;
env = mon_get_cpu();
- if (!env && !is_physical)
+ if (!is_physical)
return;
#ifdef TARGET_I386
if (wsize == 2) {
@@ -1190,8 +1188,6 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
cpu_physical_memory_rw(addr, buf, l, 0);
} else {
env = mon_get_cpu();
- if (!env)
- break;
if (cpu_memory_rw_debug(env, addr, buf, l, 0) < 0) {
monitor_printf(mon, " Cannot access memory\n");
break;
@@ -1318,8 +1314,6 @@ static void do_memory_save(Monitor *mon, const QDict *qdict, QObject **ret_data)
uint8_t buf[1024];
env = mon_get_cpu();
- if (!env)
- return;
f = fopen(filename, "wb");
if (!f) {
@@ -1754,8 +1748,6 @@ static void tlb_info(Monitor *mon)
uint32_t pgd, pde, pte;
env = mon_get_cpu();
- if (!env)
- return;
if (!(env->cr[0] & CR0_PG_MASK)) {
monitor_printf(mon, "PG disabled\n");
@@ -1812,8 +1804,6 @@ static void mem_info(Monitor *mon)
uint32_t pgd, pde, pte, start, end;
env = mon_get_cpu();
- if (!env)
- return;
if (!(env->cr[0] & CR0_PG_MASK)) {
monitor_printf(mon, "PG disabled\n");
@@ -2659,8 +2649,6 @@ typedef struct MonitorDef {
static target_long monitor_get_pc (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return env->eip + env->segs[R_CS].base;
}
#endif
@@ -2672,9 +2660,6 @@ static target_long monitor_get_ccr (const struct MonitorDef *md, int val)
unsigned int u;
int i;
- if (!env)
- return 0;
-
u = 0;
for (i = 0; i < 8; i++)
u |= env->crf[i] << (32 - (4 * i));
@@ -2685,40 +2670,30 @@ static target_long monitor_get_ccr (const struct MonitorDef *md, int val)
static target_long monitor_get_msr (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return env->msr;
}
static target_long monitor_get_xer (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return env->xer;
}
static target_long monitor_get_decr (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return cpu_ppc_load_decr(env);
}
static target_long monitor_get_tbu (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return cpu_ppc_load_tbu(env);
}
static target_long monitor_get_tbl (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return cpu_ppc_load_tbl(env);
}
#endif
@@ -2728,8 +2703,6 @@ static target_long monitor_get_tbl (const struct MonitorDef *md, int val)
static target_long monitor_get_psr (const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return GET_PSR(env);
}
#endif
@@ -2737,8 +2710,6 @@ static target_long monitor_get_psr (const struct MonitorDef *md, int val)
static target_long monitor_get_reg(const struct MonitorDef *md, int val)
{
CPUState *env = mon_get_cpu();
- if (!env)
- return 0;
return env->regwptr[val];
}
#endif
@@ -2990,7 +2961,7 @@ static void expr_error(Monitor *mon, const char *msg)
longjmp(expr_env, 1);
}
-/* return 0 if OK, -1 if not found, -2 if no CPU defined */
+/* return 0 if OK, -1 if not found */
static int get_monitor_def(target_long *pval, const char *name)
{
const MonitorDef *md;
@@ -3002,8 +2973,6 @@ static int get_monitor_def(target_long *pval, const char *name)
*pval = md->get_value(md, md->offset);
} else {
CPUState *env = mon_get_cpu();
- if (!env)
- return -2;
ptr = (uint8_t *)env + md->offset;
switch(md->type) {
case MD_I32:
@@ -3090,10 +3059,8 @@ static int64_t expr_unary(Monitor *mon)
pch++;
*q = 0;
ret = get_monitor_def(®, buf);
- if (ret == -1)
+ if (ret < 0)
expr_error(mon, "unknown register");
- else if (ret == -2)
- expr_error(mon, "no cpu defined");
n = reg;
}
break;
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/6] monitor: Don't check for mon_get_cpu() failure
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
@ 2010-01-26 21:34 ` Anthony Liguori
0 siblings, 0 replies; 12+ messages in thread
From: Anthony Liguori @ 2010-01-26 21:34 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On 01/20/2010 06:07 AM, Markus Armbruster wrote:
> mon_get_cpu() can't return null pointer, because it passes its return
> value to cpu_synchronize_state() first, which crashes if its argument
> is null.
>
> Remove the (pretty cheesy) handling of this non-existing error.
>
> Signed-off-by: Markus Armbruster<armbru@redhat.com>
>
Applied all. Thanks.
Regards,
Anthony Liguori
> ---
> monitor.c | 39 +++------------------------------------
> 1 files changed, 3 insertions(+), 36 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index 938eb3b..c22901f 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -693,8 +693,6 @@ static void do_info_registers(Monitor *mon)
> {
> CPUState *env;
> env = mon_get_cpu();
> - if (!env)
> - return;
> #ifdef TARGET_I386
> cpu_dump_state(env, (FILE *)mon, monitor_fprintf,
> X86_DUMP_FPU);
> @@ -1128,7 +1126,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
> int flags;
> flags = 0;
> env = mon_get_cpu();
> - if (!env&& !is_physical)
> + if (!is_physical)
> return;
> #ifdef TARGET_I386
> if (wsize == 2) {
> @@ -1190,8 +1188,6 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize,
> cpu_physical_memory_rw(addr, buf, l, 0);
> } else {
> env = mon_get_cpu();
> - if (!env)
> - break;
> if (cpu_memory_rw_debug(env, addr, buf, l, 0)< 0) {
> monitor_printf(mon, " Cannot access memory\n");
> break;
> @@ -1318,8 +1314,6 @@ static void do_memory_save(Monitor *mon, const QDict *qdict, QObject **ret_data)
> uint8_t buf[1024];
>
> env = mon_get_cpu();
> - if (!env)
> - return;
>
> f = fopen(filename, "wb");
> if (!f) {
> @@ -1754,8 +1748,6 @@ static void tlb_info(Monitor *mon)
> uint32_t pgd, pde, pte;
>
> env = mon_get_cpu();
> - if (!env)
> - return;
>
> if (!(env->cr[0]& CR0_PG_MASK)) {
> monitor_printf(mon, "PG disabled\n");
> @@ -1812,8 +1804,6 @@ static void mem_info(Monitor *mon)
> uint32_t pgd, pde, pte, start, end;
>
> env = mon_get_cpu();
> - if (!env)
> - return;
>
> if (!(env->cr[0]& CR0_PG_MASK)) {
> monitor_printf(mon, "PG disabled\n");
> @@ -2659,8 +2649,6 @@ typedef struct MonitorDef {
> static target_long monitor_get_pc (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return env->eip + env->segs[R_CS].base;
> }
> #endif
> @@ -2672,9 +2660,6 @@ static target_long monitor_get_ccr (const struct MonitorDef *md, int val)
> unsigned int u;
> int i;
>
> - if (!env)
> - return 0;
> -
> u = 0;
> for (i = 0; i< 8; i++)
> u |= env->crf[i]<< (32 - (4 * i));
> @@ -2685,40 +2670,30 @@ static target_long monitor_get_ccr (const struct MonitorDef *md, int val)
> static target_long monitor_get_msr (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return env->msr;
> }
>
> static target_long monitor_get_xer (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return env->xer;
> }
>
> static target_long monitor_get_decr (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return cpu_ppc_load_decr(env);
> }
>
> static target_long monitor_get_tbu (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return cpu_ppc_load_tbu(env);
> }
>
> static target_long monitor_get_tbl (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return cpu_ppc_load_tbl(env);
> }
> #endif
> @@ -2728,8 +2703,6 @@ static target_long monitor_get_tbl (const struct MonitorDef *md, int val)
> static target_long monitor_get_psr (const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return GET_PSR(env);
> }
> #endif
> @@ -2737,8 +2710,6 @@ static target_long monitor_get_psr (const struct MonitorDef *md, int val)
> static target_long monitor_get_reg(const struct MonitorDef *md, int val)
> {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return 0;
> return env->regwptr[val];
> }
> #endif
> @@ -2990,7 +2961,7 @@ static void expr_error(Monitor *mon, const char *msg)
> longjmp(expr_env, 1);
> }
>
> -/* return 0 if OK, -1 if not found, -2 if no CPU defined */
> +/* return 0 if OK, -1 if not found */
> static int get_monitor_def(target_long *pval, const char *name)
> {
> const MonitorDef *md;
> @@ -3002,8 +2973,6 @@ static int get_monitor_def(target_long *pval, const char *name)
> *pval = md->get_value(md, md->offset);
> } else {
> CPUState *env = mon_get_cpu();
> - if (!env)
> - return -2;
> ptr = (uint8_t *)env + md->offset;
> switch(md->type) {
> case MD_I32:
> @@ -3090,10 +3059,8 @@ static int64_t expr_unary(Monitor *mon)
> pch++;
> *q = 0;
> ret = get_monitor_def(®, buf);
> - if (ret == -1)
> + if (ret< 0)
> expr_error(mon, "unknown register");
> - else if (ret == -2)
> - expr_error(mon, "no cpu defined");
> n = reg;
> }
> break;
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 2/6] QError: New QERR_OPEN_FILE_FAILED
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 3/6] monitor: convert do_memory_save() to QError Markus Armbruster
` (4 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
qerror.c | 4 ++++
qerror.h | 3 +++
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/qerror.c b/qerror.c
index 5f8fc5d..2f657f4 100644
--- a/qerror.c
+++ b/qerror.c
@@ -73,6 +73,10 @@ static const QErrorStringTable qerror_table[] = {
.desc = "No file descriptor supplied via SCM_RIGHTS",
},
{
+ .error_fmt = QERR_OPEN_FILE_FAILED,
+ .desc = "Could not open '%(filename)'",
+ },
+ {
.error_fmt = QERR_INVALID_BLOCK_FORMAT,
.desc = "Invalid block format %(name)",
},
diff --git a/qerror.h b/qerror.h
index 9e220d6..ee59615 100644
--- a/qerror.h
+++ b/qerror.h
@@ -64,6 +64,9 @@ QError *qobject_to_qerror(const QObject *obj);
#define QERR_FD_NOT_SUPPLIED \
"{ 'class': 'FdNotSupplied', 'data': {} }"
+#define QERR_OPEN_FILE_FAILED \
+ "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }"
+
#define QERR_INVALID_BLOCK_FORMAT \
"{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }"
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 3/6] monitor: convert do_memory_save() to QError
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 2/6] QError: New QERR_OPEN_FILE_FAILED Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 4/6] monitor: convert do_physical_memory_save() " Markus Armbruster
` (3 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
monitor.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/monitor.c b/monitor.c
index c22901f..e63d0a7 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1317,7 +1317,7 @@ static void do_memory_save(Monitor *mon, const QDict *qdict, QObject **ret_data)
f = fopen(filename, "wb");
if (!f) {
- monitor_printf(mon, "could not open '%s'\n", filename);
+ qemu_error_new(QERR_OPEN_FILE_FAILED, filename);
return;
}
while (size != 0) {
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 4/6] monitor: convert do_physical_memory_save() to QError
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
` (2 preceding siblings ...)
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 3/6] monitor: convert do_memory_save() to QError Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 5/6] QError: New QERR_INVALID_CPU_INDEX Markus Armbruster
` (2 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
monitor.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/monitor.c b/monitor.c
index e63d0a7..816f6fd 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1344,7 +1344,7 @@ static void do_physical_memory_save(Monitor *mon, const QDict *qdict,
f = fopen(filename, "wb");
if (!f) {
- monitor_printf(mon, "could not open '%s'\n", filename);
+ qemu_error_new(QERR_OPEN_FILE_FAILED, filename);
return;
}
while (size != 0) {
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 5/6] QError: New QERR_INVALID_CPU_INDEX
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
` (3 preceding siblings ...)
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 4/6] monitor: convert do_physical_memory_save() " Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster
2010-01-20 13:24 ` [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Luiz Capitulino
6 siblings, 0 replies; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
qerror.c | 4 ++++
qerror.h | 3 +++
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/qerror.c b/qerror.c
index 2f657f4..6c2aba0 100644
--- a/qerror.c
+++ b/qerror.c
@@ -81,6 +81,10 @@ static const QErrorStringTable qerror_table[] = {
.desc = "Invalid block format %(name)",
},
{
+ .error_fmt = QERR_INVALID_CPU_INDEX,
+ .desc = "Invalid CPU index",
+ },
+ {
.error_fmt = QERR_INVALID_PARAMETER,
.desc = "Invalid parameter %(name)",
},
diff --git a/qerror.h b/qerror.h
index ee59615..57c5b97 100644
--- a/qerror.h
+++ b/qerror.h
@@ -70,6 +70,9 @@ QError *qobject_to_qerror(const QObject *obj);
#define QERR_INVALID_BLOCK_FORMAT \
"{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }"
+#define QERR_INVALID_CPU_INDEX \
+ "{ 'class': 'InvalidCPUIndex', 'data': {} }"
+
#define QERR_INVALID_PARAMETER \
"{ 'class': 'InvalidParameter', 'data': { 'name': %s } }"
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
` (4 preceding siblings ...)
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 5/6] QError: New QERR_INVALID_CPU_INDEX Markus Armbruster
@ 2010-01-20 12:07 ` Markus Armbruster
2010-01-26 21:23 ` Anthony Liguori
2010-01-20 13:24 ` [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Luiz Capitulino
6 siblings, 1 reply; 12+ messages in thread
From: Markus Armbruster @ 2010-01-20 12:07 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
monitor.c | 4 ++--
qemu-monitor.hx | 3 ++-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/monitor.c b/monitor.c
index 816f6fd..b9166c3 100644
--- a/monitor.c
+++ b/monitor.c
@@ -808,11 +808,11 @@ static void do_info_cpus(Monitor *mon, QObject **ret_data)
*ret_data = QOBJECT(cpu_list);
}
-static void do_cpu_set(Monitor *mon, const QDict *qdict)
+static void do_cpu_set(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
int index = qdict_get_int(qdict, "index");
if (mon_set_cpu(index) < 0)
- monitor_printf(mon, "Invalid CPU index\n");
+ qemu_error_new(QERR_INVALID_CPU_INDEX);
}
static void do_info_jit(Monitor *mon)
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index 1aa7818..415734a 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -573,7 +573,8 @@ ETEXI
.args_type = "index:i",
.params = "index",
.help = "set the default CPU",
- .mhandler.cmd = do_cpu_set,
+ .user_print = monitor_user_noop,
+ .mhandler.cmd_new = do_cpu_set,
},
STEXI
--
1.6.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster
@ 2010-01-26 21:23 ` Anthony Liguori
2010-01-27 8:00 ` Markus Armbruster
0 siblings, 1 reply; 12+ messages in thread
From: Anthony Liguori @ 2010-01-26 21:23 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On 01/20/2010 06:07 AM, Markus Armbruster wrote:
> Signed-off-by: Markus Armbruster<armbru@redhat.com>
> ---
> monitor.c | 4 ++--
> qemu-monitor.hx | 3 ++-
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index 816f6fd..b9166c3 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -808,11 +808,11 @@ static void do_info_cpus(Monitor *mon, QObject **ret_data)
> *ret_data = QOBJECT(cpu_list);
> }
>
> -static void do_cpu_set(Monitor *mon, const QDict *qdict)
> +static void do_cpu_set(Monitor *mon, const QDict *qdict, QObject **ret_data)
> {
> int index = qdict_get_int(qdict, "index");
> if (mon_set_cpu(index)< 0)
> - monitor_printf(mon, "Invalid CPU index\n");
> + qemu_error_new(QERR_INVALID_CPU_INDEX);
>
Just out of curiousity, why introduce a new error verses using
(QERR_INVALID_PARAMETER, "index")?
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError
2010-01-26 21:23 ` Anthony Liguori
@ 2010-01-27 8:00 ` Markus Armbruster
2010-01-28 22:50 ` Anthony Liguori
0 siblings, 1 reply; 12+ messages in thread
From: Markus Armbruster @ 2010-01-27 8:00 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel
Anthony Liguori <anthony@codemonkey.ws> writes:
> On 01/20/2010 06:07 AM, Markus Armbruster wrote:
>> Signed-off-by: Markus Armbruster<armbru@redhat.com>
>> ---
>> monitor.c | 4 ++--
>> qemu-monitor.hx | 3 ++-
>> 2 files changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/monitor.c b/monitor.c
>> index 816f6fd..b9166c3 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -808,11 +808,11 @@ static void do_info_cpus(Monitor *mon, QObject **ret_data)
>> *ret_data = QOBJECT(cpu_list);
>> }
>>
>> -static void do_cpu_set(Monitor *mon, const QDict *qdict)
>> +static void do_cpu_set(Monitor *mon, const QDict *qdict, QObject **ret_data)
>> {
>> int index = qdict_get_int(qdict, "index");
>> if (mon_set_cpu(index)< 0)
>> - monitor_printf(mon, "Invalid CPU index\n");
>> + qemu_error_new(QERR_INVALID_CPU_INDEX);
>>
>
> Just out of curiousity, why introduce a new error verses using
> (QERR_INVALID_PARAMETER, "index")?
To avoid changing the non-QMP monitor. If you don't care about that, I
can revert 5/6 and update 6/6.
Alternatively, here's a trick to reduce the number of client visible QMP
errors while still keeping the old diagnostic on the non-QMP monitor:
+#define QERR_INVALID_CPU_INDEX \
+ "{ 'class': 'InvalidParameter, 'data': { 'name': 'index' } }"
+
#define QERR_INVALID_PARAMETER \
"{ 'class': 'InvalidParameter', 'data': { 'name': %s } }"
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError
2010-01-27 8:00 ` Markus Armbruster
@ 2010-01-28 22:50 ` Anthony Liguori
0 siblings, 0 replies; 12+ messages in thread
From: Anthony Liguori @ 2010-01-28 22:50 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On 01/27/2010 02:00 AM, Markus Armbruster wrote:
> Anthony Liguori<anthony@codemonkey.ws> writes:
>
>
>> On 01/20/2010 06:07 AM, Markus Armbruster wrote:
>>
>>> Signed-off-by: Markus Armbruster<armbru@redhat.com>
>>> ---
>>> monitor.c | 4 ++--
>>> qemu-monitor.hx | 3 ++-
>>> 2 files changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/monitor.c b/monitor.c
>>> index 816f6fd..b9166c3 100644
>>> --- a/monitor.c
>>> +++ b/monitor.c
>>> @@ -808,11 +808,11 @@ static void do_info_cpus(Monitor *mon, QObject **ret_data)
>>> *ret_data = QOBJECT(cpu_list);
>>> }
>>>
>>> -static void do_cpu_set(Monitor *mon, const QDict *qdict)
>>> +static void do_cpu_set(Monitor *mon, const QDict *qdict, QObject **ret_data)
>>> {
>>> int index = qdict_get_int(qdict, "index");
>>> if (mon_set_cpu(index)< 0)
>>> - monitor_printf(mon, "Invalid CPU index\n");
>>> + qemu_error_new(QERR_INVALID_CPU_INDEX);
>>>
>>>
>> Just out of curiousity, why introduce a new error verses using
>> (QERR_INVALID_PARAMETER, "index")?
>>
> To avoid changing the non-QMP monitor. If you don't care about that, I
> can revert 5/6 and update 6/6.
>
Yes, I don't mind changing error messages in the human monitor.
> Alternatively, here's a trick to reduce the number of client visible QMP
> errors while still keeping the old diagnostic on the non-QMP monitor:
>
> +#define QERR_INVALID_CPU_INDEX \
> + "{ 'class': 'InvalidParameter, 'data': { 'name': 'index' } }"
> +
> #define QERR_INVALID_PARAMETER \
> "{ 'class': 'InvalidParameter', 'data': { 'name': %s } }"
>
Not a bad idea if you think it's important. I don't think it is
though. I think the chances of anyone relying on specific error
messages on the monitor is very, very low.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError
2010-01-20 12:07 [Qemu-devel] [PATCH v2 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
` (5 preceding siblings ...)
2010-01-20 12:07 ` [Qemu-devel] [PATCH v2 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster
@ 2010-01-20 13:24 ` Luiz Capitulino
6 siblings, 0 replies; 12+ messages in thread
From: Luiz Capitulino @ 2010-01-20 13:24 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On Wed, 20 Jan 2010 13:07:29 +0100
Markus Armbruster <armbru@redhat.com> wrote:
> First patch is cleanup to get rid of an error that can't happen. Rest
> are straightforward conversions.
Looks good to me.
^ permalink raw reply [flat|nested] 12+ messages in thread