]>
Commit | Line | Data |
---|---|---|
9dd986cc RJ |
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 | |
17 | * along with this program; if not, write to the Free Software | |
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
19 | * USA. | |
20 | * | |
21 | * By Richard W.M. Jones (rjones@redhat.com). | |
22 | */ | |
23 | ||
24 | #ifndef QEMU_WATCHDOG_H | |
25 | #define QEMU_WATCHDOG_H | |
26 | ||
27 | extern void wdt_i6300esb_init(void); | |
28 | extern void wdt_ib700_init(void); | |
29 | ||
30 | /* Possible values for action parameter. */ | |
31 | #define WDT_RESET 1 /* Hard reset. */ | |
32 | #define WDT_SHUTDOWN 2 /* Shutdown. */ | |
33 | #define WDT_POWEROFF 3 /* Quit. */ | |
34 | #define WDT_PAUSE 4 /* Pause. */ | |
35 | #define WDT_DEBUG 5 /* Prints a message and continues running. */ | |
36 | #define WDT_NONE 6 /* Do nothing. */ | |
37 | ||
38 | struct WatchdogTimerModel { | |
39 | LIST_ENTRY(WatchdogTimerModel) entry; | |
40 | ||
41 | /* Short name of the device - used to select it on the command line. */ | |
42 | const char *wdt_name; | |
43 | /* Longer description (eg. manufacturer and full model number). */ | |
44 | const char *wdt_description; | |
45 | ||
46 | /* This callback should create/register the device. It is called | |
47 | * indirectly from hw/pc.c when the virtual PC is being set up. | |
48 | */ | |
49 | void (*wdt_pc_init)(PCIBus *pci_bus); | |
50 | }; | |
51 | typedef struct WatchdogTimerModel WatchdogTimerModel; | |
52 | ||
53 | /* in vl.c */ | |
54 | extern WatchdogTimerModel *watchdog; | |
55 | extern int watchdog_action; | |
56 | ||
57 | /* in hw/watchdog.c */ | |
58 | extern int select_watchdog(const char *p); | |
59 | extern int select_watchdog_action(const char *action); | |
60 | extern void watchdog_add_model(WatchdogTimerModel *model); | |
61 | extern void watchdog_perform_action(void); | |
62 | extern void watchdog_pc_init(PCIBus *pci_bus); | |
63 | extern void register_watchdogs(void); | |
64 | ||
65 | #endif /* QEMU_WATCHDOG_H */ |