From patchwork Thu Apr 25 15:06:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 239540 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id BA83A2C0109 for ; Fri, 26 Apr 2013 01:14:16 +1000 (EST) Received: from localhost ([::1]:47750 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVNsE-0007pz-U9 for incoming@patchwork.ozlabs.org; Thu, 25 Apr 2013 11:14:14 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVNrs-0007pG-RN for qemu-devel@nongnu.org; Thu, 25 Apr 2013 11:13:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UVNrn-0007ae-K0 for qemu-devel@nongnu.org; Thu, 25 Apr 2013 11:13:52 -0400 Received: from smtprelay05.ispgateway.de ([80.67.31.99]:46519) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVNrn-0007aU-9d for qemu-devel@nongnu.org; Thu, 25 Apr 2013 11:13:47 -0400 Received: from [217.84.9.72] (helo=stokes.schwinge.homeip.net) by smtprelay05.ispgateway.de with esmtpa (Exim 4.68) (envelope-from ) id 1UVNlW-000072-K6 for qemu-devel@nongnu.org; Thu, 25 Apr 2013 17:07:18 +0200 Received: (qmail 4827 invoked from network); 25 Apr 2013 15:07:00 -0000 Received: from feldtkeller.schwinge.homeip.net (192.168.111.172) by stokes.schwinge.homeip.net with QMQP; 25 Apr 2013 15:07:00 -0000 Received: (nullmailer pid 19155 invoked by uid 1000); Thu, 25 Apr 2013 15:06:59 -0000 From: Thomas Schwinge To: riku.voipio@iki.fi Date: Thu, 25 Apr 2013 17:06:44 +0200 Message-Id: <1366902405-19117-3-git-send-email-thomas@codesourcery.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1366902405-19117-1-git-send-email-thomas@codesourcery.com> References: <20130425122252.GA4850@afflict.kos.to> <87k3nrq56l.fsf@schwinge.name> <1366902405-19117-1-git-send-email-thomas@codesourcery.com> X-Df-Sender: dGhvbWFzQHNjaHdpbmdlLm5hbWU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 80.67.31.99 Cc: peter.maydell@linaro.org, aliguori@us.ibm.com, sw@weilnetz.de, agraf@suse.de, qemu-devel@nongnu.org, paul@codesourcery.com, j.schauer@email.de, Thomas Schwinge Subject: [Qemu-devel] [PATCH 3/4] linux-user: Tell handler_arg_* which context they're invoked from. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Thomas Schwinge --- linux-user/main.c | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git linux-user/main.c linux-user/main.c index 7f81821..50bbadf 100644 --- linux-user/main.c +++ linux-user/main.c @@ -3180,12 +3180,17 @@ void init_task_state(TaskState *ts) ts->sigqueue_table[i].next = NULL; } -static void handle_arg_help(const char *arg) +typedef enum { + ARG_ORIGIN_ENV, + ARG_ORIGIN_CMDLINE +} arg_origin; + +static void handle_arg_help(arg_origin whence, const char *arg) { usage(); } -static void handle_arg_log(const char *arg) +static void handle_arg_log(arg_origin whence, const char *arg) { int mask; @@ -3197,31 +3202,31 @@ static void handle_arg_log(const char *arg) qemu_set_log(mask); } -static void handle_arg_log_filename(const char *arg) +static void handle_arg_log_filename(arg_origin whence, const char *arg) { qemu_set_log_filename(arg); } -static void handle_arg_set_env(const char *arg) +static void handle_arg_set_env(arg_origin whence, const char *arg) { if (envlist_parse_set(envlist, arg) != 0) { usage(); } } -static void handle_arg_unset_env(const char *arg) +static void handle_arg_unset_env(arg_origin whence, const char *arg) { if (envlist_parse_unset(envlist, arg) != 0) { usage(); } } -static void handle_arg_argv0(const char *arg) +static void handle_arg_argv0(arg_origin whence, const char *arg) { argv0 = strdup(arg); } -static void handle_arg_stack_size(const char *arg) +static void handle_arg_stack_size(arg_origin whence, const char *arg) { char *p; guest_stack_size = strtoul(arg, &p, 0); @@ -3236,12 +3241,12 @@ static void handle_arg_stack_size(const char *arg) } } -static void handle_arg_ld_prefix(const char *arg) +static void handle_arg_ld_prefix(arg_origin whence, const char *arg) { interp_prefix = strdup(arg); } -static void handle_arg_pagesize(const char *arg) +static void handle_arg_pagesize(arg_origin whence, const char *arg) { qemu_host_page_size = atoi(arg); if (qemu_host_page_size == 0 || @@ -3251,17 +3256,17 @@ static void handle_arg_pagesize(const char *arg) } } -static void handle_arg_gdb(const char *arg) +static void handle_arg_gdb(arg_origin whence, const char *arg) { gdbstub_port = atoi(arg); } -static void handle_arg_uname(const char *arg) +static void handle_arg_uname(arg_origin whence, const char *arg) { qemu_uname_release = strdup(arg); } -static void handle_arg_cpu(const char *arg) +static void handle_arg_cpu(arg_origin whence, const char *arg) { cpu_model = strdup(arg); if (cpu_model == NULL || is_help_option(cpu_model)) { @@ -3274,13 +3279,13 @@ static void handle_arg_cpu(const char *arg) } #if defined(CONFIG_USE_GUEST_BASE) -static void handle_arg_guest_base(const char *arg) +static void handle_arg_guest_base(arg_origin whence, const char *arg) { guest_base = strtol(arg, NULL, 0); have_guest_base = 1; } -static void handle_arg_reserved_va(const char *arg) +static void handle_arg_reserved_va(arg_origin whence, const char *arg) { char *p; int shift = 0; @@ -3317,17 +3322,17 @@ static void handle_arg_reserved_va(const char *arg) } #endif -static void handle_arg_singlestep(const char *arg) +static void handle_arg_singlestep(arg_origin whence, const char *arg) { singlestep = 1; } -static void handle_arg_strace(const char *arg) +static void handle_arg_strace(arg_origin whence, const char *arg) { do_strace = 1; } -static void handle_arg_version(const char *arg) +static void handle_arg_version(arg_origin whence, const char *arg) { printf("qemu-" TARGET_ARCH " version " QEMU_VERSION QEMU_PKGVERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n"); @@ -3338,7 +3343,7 @@ struct qemu_argument { const char *argv; const char *env; bool has_arg; - void (*handle_opt)(const char *arg); + void (*handle_opt)(arg_origin whence, const char *arg); const char *example; const char *help; }; @@ -3467,7 +3472,7 @@ static int parse_args(int argc, char **argv) r = getenv(arginfo->env); if (r != NULL) { - arginfo->handle_opt(r); + arginfo->handle_opt(ARG_ORIGIN_ENV, r); } } @@ -3492,10 +3497,10 @@ static int parse_args(int argc, char **argv) if (optind >= argc) { usage(); } - arginfo->handle_opt(argv[optind]); + arginfo->handle_opt(ARG_ORIGIN_CMDLINE, argv[optind]); optind++; } else { - arginfo->handle_opt(NULL); + arginfo->handle_opt(ARG_ORIGIN_CMDLINE, NULL); } break; }