Add an opaque parameter to boot_set API, move function to monitor.c
[qemu] / hw / hw.h
1 /* Declarations for use by hardware emulation.  */
2 #ifndef QEMU_HW_H
3 #define QEMU_HW_H
4
5 #include "qemu-common.h"
6 #include "irq.h"
7
8 /* VM Load/Save */
9
10 QEMUFile *qemu_fopen(const char *filename, const char *mode);
11 void qemu_fflush(QEMUFile *f);
12 void qemu_fclose(QEMUFile *f);
13 void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
14 void qemu_put_byte(QEMUFile *f, int v);
15 void qemu_put_be16(QEMUFile *f, unsigned int v);
16 void qemu_put_be32(QEMUFile *f, unsigned int v);
17 void qemu_put_be64(QEMUFile *f, uint64_t v);
18 int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
19 int qemu_get_byte(QEMUFile *f);
20 unsigned int qemu_get_be16(QEMUFile *f);
21 unsigned int qemu_get_be32(QEMUFile *f);
22 uint64_t qemu_get_be64(QEMUFile *f);
23
24 static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
25 {
26     qemu_put_be64(f, *pv);
27 }
28
29 static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
30 {
31     qemu_put_be32(f, *pv);
32 }
33
34 static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
35 {
36     qemu_put_be16(f, *pv);
37 }
38
39 static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
40 {
41     qemu_put_byte(f, *pv);
42 }
43
44 static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
45 {
46     *pv = qemu_get_be64(f);
47 }
48
49 static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
50 {
51     *pv = qemu_get_be32(f);
52 }
53
54 static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
55 {
56     *pv = qemu_get_be16(f);
57 }
58
59 static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
60 {
61     *pv = qemu_get_byte(f);
62 }
63
64 #ifdef NEED_CPU_H
65 #if TARGET_LONG_BITS == 64
66 #define qemu_put_betl qemu_put_be64
67 #define qemu_get_betl qemu_get_be64
68 #define qemu_put_betls qemu_put_be64s
69 #define qemu_get_betls qemu_get_be64s
70 #else
71 #define qemu_put_betl qemu_put_be32
72 #define qemu_get_betl qemu_get_be32
73 #define qemu_put_betls qemu_put_be32s
74 #define qemu_get_betls qemu_get_be32s
75 #endif
76 #endif
77
78 int64_t qemu_ftell(QEMUFile *f);
79 int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
80
81 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
82 typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
83
84 int register_savevm(const char *idstr,
85                     int instance_id,
86                     int version_id,
87                     SaveStateHandler *save_state,
88                     LoadStateHandler *load_state,
89                     void *opaque);
90
91 typedef void QEMUResetHandler(void *opaque);
92
93 void qemu_register_reset(QEMUResetHandler *func, void *opaque);
94
95 /* handler to set the boot_device for a specific type of QEMUMachine */
96 /* return 0 if success */
97 typedef int QEMUBootSetHandler(void *opaque, const char *boot_device);
98 void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
99
100 /* These should really be in isa.h, but are here to make pc.h happy.  */
101 typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
102 typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
103
104 #endif