David 'Digit' Turner | 5d8f37a | 2009-09-14 14:32:27 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Virtual hardware watchdog. |
| 3 | * |
| 4 | * Copyright (C) 2009 Red Hat Inc. |
| 5 | * |
| 6 | * This program is free software; you can redistribute it and/or |
| 7 | * modify it under the terms of the GNU General Public License |
| 8 | * as published by the Free Software Foundation; either version 2 |
| 9 | * of the License, or (at your option) any later version. |
| 10 | * |
| 11 | * This program is distributed in the hope that it will be useful, |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 14 | * GNU General Public License for more details. |
| 15 | * |
| 16 | * You should have received a copy of the GNU General Public License |
David Turner | a253513 | 2010-09-10 10:15:07 +0200 | [diff] [blame] | 17 | * along with this program; if not, see <http://www.gnu.org/licenses/>. |
David 'Digit' Turner | 5d8f37a | 2009-09-14 14:32:27 -0700 | [diff] [blame] | 18 | * |
| 19 | * By Richard W.M. Jones (rjones@redhat.com). |
| 20 | */ |
| 21 | |
| 22 | #ifndef QEMU_WATCHDOG_H |
| 23 | #define QEMU_WATCHDOG_H |
| 24 | |
| 25 | extern void wdt_i6300esb_init(void); |
| 26 | extern void wdt_ib700_init(void); |
| 27 | |
| 28 | /* Possible values for action parameter. */ |
| 29 | #define WDT_RESET 1 /* Hard reset. */ |
| 30 | #define WDT_SHUTDOWN 2 /* Shutdown. */ |
| 31 | #define WDT_POWEROFF 3 /* Quit. */ |
| 32 | #define WDT_PAUSE 4 /* Pause. */ |
| 33 | #define WDT_DEBUG 5 /* Prints a message and continues running. */ |
| 34 | #define WDT_NONE 6 /* Do nothing. */ |
| 35 | |
| 36 | struct WatchdogTimerModel { |
David 'Digit' Turner | a5d4120 | 2010-05-10 18:37:10 -0700 | [diff] [blame] | 37 | QLIST_ENTRY(WatchdogTimerModel) entry; |
David 'Digit' Turner | 5d8f37a | 2009-09-14 14:32:27 -0700 | [diff] [blame] | 38 | |
| 39 | /* Short name of the device - used to select it on the command line. */ |
| 40 | const char *wdt_name; |
| 41 | /* Longer description (eg. manufacturer and full model number). */ |
| 42 | const char *wdt_description; |
| 43 | |
| 44 | /* This callback should create/register the device. It is called |
| 45 | * indirectly from hw/pc.c when the virtual PC is being set up. |
| 46 | */ |
| 47 | void (*wdt_pc_init)(PCIBus *pci_bus); |
| 48 | }; |
| 49 | typedef struct WatchdogTimerModel WatchdogTimerModel; |
| 50 | |
| 51 | /* in vl.c */ |
| 52 | extern WatchdogTimerModel *watchdog; |
| 53 | extern int watchdog_action; |
| 54 | |
| 55 | /* in hw/watchdog.c */ |
| 56 | extern int select_watchdog(const char *p); |
| 57 | extern int select_watchdog_action(const char *action); |
| 58 | extern void watchdog_add_model(WatchdogTimerModel *model); |
| 59 | extern void watchdog_perform_action(void); |
| 60 | extern void watchdog_pc_init(PCIBus *pci_bus); |
| 61 | extern void register_watchdogs(void); |
| 62 | |
| 63 | #endif /* QEMU_WATCHDOG_H */ |