From nobody Sun Feb 8 18:32:37 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504697186173948.0106446629502; Wed, 6 Sep 2017 04:26:26 -0700 (PDT) Received: from localhost ([::1]:35488 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpYTR-0002Xt-5r for importer@patchew.org; Wed, 06 Sep 2017 07:26:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51423) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dpYRx-0001aJ-CA for qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:24:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dpYRu-0005DV-EF for qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:24:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57406) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dpYRu-0005DM-5j for qemu-devel@nongnu.org; Wed, 06 Sep 2017 07:24:50 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 351984E4CA for ; Wed, 6 Sep 2017 11:24:49 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id 135367B604; Wed, 6 Sep 2017 11:24:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 351984E4CA Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=mprivozn@redhat.com From: Michal Privoznik To: qemu-devel@nongnu.org Date: Wed, 6 Sep 2017 13:24:39 +0200 Message-Id: <9fe40ce91ada6dfdade83f32940f420e8b373db2.1504696921.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Wed, 06 Sep 2017 11:24:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v4 2/3] watchdog.h: Drop local redefinition of actions enum X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We already have enum that enumerates all the action that a watchdog can take when hitting its timeout: WatchdogAction. Use that instead of inventing our own. Signed-off-by: Michal Privoznik --- hw/watchdog/watchdog.c | 42 +++++++++++++++++------------------------- hw/watchdog/wdt_diag288.c | 6 +++--- include/sysemu/watchdog.h | 12 ++---------- 3 files changed, 22 insertions(+), 38 deletions(-) diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c index 358d79804d..547a49a1e4 100644 --- a/hw/watchdog/watchdog.c +++ b/hw/watchdog/watchdog.c @@ -30,7 +30,7 @@ #include "hw/nmi.h" #include "qemu/help_option.h" =20 -static int watchdog_action =3D WDT_RESET; +static WatchdogAction watchdog_action =3D WATCHDOG_ACTION_RESET; static QLIST_HEAD(watchdog_list, WatchdogTimerModel) watchdog_list; =20 void watchdog_add_model(WatchdogTimerModel *model) @@ -77,27 +77,16 @@ int select_watchdog(const char *p) =20 int select_watchdog_action(const char *p) { - if (strcasecmp(p, "reset") =3D=3D 0) - watchdog_action =3D WDT_RESET; - else if (strcasecmp(p, "shutdown") =3D=3D 0) - watchdog_action =3D WDT_SHUTDOWN; - else if (strcasecmp(p, "poweroff") =3D=3D 0) - watchdog_action =3D WDT_POWEROFF; - else if (strcasecmp(p, "pause") =3D=3D 0) - watchdog_action =3D WDT_PAUSE; - else if (strcasecmp(p, "debug") =3D=3D 0) - watchdog_action =3D WDT_DEBUG; - else if (strcasecmp(p, "none") =3D=3D 0) - watchdog_action =3D WDT_NONE; - else if (strcasecmp(p, "inject-nmi") =3D=3D 0) - watchdog_action =3D WDT_NMI; - else - return -1; + int action; =20 + action =3D qapi_enum_parse(&WatchdogAction_lookup, p, -1, NULL); + if (action < 0) + return -1; + watchdog_action =3D action; return 0; } =20 -int get_watchdog_action(void) +WatchdogAction get_watchdog_action(void) { return watchdog_action; } @@ -108,21 +97,21 @@ int get_watchdog_action(void) void watchdog_perform_action(void) { switch (watchdog_action) { - case WDT_RESET: /* same as 'system_reset' in monitor */ + case WATCHDOG_ACTION_RESET: /* same as 'system_reset' in monitor */ qapi_event_send_watchdog(WATCHDOG_ACTION_RESET, &error_abort); qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); break; =20 - case WDT_SHUTDOWN: /* same as 'system_powerdown' in monitor */ + case WATCHDOG_ACTION_SHUTDOWN: /* same as 'system_powerdown' in monit= or */ qapi_event_send_watchdog(WATCHDOG_ACTION_SHUTDOWN, &error_abort); qemu_system_powerdown_request(); break; =20 - case WDT_POWEROFF: /* same as 'quit' command in monitor */ + case WATCHDOG_ACTION_POWEROFF: /* same as 'quit' command in monitor */ qapi_event_send_watchdog(WATCHDOG_ACTION_POWEROFF, &error_abort); exit(0); =20 - case WDT_PAUSE: /* same as 'stop' command in monitor */ + case WATCHDOG_ACTION_PAUSE: /* same as 'stop' command in monitor */ /* In a timer callback, when vm_stop calls qemu_clock_enable * you would get a deadlock. Bypass the problem. */ @@ -131,19 +120,22 @@ void watchdog_perform_action(void) qemu_system_vmstop_request(RUN_STATE_WATCHDOG); break; =20 - case WDT_DEBUG: + case WATCHDOG_ACTION_DEBUG: qapi_event_send_watchdog(WATCHDOG_ACTION_DEBUG, &error_abort); fprintf(stderr, "watchdog: timer fired\n"); break; =20 - case WDT_NONE: + case WATCHDOG_ACTION_NONE: qapi_event_send_watchdog(WATCHDOG_ACTION_NONE, &error_abort); break; =20 - case WDT_NMI: + case WATCHDOG_ACTION_INJECT_NMI: qapi_event_send_watchdog(WATCHDOG_ACTION_INJECT_NMI, &error_abort); nmi_monitor_handle(0, NULL); break; + + default: + assert(0); } } diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c index 47f289216a..1475743527 100644 --- a/hw/watchdog/wdt_diag288.c +++ b/hw/watchdog/wdt_diag288.c @@ -57,9 +57,9 @@ static void diag288_timer_expired(void *dev) * the BQL; reset before triggering the action to avoid races with * diag288 instructions. */ switch (get_watchdog_action()) { - case WDT_DEBUG: - case WDT_NONE: - case WDT_PAUSE: + case WATCHDOG_ACTION_DEBUG: + case WATCHDOG_ACTION_NONE: + case WATCHDOG_ACTION_PAUSE: break; default: wdt_diag288_reset(dev); diff --git a/include/sysemu/watchdog.h b/include/sysemu/watchdog.h index 72a4da07a6..677ace3945 100644 --- a/include/sysemu/watchdog.h +++ b/include/sysemu/watchdog.h @@ -23,15 +23,7 @@ #define QEMU_WATCHDOG_H =20 #include "qemu/queue.h" - -/* Possible values for action parameter. */ -#define WDT_RESET 1 /* Hard reset. */ -#define WDT_SHUTDOWN 2 /* Shutdown. */ -#define WDT_POWEROFF 3 /* Quit. */ -#define WDT_PAUSE 4 /* Pause. */ -#define WDT_DEBUG 5 /* Prints a message and continues running.= */ -#define WDT_NONE 6 /* Do nothing. */ -#define WDT_NMI 7 /* Inject nmi into the guest. */ +#include "qapi-types.h" =20 struct WatchdogTimerModel { QLIST_ENTRY(WatchdogTimerModel) entry; @@ -46,7 +38,7 @@ typedef struct WatchdogTimerModel WatchdogTimerModel; /* in hw/watchdog.c */ int select_watchdog(const char *p); int select_watchdog_action(const char *action); -int get_watchdog_action(void); +WatchdogAction get_watchdog_action(void); void watchdog_add_model(WatchdogTimerModel *model); void watchdog_perform_action(void); =20 --=20 2.13.5