[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v9 04/15] hw/i386/pc: replace use of strtol with qemu_strtol
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v9 04/15] hw/i386/pc: replace use of strtol with qemu_strtol in x86_load_linux() |
Date: |
Wed, 16 Oct 2019 22:40:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
Philippe Mathieu-Daudé <address@hidden> writes:
> Hi Sergio,
>
> On 10/15/19 1:23 PM, Sergio Lopez wrote:
>> Follow checkpatch.pl recommendation and replace the use of strtol with
>> qemu_strtol in x86_load_linux().
>
> "with qemu_strtoui"
>
>>
>> Signed-off-by: Sergio Lopez <address@hidden>
>> ---
>> hw/i386/pc.c | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 77e86bfc3d..c8608b8007 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -68,6 +68,7 @@
>> #include "qemu/config-file.h"
>> #include "qemu/error-report.h"
>> #include "qemu/option.h"
>> +#include "qemu/cutils.h"
>> #include "hw/acpi/acpi.h"
>> #include "hw/acpi/cpu_hotplug.h"
>> #include "hw/boards.h"
>> @@ -1202,6 +1203,7 @@ static void x86_load_linux(PCMachineState *pcms,
>> vmode = strstr(kernel_cmdline, "vga=");
>> if (vmode) {
>> unsigned int video_mode;
>> + int ret;
>> /* skip "vga=" */
>> vmode += 4;
>> if (!strncmp(vmode, "normal", 6)) {
>> @@ -1211,7 +1213,12 @@ static void x86_load_linux(PCMachineState *pcms,
>> } else if (!strncmp(vmode, "ask", 3)) {
>> video_mode = 0xfffd;
>> } else {
>> - video_mode = strtol(vmode, NULL, 0);
>> + ret = qemu_strtoui(vmode, NULL, 0, &video_mode);
>> + if (ret != 0) {
>> + fprintf(stderr, "qemu: can't parse 'vga' parameter: %s\n",
>> + strerror(-ret));
>
> (Cc'ing Markus/Daniel just in case)
>
> I'm wondering if using fprintf() is appropriate, thinking about
> instantiating a machine via libvirt, is this error reported to the
> user?
>
> I first thought about using error_report() instead:
>
> error_report("qemu: can't parse 'vga' parameter: %s",
> strerror(-ret));
Make that
error_report("can't parse 'vga' parameter: %s", strerror(-ret));
> But this API is meaningful when used in console/monitor. We can't get
> here from the monitor,
True, but error_report() should be used anyway, because (1) it makes
intent more obvious, and (2) it uses a uniform, featureful error format.
With the proposed fprintf(), we get
qemu: can't parse 'vga' parameter: Numerical result out of range
With error_report():
* we report the *actual* argv[0] instead of "qemu"
* we obey -msg timestamp=on
* if "[PATCHv2 1/2] util/qemu-error: add guest name helper with -msg
options" gets accepted, we obey -msg guest-name=on, too
* we have a common way to point to the offending command line argument
or configuration file line (not worth doing here)
Please use error_report().
[...]
[PATCH v9 05/15] hw/i386/pc: avoid an assignment in if condition in x86_load_linux(), Sergio Lopez, 2019/10/15
[PATCH v9 06/15] hw/i386/pc: remove commented out code from x86_load_linux(), Sergio Lopez, 2019/10/15
[PATCH v9 07/15] hw/i386/pc: move shared x86 functions to x86.c and export them, Sergio Lopez, 2019/10/15
[PATCH v9 08/15] hw/i386: split PCMachineState deriving X86MachineState from it, Sergio Lopez, 2019/10/15
[PATCH v9 09/15] hw/i386: make x86.c independent from PCMachineState, Sergio Lopez, 2019/10/15
[PATCH v9 10/15] fw_cfg: add "modify" functions for all types, Sergio Lopez, 2019/10/15
[PATCH v9 11/15] hw/intc/apic: reject pic ints if isa_pic == NULL, Sergio Lopez, 2019/10/15
[PATCH v9 13/15] docs/microvm.rst: document the new microvm machine type, Sergio Lopez, 2019/10/15