qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError
@ 2010-01-15 16:25 Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 UTC (permalink / raw)
  To: qemu-devel

First patch is cleanup to get rid of an error that can't happen.  Rest
are straightforward conversions.

Markus Armbruster (6):
  monitor: Don't check for mon_get_cpu() failure
  QError: New QERR_FOPEN_FAILED
  monitor: convert do_memory_save() to QError
  monitor: convert do_physical_memory_save() to QError
  QError: New QERR_INVALID_CPU_INDEX
  monitor: convert do_cpu_set() to QObject, QError

 monitor.c       |   47 +++++++----------------------------------------
 qemu-monitor.hx |    3 ++-
 qerror.c        |    8 ++++++++
 qerror.h        |    6 ++++++
 4 files changed, 23 insertions(+), 41 deletions(-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 1/6] monitor: Don't check for mon_get_cpu() failure
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED Markus Armbruster
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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 b824e7c..988de73 100644
--- a/monitor.c
+++ b/monitor.c
@@ -682,8 +682,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);
@@ -1117,7 +1115,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) {
@@ -1179,8 +1177,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;
@@ -1307,8 +1303,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) {
@@ -1743,8 +1737,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");
@@ -1801,8 +1793,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");
@@ -2648,8 +2638,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
@@ -2661,9 +2649,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));
@@ -2674,40 +2659,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
@@ -2717,8 +2692,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
@@ -2726,8 +2699,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
@@ -2979,7 +2950,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;
@@ -2991,8 +2962,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:
@@ -3079,10 +3048,8 @@ static int64_t expr_unary(Monitor *mon)
                 pch++;
             *q = 0;
             ret = get_monitor_def(&reg, 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.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  2010-01-18 14:23   ` Luiz Capitulino
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 3/6] monitor: convert do_memory_save() to QError Markus Armbruster
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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..e7b8ca7 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_FOPEN_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..8701570 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_FOPEN_FAILED \
+    "{ 'class': 'FopenFailed', 'data': { 'filename': %s } }"
+
 #define QERR_INVALID_BLOCK_FORMAT \
     "{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }"
 
-- 
1.6.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 3/6] monitor: convert do_memory_save() to QError
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 4/6] monitor: convert do_physical_memory_save() " Markus Armbruster
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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 988de73..2da3800 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1306,7 +1306,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_FOPEN_FAILED, filename);
         return;
     }
     while (size != 0) {
-- 
1.6.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 4/6] monitor: convert do_physical_memory_save() to QError
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
                   ` (2 preceding siblings ...)
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 3/6] monitor: convert do_memory_save() to QError Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 5/6] QError: New QERR_INVALID_CPU_INDEX Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster
  5 siblings, 0 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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 2da3800..6664a04 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1333,7 +1333,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_FOPEN_FAILED, filename);
         return;
     }
     while (size != 0) {
-- 
1.6.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 5/6] QError: New QERR_INVALID_CPU_INDEX
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
                   ` (3 preceding siblings ...)
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 4/6] monitor: convert do_physical_memory_save() " Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster
  5 siblings, 0 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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 e7b8ca7..1c0b35e 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 8701570..7cae922 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.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 6/6] monitor: convert do_cpu_set() to QObject, QError
  2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
                   ` (4 preceding siblings ...)
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 5/6] QError: New QERR_INVALID_CPU_INDEX Markus Armbruster
@ 2010-01-15 16:25 ` Markus Armbruster
  5 siblings, 0 replies; 11+ messages in thread
From: Markus Armbruster @ 2010-01-15 16:25 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 6664a04..5f0a54c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -797,11 +797,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.5.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED
  2010-01-15 16:25 ` [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED Markus Armbruster
@ 2010-01-18 14:23   ` Luiz Capitulino
  2010-01-18 14:38     ` Luiz Capitulino
  2010-01-18 14:52     ` Markus Armbruster
  0 siblings, 2 replies; 11+ messages in thread
From: Luiz Capitulino @ 2010-01-18 14:23 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel

On Fri, 15 Jan 2010 17:25:25 +0100
Markus Armbruster <armbru@redhat.com> wrote:

> 
> 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..e7b8ca7 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_FOPEN_FAILED,
> +        .desc      = "Could not open '%{filename}'",
> +    },

 Shouldn't this be something like QERR_OPEN_FAILED, so that we
can use the same error for all open functions?

 Also, we have to think a way to specify the reason from errno.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED
  2010-01-18 14:23   ` Luiz Capitulino
@ 2010-01-18 14:38     ` Luiz Capitulino
  2010-01-18 14:52     ` Markus Armbruster
  1 sibling, 0 replies; 11+ messages in thread
From: Luiz Capitulino @ 2010-01-18 14:38 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel

On Mon, 18 Jan 2010 12:23:28 -0200
Luiz Capitulino <lcapitulino@redhat.com> wrote:

> On Fri, 15 Jan 2010 17:25:25 +0100
> Markus Armbruster <armbru@redhat.com> wrote:
> 
> > 
> > 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..e7b8ca7 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_FOPEN_FAILED,
> > +        .desc      = "Could not open '%{filename}'",
> > +    },
> 
>  Shouldn't this be something like QERR_OPEN_FAILED, so that we
> can use the same error for all open functions?

 Something I forgot to mention, 'FopenFailed' doesn't seem
interesting to clients. Maybe 'OpenFileFailed'?

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED
  2010-01-18 14:23   ` Luiz Capitulino
  2010-01-18 14:38     ` Luiz Capitulino
@ 2010-01-18 14:52     ` Markus Armbruster
  2010-01-18 16:49       ` Luiz Capitulino
  1 sibling, 1 reply; 11+ messages in thread
From: Markus Armbruster @ 2010-01-18 14:52 UTC (permalink / raw)
  To: Luiz Capitulino; +Cc: qemu-devel

Luiz Capitulino <lcapitulino@redhat.com> writes:

> On Fri, 15 Jan 2010 17:25:25 +0100
> Markus Armbruster <armbru@redhat.com> wrote:
>
>> 
>> 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..e7b8ca7 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_FOPEN_FAILED,
>> +        .desc      = "Could not open '%{filename}'",
>> +    },
>
>  Shouldn't this be something like QERR_OPEN_FAILED, so that we
> can use the same error for all open functions?

Whatever name you like best.  The intention is certainly to use this for
*file* open errors regardless of the precise function used to open.

>  Also, we have to think a way to specify the reason from errno.

Yes only if client programs use this for handling the error, not just to
pass it to a human user.

Although most errors are standardized, their numeric encoding is not, so
we can't just transmit errno.  strerror() is right out, because that's
for humans.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED
  2010-01-18 14:52     ` Markus Armbruster
@ 2010-01-18 16:49       ` Luiz Capitulino
  0 siblings, 0 replies; 11+ messages in thread
From: Luiz Capitulino @ 2010-01-18 16:49 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel

On Mon, 18 Jan 2010 15:52:13 +0100
Markus Armbruster <armbru@redhat.com> wrote:

> Luiz Capitulino <lcapitulino@redhat.com> writes:
> 
> > On Fri, 15 Jan 2010 17:25:25 +0100
> > Markus Armbruster <armbru@redhat.com> wrote:
> >
> >> 
> >> 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..e7b8ca7 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_FOPEN_FAILED,
> >> +        .desc      = "Could not open '%{filename}'",
> >> +    },
> >
> >  Shouldn't this be something like QERR_OPEN_FAILED, so that we
> > can use the same error for all open functions?
> 
> Whatever name you like best.  The intention is certainly to use this for
> *file* open errors regardless of the precise function used to open.

 Probably OpenFileFailed or CantOpenFile.

> >  Also, we have to think a way to specify the reason from errno.
> 
> Yes only if client programs use this for handling the error, not just to
> pass it to a human user.
> 
> Although most errors are standardized, their numeric encoding is not, so
> we can't just transmit errno.  strerror() is right out, because that's
> for humans.

 IIRC we had a conversation about this and the conclusion was that we
will need our own qerror_strerror() or something like that.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2010-01-18 16:50 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-15 16:25 [Qemu-devel] [PATCH 0/6] Convert memsave, pmemsave, cpu to QObject+QError Markus Armbruster
2010-01-15 16:25 ` [Qemu-devel] [PATCH 1/6] monitor: Don't check for mon_get_cpu() failure Markus Armbruster
2010-01-15 16:25 ` [Qemu-devel] [PATCH 2/6] QError: New QERR_FOPEN_FAILED Markus Armbruster
2010-01-18 14:23   ` Luiz Capitulino
2010-01-18 14:38     ` Luiz Capitulino
2010-01-18 14:52     ` Markus Armbruster
2010-01-18 16:49       ` Luiz Capitulino
2010-01-15 16:25 ` [Qemu-devel] [PATCH 3/6] monitor: convert do_memory_save() to QError Markus Armbruster
2010-01-15 16:25 ` [Qemu-devel] [PATCH 4/6] monitor: convert do_physical_memory_save() " Markus Armbruster
2010-01-15 16:25 ` [Qemu-devel] [PATCH 5/6] QError: New QERR_INVALID_CPU_INDEX Markus Armbruster
2010-01-15 16:25 ` [Qemu-devel] [PATCH 6/6] monitor: convert do_cpu_set() to QObject, QError Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).