Commit faf07963cb03f98d52ca1f7fde7482a3cb309bcc
1 parent
28c5af54
Split block API from vl.h.
Remove QEMU_TOOL. Replace with QEMU_IMG and NEED_CPU_H. Avoid linking qemu-img against whole system emulatior. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3578 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
21 changed files
with
307 additions
and
271 deletions
Makefile
| ... | ... | @@ -13,7 +13,6 @@ BASE_LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS) |
| 13 | 13 | |
| 14 | 14 | CPPFLAGS += -I. -I$(SRC_PATH) -MMD -MP |
| 15 | 15 | CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE |
| 16 | -CPPFLAGS += -DQEMU_TOOL | |
| 17 | 16 | LIBS= |
| 18 | 17 | ifdef CONFIG_STATIC |
| 19 | 18 | BASE_LDFLAGS += -static |
| ... | ... | @@ -33,15 +32,23 @@ subdir-%: dyngen$(EXESUF) libqemu_common.a |
| 33 | 32 | |
| 34 | 33 | recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS)) |
| 35 | 34 | |
| 35 | +####################################################################### | |
| 36 | +# BLOCK_OBJS is code used by both qemu system emulation and qemu-img | |
| 37 | + | |
| 38 | +BLOCK_OBJS=cutils.o | |
| 39 | +BLOCK_OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o | |
| 40 | +BLOCK_OBJS+=block-dmg.o block-bochs.o block-vpc.o block-vvfat.o | |
| 41 | +BLOCK_OBJS+=block-qcow2.o block-parallels.o | |
| 42 | + | |
| 36 | 43 | ###################################################################### |
| 37 | -# libqemu_common.a: target indepedent part of system emulation. The | |
| 44 | +# libqemu_common.a: Target indepedent part of system emulation. The | |
| 38 | 45 | # long term path is to suppress *all* target specific code in case of |
| 39 | 46 | # system emulation, i.e. a single QEMU executable should support all |
| 40 | 47 | # CPUs and machines. |
| 41 | 48 | |
| 42 | -OBJS+=cutils.o readline.o console.o | |
| 43 | -#OBJS+=block.o block-raw.o | |
| 44 | -OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o block-dmg.o block-bochs.o block-vpc.o block-vvfat.o block-qcow2.o block-parallels.o | |
| 49 | +OBJS=$(BLOCK_OBJS) | |
| 50 | +OBJS+=readline.o console.o | |
| 51 | +OBJS+=block.o | |
| 45 | 52 | |
| 46 | 53 | ifdef CONFIG_WIN32 |
| 47 | 54 | OBJS+=tap-win32.o |
| ... | ... | @@ -105,9 +112,12 @@ libqemu_common.a: $(OBJS) |
| 105 | 112 | |
| 106 | 113 | ###################################################################### |
| 107 | 114 | |
| 108 | -qemu-img$(EXESUF): qemu-img.o block.o block-raw.o libqemu_common.a | |
| 115 | +qemu-img$(EXESUF): qemu-img.o qemu-img-block.o qemu-img-block-raw.o $(BLOCK_OBJS) | |
| 109 | 116 | $(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS) |
| 110 | 117 | |
| 118 | +qemu-img-%.o: %.c | |
| 119 | + $(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG $(BASE_CFLAGS) -c -o $@ $< | |
| 120 | + | |
| 111 | 121 | %.o: %.c |
| 112 | 122 | $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< |
| 113 | 123 | ... | ... |
Makefile.target
| ... | ... | @@ -24,7 +24,7 @@ TARGET_BASE_ARCH:=sparc |
| 24 | 24 | endif |
| 25 | 25 | TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH) |
| 26 | 26 | VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw |
| 27 | -CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MP | |
| 27 | +CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MP -DNEED_CPU_H | |
| 28 | 28 | ifdef CONFIG_DARWIN_USER |
| 29 | 29 | VPATH+=:$(SRC_PATH)/darwin-user |
| 30 | 30 | CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH) |
| ... | ... | @@ -398,7 +398,7 @@ endif |
| 398 | 398 | # must use static linking to avoid leaving stuff in virtual address space |
| 399 | 399 | VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o |
| 400 | 400 | # XXX: suppress QEMU_TOOL tests |
| 401 | -VL_OBJS+=block.o block-raw.o | |
| 401 | +VL_OBJS+=block-raw.o | |
| 402 | 402 | VL_OBJS+=irq.o |
| 403 | 403 | |
| 404 | 404 | ifdef CONFIG_ALSA | ... | ... |
aes.c
block-bochs.c
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "qemu-common.h" | |
| 26 | 26 | #include "block_int.h" |
| 27 | 27 | |
| 28 | 28 | /**************************************************************/ | ... | ... |
block-cloop.c
block-cow.c
block-dmg.c
block-parallels.c
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 24 | 24 | * THE SOFTWARE. |
| 25 | 25 | */ |
| 26 | -#include "vl.h" | |
| 26 | +#include "qemu-common.h" | |
| 27 | 27 | #include "block_int.h" |
| 28 | 28 | |
| 29 | 29 | /**************************************************************/ | ... | ... |
block-qcow.c
block-qcow2.c
block-raw.c
| ... | ... | @@ -21,16 +21,16 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | +#ifdef QEMU_IMG | |
| 25 | +#include "qemu-common.h" | |
| 26 | +#else | |
| 24 | 27 | #include "vl.h" |
| 28 | +#endif | |
| 25 | 29 | #include "block_int.h" |
| 26 | 30 | #include <assert.h> |
| 27 | 31 | #ifndef _WIN32 |
| 28 | 32 | #include <aio.h> |
| 29 | 33 | |
| 30 | -#ifndef QEMU_TOOL | |
| 31 | -#include "exec-all.h" | |
| 32 | -#endif | |
| 33 | - | |
| 34 | 34 | #ifdef CONFIG_COCOA |
| 35 | 35 | #include <paths.h> |
| 36 | 36 | #include <sys/param.h> |
| ... | ... | @@ -59,8 +59,9 @@ |
| 59 | 59 | |
| 60 | 60 | //#define DEBUG_FLOPPY |
| 61 | 61 | |
| 62 | -#define DEBUG_BLOCK | |
| 63 | -#if defined(DEBUG_BLOCK) && !defined(QEMU_TOOL) | |
| 62 | +//#define DEBUG_BLOCK | |
| 63 | +#if defined(DEBUG_BLOCK) && !defined(QEMU_IMG) | |
| 64 | +#include "exec-all.h" | |
| 64 | 65 | #define DEBUG_BLOCK_PRINT(formatCstr, args...) do { if (loglevel != 0) \ |
| 65 | 66 | { fprintf(logfile, formatCstr, ##args); fflush(logfile); } } while (0) |
| 66 | 67 | #else |
| ... | ... | @@ -242,7 +243,7 @@ static int aio_initialized = 0; |
| 242 | 243 | |
| 243 | 244 | static void aio_signal_handler(int signum) |
| 244 | 245 | { |
| 245 | -#ifndef QEMU_TOOL | |
| 246 | +#ifndef QEMU_IMG | |
| 246 | 247 | CPUState *env = cpu_single_env; |
| 247 | 248 | if (env) { |
| 248 | 249 | /* stop the currently executing cpu because a timer occured */ |
| ... | ... | @@ -352,7 +353,7 @@ void qemu_aio_wait(void) |
| 352 | 353 | sigset_t set; |
| 353 | 354 | int nb_sigs; |
| 354 | 355 | |
| 355 | -#ifndef QEMU_TOOL | |
| 356 | +#ifndef QEMU_IMG | |
| 356 | 357 | if (qemu_bh_poll()) |
| 357 | 358 | return; |
| 358 | 359 | #endif |
| ... | ... | @@ -693,7 +694,7 @@ static int hdev_open(BlockDriverState *bs, const char *filename, int flags) |
| 693 | 694 | return 0; |
| 694 | 695 | } |
| 695 | 696 | |
| 696 | -#if defined(__linux__) && !defined(QEMU_TOOL) | |
| 697 | +#if defined(__linux__) && !defined(QEMU_IMG) | |
| 697 | 698 | |
| 698 | 699 | /* Note: we do not have a reliable method to detect if the floppy is |
| 699 | 700 | present. The current method is to try to open the floppy at every |
| ... | ... | @@ -976,7 +977,7 @@ static int raw_open(BlockDriverState *bs, const char *filename, int flags) |
| 976 | 977 | } else { |
| 977 | 978 | create_flags = OPEN_EXISTING; |
| 978 | 979 | } |
| 979 | -#ifdef QEMU_TOOL | |
| 980 | +#ifdef QEMU_IMG | |
| 980 | 981 | overlapped = FILE_ATTRIBUTE_NORMAL; |
| 981 | 982 | #else |
| 982 | 983 | overlapped = FILE_FLAG_OVERLAPPED; |
| ... | ... | @@ -1039,7 +1040,7 @@ static int raw_pwrite(BlockDriverState *bs, int64_t offset, |
| 1039 | 1040 | } |
| 1040 | 1041 | |
| 1041 | 1042 | #if 0 |
| 1042 | -#ifndef QEMU_TOOL | |
| 1043 | +#ifndef QEMU_IMG | |
| 1043 | 1044 | static void raw_aio_cb(void *opaque) |
| 1044 | 1045 | { |
| 1045 | 1046 | RawAIOCB *acb = opaque; |
| ... | ... | @@ -1078,7 +1079,7 @@ static RawAIOCB *raw_aio_setup(BlockDriverState *bs, |
| 1078 | 1079 | acb->ov.OffsetHigh = offset >> 32; |
| 1079 | 1080 | acb->ov.hEvent = acb->hEvent; |
| 1080 | 1081 | acb->count = nb_sectors * 512; |
| 1081 | -#ifndef QEMU_TOOL | |
| 1082 | +#ifndef QEMU_IMG | |
| 1082 | 1083 | qemu_add_wait_object(acb->ov.hEvent, raw_aio_cb, acb); |
| 1083 | 1084 | #endif |
| 1084 | 1085 | return acb; |
| ... | ... | @@ -1100,7 +1101,7 @@ static BlockDriverAIOCB *raw_aio_read(BlockDriverState *bs, |
| 1100 | 1101 | qemu_aio_release(acb); |
| 1101 | 1102 | return NULL; |
| 1102 | 1103 | } |
| 1103 | -#ifdef QEMU_TOOL | |
| 1104 | +#ifdef QEMU_IMG | |
| 1104 | 1105 | qemu_aio_release(acb); |
| 1105 | 1106 | #endif |
| 1106 | 1107 | return (BlockDriverAIOCB *)acb; |
| ... | ... | @@ -1122,7 +1123,7 @@ static BlockDriverAIOCB *raw_aio_write(BlockDriverState *bs, |
| 1122 | 1123 | qemu_aio_release(acb); |
| 1123 | 1124 | return NULL; |
| 1124 | 1125 | } |
| 1125 | -#ifdef QEMU_TOOL | |
| 1126 | +#ifdef QEMU_IMG | |
| 1126 | 1127 | qemu_aio_release(acb); |
| 1127 | 1128 | #endif |
| 1128 | 1129 | return (BlockDriverAIOCB *)acb; |
| ... | ... | @@ -1130,7 +1131,7 @@ static BlockDriverAIOCB *raw_aio_write(BlockDriverState *bs, |
| 1130 | 1131 | |
| 1131 | 1132 | static void raw_aio_cancel(BlockDriverAIOCB *blockacb) |
| 1132 | 1133 | { |
| 1133 | -#ifndef QEMU_TOOL | |
| 1134 | +#ifndef QEMU_IMG | |
| 1134 | 1135 | RawAIOCB *acb = (RawAIOCB *)blockacb; |
| 1135 | 1136 | BlockDriverState *bs = acb->common.bs; |
| 1136 | 1137 | BDRVRawState *s = bs->opaque; |
| ... | ... | @@ -1238,7 +1239,7 @@ void qemu_aio_wait_start(void) |
| 1238 | 1239 | |
| 1239 | 1240 | void qemu_aio_wait(void) |
| 1240 | 1241 | { |
| 1241 | -#ifndef QEMU_TOOL | |
| 1242 | +#ifndef QEMU_IMG | |
| 1242 | 1243 | qemu_bh_poll(); |
| 1243 | 1244 | #endif |
| 1244 | 1245 | } |
| ... | ... | @@ -1344,7 +1345,7 @@ static int hdev_open(BlockDriverState *bs, const char *filename, int flags) |
| 1344 | 1345 | } |
| 1345 | 1346 | create_flags = OPEN_EXISTING; |
| 1346 | 1347 | |
| 1347 | -#ifdef QEMU_TOOL | |
| 1348 | +#ifdef QEMU_IMG | |
| 1348 | 1349 | overlapped = FILE_ATTRIBUTE_NORMAL; |
| 1349 | 1350 | #else |
| 1350 | 1351 | overlapped = FILE_FLAG_OVERLAPPED; | ... | ... |
block-vmdk.c
block-vpc.c
| ... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "qemu-common.h" | |
| 25 | 25 | #include "block_int.h" |
| 26 | 26 | |
| 27 | 27 | /**************************************************************/ | ... | ... |
block-vvfat.c
block.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | +#ifdef QEMU_IMG | |
| 25 | +#include "qemu-common.h" | |
| 26 | +#else | |
| 24 | 27 | #include "vl.h" |
| 28 | +#endif | |
| 25 | 29 | #include "block_int.h" |
| 26 | 30 | |
| 27 | 31 | #ifdef _BSD |
| ... | ... | @@ -53,7 +57,7 @@ static int bdrv_read_em(BlockDriverState *bs, int64_t sector_num, |
| 53 | 57 | static int bdrv_write_em(BlockDriverState *bs, int64_t sector_num, |
| 54 | 58 | const uint8_t *buf, int nb_sectors); |
| 55 | 59 | |
| 56 | -static BlockDriverState *bdrv_first; | |
| 60 | +BlockDriverState *bdrv_first; | |
| 57 | 61 | static BlockDriver *first_drv; |
| 58 | 62 | |
| 59 | 63 | int path_is_absolute(const char *path) |
| ... | ... | @@ -859,6 +863,7 @@ void bdrv_flush(BlockDriverState *bs) |
| 859 | 863 | bdrv_flush(bs->backing_hd); |
| 860 | 864 | } |
| 861 | 865 | |
| 866 | +#ifndef QEMU_IMG | |
| 862 | 867 | void bdrv_info(void) |
| 863 | 868 | { |
| 864 | 869 | BlockDriverState *bs; |
| ... | ... | @@ -898,6 +903,7 @@ void bdrv_info(void) |
| 898 | 903 | term_printf("\n"); |
| 899 | 904 | } |
| 900 | 905 | } |
| 906 | +#endif | |
| 901 | 907 | |
| 902 | 908 | void bdrv_get_backing_filename(BlockDriverState *bs, |
| 903 | 909 | char *filename, int filename_size) |
| ... | ... | @@ -1102,7 +1108,7 @@ void bdrv_aio_cancel(BlockDriverAIOCB *acb) |
| 1102 | 1108 | /**************************************************************/ |
| 1103 | 1109 | /* async block device emulation */ |
| 1104 | 1110 | |
| 1105 | -#ifdef QEMU_TOOL | |
| 1111 | +#ifdef QEMU_IMG | |
| 1106 | 1112 | static BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs, |
| 1107 | 1113 | int64_t sector_num, uint8_t *buf, int nb_sectors, |
| 1108 | 1114 | BlockDriverCompletionFunc *cb, void *opaque) |
| ... | ... | @@ -1172,7 +1178,7 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb) |
| 1172 | 1178 | qemu_bh_cancel(acb->bh); |
| 1173 | 1179 | qemu_aio_release(acb); |
| 1174 | 1180 | } |
| 1175 | -#endif /* !QEMU_TOOL */ | |
| 1181 | +#endif /* !QEMU_IMG */ | |
| 1176 | 1182 | |
| 1177 | 1183 | /**************************************************************/ |
| 1178 | 1184 | /* sync block device emulation */ | ... | ... |
block.h
0 โ 100644
| 1 | +#ifndef BLOCK_H | |
| 2 | +#define BLOCK_H | |
| 3 | + | |
| 4 | +/* block.c */ | |
| 5 | +typedef struct BlockDriverState BlockDriverState; | |
| 6 | +typedef struct BlockDriver BlockDriver; | |
| 7 | + | |
| 8 | +extern BlockDriver bdrv_raw; | |
| 9 | +extern BlockDriver bdrv_host_device; | |
| 10 | +extern BlockDriver bdrv_cow; | |
| 11 | +extern BlockDriver bdrv_qcow; | |
| 12 | +extern BlockDriver bdrv_vmdk; | |
| 13 | +extern BlockDriver bdrv_cloop; | |
| 14 | +extern BlockDriver bdrv_dmg; | |
| 15 | +extern BlockDriver bdrv_bochs; | |
| 16 | +extern BlockDriver bdrv_vpc; | |
| 17 | +extern BlockDriver bdrv_vvfat; | |
| 18 | +extern BlockDriver bdrv_qcow2; | |
| 19 | +extern BlockDriver bdrv_parallels; | |
| 20 | + | |
| 21 | +typedef struct BlockDriverInfo { | |
| 22 | + /* in bytes, 0 if irrelevant */ | |
| 23 | + int cluster_size; | |
| 24 | + /* offset at which the VM state can be saved (0 if not possible) */ | |
| 25 | + int64_t vm_state_offset; | |
| 26 | +} BlockDriverInfo; | |
| 27 | + | |
| 28 | +typedef struct QEMUSnapshotInfo { | |
| 29 | + char id_str[128]; /* unique snapshot id */ | |
| 30 | + /* the following fields are informative. They are not needed for | |
| 31 | + the consistency of the snapshot */ | |
| 32 | + char name[256]; /* user choosen name */ | |
| 33 | + uint32_t vm_state_size; /* VM state info size */ | |
| 34 | + uint32_t date_sec; /* UTC date of the snapshot */ | |
| 35 | + uint32_t date_nsec; | |
| 36 | + uint64_t vm_clock_nsec; /* VM clock relative to boot */ | |
| 37 | +} QEMUSnapshotInfo; | |
| 38 | + | |
| 39 | +#define BDRV_O_RDONLY 0x0000 | |
| 40 | +#define BDRV_O_RDWR 0x0002 | |
| 41 | +#define BDRV_O_ACCESS 0x0003 | |
| 42 | +#define BDRV_O_CREAT 0x0004 /* create an empty file */ | |
| 43 | +#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */ | |
| 44 | +#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to | |
| 45 | + use a disk image format on top of | |
| 46 | + it (default for | |
| 47 | + bdrv_file_open()) */ | |
| 48 | + | |
| 49 | +#ifndef QEMU_IMG | |
| 50 | +void bdrv_info(void); | |
| 51 | +#endif | |
| 52 | + | |
| 53 | +void bdrv_init(void); | |
| 54 | +BlockDriver *bdrv_find_format(const char *format_name); | |
| 55 | +int bdrv_create(BlockDriver *drv, | |
| 56 | + const char *filename, int64_t size_in_sectors, | |
| 57 | + const char *backing_file, int flags); | |
| 58 | +BlockDriverState *bdrv_new(const char *device_name); | |
| 59 | +void bdrv_delete(BlockDriverState *bs); | |
| 60 | +int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); | |
| 61 | +int bdrv_open(BlockDriverState *bs, const char *filename, int flags); | |
| 62 | +int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, | |
| 63 | + BlockDriver *drv); | |
| 64 | +void bdrv_close(BlockDriverState *bs); | |
| 65 | +int bdrv_read(BlockDriverState *bs, int64_t sector_num, | |
| 66 | + uint8_t *buf, int nb_sectors); | |
| 67 | +int bdrv_write(BlockDriverState *bs, int64_t sector_num, | |
| 68 | + const uint8_t *buf, int nb_sectors); | |
| 69 | +int bdrv_pread(BlockDriverState *bs, int64_t offset, | |
| 70 | + void *buf, int count); | |
| 71 | +int bdrv_pwrite(BlockDriverState *bs, int64_t offset, | |
| 72 | + const void *buf, int count); | |
| 73 | +int bdrv_truncate(BlockDriverState *bs, int64_t offset); | |
| 74 | +int64_t bdrv_getlength(BlockDriverState *bs); | |
| 75 | +void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr); | |
| 76 | +int bdrv_commit(BlockDriverState *bs); | |
| 77 | +void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size); | |
| 78 | +/* async block I/O */ | |
| 79 | +typedef struct BlockDriverAIOCB BlockDriverAIOCB; | |
| 80 | +typedef void BlockDriverCompletionFunc(void *opaque, int ret); | |
| 81 | + | |
| 82 | +BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num, | |
| 83 | + uint8_t *buf, int nb_sectors, | |
| 84 | + BlockDriverCompletionFunc *cb, void *opaque); | |
| 85 | +BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num, | |
| 86 | + const uint8_t *buf, int nb_sectors, | |
| 87 | + BlockDriverCompletionFunc *cb, void *opaque); | |
| 88 | +void bdrv_aio_cancel(BlockDriverAIOCB *acb); | |
| 89 | + | |
| 90 | +void qemu_aio_init(void); | |
| 91 | +void qemu_aio_poll(void); | |
| 92 | +void qemu_aio_flush(void); | |
| 93 | +void qemu_aio_wait_start(void); | |
| 94 | +void qemu_aio_wait(void); | |
| 95 | +void qemu_aio_wait_end(void); | |
| 96 | + | |
| 97 | +int qemu_key_check(BlockDriverState *bs, const char *name); | |
| 98 | + | |
| 99 | +/* Ensure contents are flushed to disk. */ | |
| 100 | +void bdrv_flush(BlockDriverState *bs); | |
| 101 | + | |
| 102 | +#define BDRV_TYPE_HD 0 | |
| 103 | +#define BDRV_TYPE_CDROM 1 | |
| 104 | +#define BDRV_TYPE_FLOPPY 2 | |
| 105 | +#define BIOS_ATA_TRANSLATION_AUTO 0 | |
| 106 | +#define BIOS_ATA_TRANSLATION_NONE 1 | |
| 107 | +#define BIOS_ATA_TRANSLATION_LBA 2 | |
| 108 | +#define BIOS_ATA_TRANSLATION_LARGE 3 | |
| 109 | +#define BIOS_ATA_TRANSLATION_RECHS 4 | |
| 110 | + | |
| 111 | +void bdrv_set_geometry_hint(BlockDriverState *bs, | |
| 112 | + int cyls, int heads, int secs); | |
| 113 | +void bdrv_set_type_hint(BlockDriverState *bs, int type); | |
| 114 | +void bdrv_set_translation_hint(BlockDriverState *bs, int translation); | |
| 115 | +void bdrv_get_geometry_hint(BlockDriverState *bs, | |
| 116 | + int *pcyls, int *pheads, int *psecs); | |
| 117 | +int bdrv_get_type_hint(BlockDriverState *bs); | |
| 118 | +int bdrv_get_translation_hint(BlockDriverState *bs); | |
| 119 | +int bdrv_is_removable(BlockDriverState *bs); | |
| 120 | +int bdrv_is_read_only(BlockDriverState *bs); | |
| 121 | +int bdrv_is_inserted(BlockDriverState *bs); | |
| 122 | +int bdrv_media_changed(BlockDriverState *bs); | |
| 123 | +int bdrv_is_locked(BlockDriverState *bs); | |
| 124 | +void bdrv_set_locked(BlockDriverState *bs, int locked); | |
| 125 | +void bdrv_eject(BlockDriverState *bs, int eject_flag); | |
| 126 | +void bdrv_set_change_cb(BlockDriverState *bs, | |
| 127 | + void (*change_cb)(void *opaque), void *opaque); | |
| 128 | +void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size); | |
| 129 | +BlockDriverState *bdrv_find(const char *name); | |
| 130 | +void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque); | |
| 131 | +int bdrv_is_encrypted(BlockDriverState *bs); | |
| 132 | +int bdrv_set_key(BlockDriverState *bs, const char *key); | |
| 133 | +void bdrv_iterate_format(void (*it)(void *opaque, const char *name), | |
| 134 | + void *opaque); | |
| 135 | +const char *bdrv_get_device_name(BlockDriverState *bs); | |
| 136 | +int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num, | |
| 137 | + const uint8_t *buf, int nb_sectors); | |
| 138 | +int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi); | |
| 139 | + | |
| 140 | +void bdrv_get_backing_filename(BlockDriverState *bs, | |
| 141 | + char *filename, int filename_size); | |
| 142 | +int bdrv_snapshot_create(BlockDriverState *bs, | |
| 143 | + QEMUSnapshotInfo *sn_info); | |
| 144 | +int bdrv_snapshot_goto(BlockDriverState *bs, | |
| 145 | + const char *snapshot_id); | |
| 146 | +int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id); | |
| 147 | +int bdrv_snapshot_list(BlockDriverState *bs, | |
| 148 | + QEMUSnapshotInfo **psn_info); | |
| 149 | +char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn); | |
| 150 | + | |
| 151 | +char *get_human_readable_size(char *buf, int buf_size, int64_t size); | |
| 152 | +int path_is_absolute(const char *path); | |
| 153 | +void path_combine(char *dest, int dest_size, | |
| 154 | + const char *base_path, | |
| 155 | + const char *filename); | |
| 156 | + | |
| 157 | +#endif | ... | ... |
block_int.h
| ... | ... | @@ -24,6 +24,8 @@ |
| 24 | 24 | #ifndef BLOCK_INT_H |
| 25 | 25 | #define BLOCK_INT_H |
| 26 | 26 | |
| 27 | +#include "block.h" | |
| 28 | + | |
| 27 | 29 | #define BLOCK_FLAG_ENCRYPT 1 |
| 28 | 30 | #define BLOCK_FLAG_COMPRESS 2 |
| 29 | 31 | #define BLOCK_FLAG_COMPAT6 4 |
| ... | ... | @@ -133,4 +135,6 @@ void *qemu_aio_get(BlockDriverState *bs, BlockDriverCompletionFunc *cb, |
| 133 | 135 | void *opaque); |
| 134 | 136 | void qemu_aio_release(void *p); |
| 135 | 137 | |
| 138 | +BlockDriverState *bdrv_first; | |
| 139 | + | |
| 136 | 140 | #endif /* BLOCK_INT_H */ | ... | ... |
cutils.c
qemu-common.h
0 โ 100644
| 1 | +/* Common header file that is included by all of qemu. */ | |
| 2 | +#ifndef QEMU_COMMON_H | |
| 3 | +#define QEMU_COMMON_H | |
| 4 | + | |
| 5 | +/* we put basic includes here to avoid repeating them in device drivers */ | |
| 6 | +#include <stdlib.h> | |
| 7 | +#include <stdio.h> | |
| 8 | +#include <stdarg.h> | |
| 9 | +#include <string.h> | |
| 10 | +#include <inttypes.h> | |
| 11 | +#include <limits.h> | |
| 12 | +#include <time.h> | |
| 13 | +#include <ctype.h> | |
| 14 | +#include <errno.h> | |
| 15 | +#include <unistd.h> | |
| 16 | +#include <fcntl.h> | |
| 17 | +#include <sys/stat.h> | |
| 18 | + | |
| 19 | +#ifndef O_LARGEFILE | |
| 20 | +#define O_LARGEFILE 0 | |
| 21 | +#endif | |
| 22 | +#ifndef O_BINARY | |
| 23 | +#define O_BINARY 0 | |
| 24 | +#endif | |
| 25 | + | |
| 26 | +#ifndef ENOMEDIUM | |
| 27 | +#define ENOMEDIUM ENODEV | |
| 28 | +#endif | |
| 29 | + | |
| 30 | +#ifdef _WIN32 | |
| 31 | +#include <windows.h> | |
| 32 | +#define fsync _commit | |
| 33 | +#define lseek _lseeki64 | |
| 34 | +#define ENOTSUP 4096 | |
| 35 | +extern int qemu_ftruncate64(int, int64_t); | |
| 36 | +#define ftruncate qemu_ftruncate64 | |
| 37 | + | |
| 38 | + | |
| 39 | +static inline char *realpath(const char *path, char *resolved_path) | |
| 40 | +{ | |
| 41 | + _fullpath(resolved_path, path, _MAX_PATH); | |
| 42 | + return resolved_path; | |
| 43 | +} | |
| 44 | + | |
| 45 | +#define PRId64 "I64d" | |
| 46 | +#define PRIx64 "I64x" | |
| 47 | +#define PRIu64 "I64u" | |
| 48 | +#define PRIo64 "I64o" | |
| 49 | +#endif | |
| 50 | + | |
| 51 | +/* FIXME: Remove NEED_CPU_H. */ | |
| 52 | +#ifndef NEED_CPU_H | |
| 53 | + | |
| 54 | +#include "config-host.h" | |
| 55 | +#include <setjmp.h> | |
| 56 | +#include "osdep.h" | |
| 57 | +#include "bswap.h" | |
| 58 | + | |
| 59 | +#else | |
| 60 | + | |
| 61 | +#include "cpu.h" | |
| 62 | + | |
| 63 | +#endif /* !defined(NEED_CPU_H) */ | |
| 64 | + | |
| 65 | +/* bottom halves */ | |
| 66 | +typedef struct QEMUBH QEMUBH; | |
| 67 | + | |
| 68 | +typedef void QEMUBHFunc(void *opaque); | |
| 69 | + | |
| 70 | +QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); | |
| 71 | +void qemu_bh_schedule(QEMUBH *bh); | |
| 72 | +void qemu_bh_cancel(QEMUBH *bh); | |
| 73 | +void qemu_bh_delete(QEMUBH *bh); | |
| 74 | +int qemu_bh_poll(void); | |
| 75 | + | |
| 76 | +/* cutils.c */ | |
| 77 | +void pstrcpy(char *buf, int buf_size, const char *str); | |
| 78 | +char *pstrcat(char *buf, int buf_size, const char *s); | |
| 79 | +int strstart(const char *str, const char *val, const char **ptr); | |
| 80 | +int stristart(const char *str, const char *val, const char **ptr); | |
| 81 | +time_t mktimegm(struct tm *tm); | |
| 82 | + | |
| 83 | +#endif | ... | ... |
qemu-img.c
vl.h
| ... | ... | @@ -24,66 +24,10 @@ |
| 24 | 24 | #ifndef VL_H |
| 25 | 25 | #define VL_H |
| 26 | 26 | |
| 27 | -/* we put basic includes here to avoid repeating them in device drivers */ | |
| 28 | -#include <stdlib.h> | |
| 29 | -#include <stdio.h> | |
| 30 | -#include <stdarg.h> | |
| 31 | -#include <string.h> | |
| 32 | -#include <inttypes.h> | |
| 33 | -#include <limits.h> | |
| 34 | -#include <time.h> | |
| 35 | -#include <ctype.h> | |
| 36 | -#include <errno.h> | |
| 37 | -#include <unistd.h> | |
| 38 | -#include <fcntl.h> | |
| 39 | -#include <sys/stat.h> | |
| 40 | - | |
| 41 | -#ifndef O_LARGEFILE | |
| 42 | -#define O_LARGEFILE 0 | |
| 43 | -#endif | |
| 44 | -#ifndef O_BINARY | |
| 45 | -#define O_BINARY 0 | |
| 46 | -#endif | |
| 47 | - | |
| 48 | -#ifndef ENOMEDIUM | |
| 49 | -#define ENOMEDIUM ENODEV | |
| 50 | -#endif | |
| 51 | - | |
| 52 | -#ifdef _WIN32 | |
| 53 | -#include <windows.h> | |
| 54 | -#define fsync _commit | |
| 55 | -#define lseek _lseeki64 | |
| 56 | -#define ENOTSUP 4096 | |
| 57 | -extern int qemu_ftruncate64(int, int64_t); | |
| 58 | -#define ftruncate qemu_ftruncate64 | |
| 59 | - | |
| 60 | - | |
| 61 | -static inline char *realpath(const char *path, char *resolved_path) | |
| 62 | -{ | |
| 63 | - _fullpath(resolved_path, path, _MAX_PATH); | |
| 64 | - return resolved_path; | |
| 65 | -} | |
| 66 | - | |
| 67 | -#define PRId64 "I64d" | |
| 68 | -#define PRIx64 "I64x" | |
| 69 | -#define PRIu64 "I64u" | |
| 70 | -#define PRIo64 "I64o" | |
| 71 | -#endif | |
| 72 | - | |
| 73 | -#ifdef QEMU_TOOL | |
| 74 | - | |
| 75 | -/* we use QEMU_TOOL on code which does not depend on the target CPU | |
| 76 | - type */ | |
| 77 | -#include "config-host.h" | |
| 78 | -#include <setjmp.h> | |
| 79 | -#include "osdep.h" | |
| 80 | -#include "bswap.h" | |
| 81 | - | |
| 82 | -#else | |
| 83 | - | |
| 84 | -#include "cpu.h" | |
| 27 | +#include "qemu-common.h" | |
| 85 | 28 | |
| 86 | -#endif /* !defined(QEMU_TOOL) */ | |
| 29 | +/* FIXME: Remove this. */ | |
| 30 | +#include "block.h" | |
| 87 | 31 | |
| 88 | 32 | #ifndef glue |
| 89 | 33 | #define xglue(x, y) x ## y |
| ... | ... | @@ -118,13 +62,6 @@ static inline char *realpath(const char *path, char *resolved_path) |
| 118 | 62 | |
| 119 | 63 | #include "audio/audio.h" |
| 120 | 64 | |
| 121 | -/* cutils.c */ | |
| 122 | -void pstrcpy(char *buf, int buf_size, const char *str); | |
| 123 | -char *pstrcat(char *buf, int buf_size, const char *s); | |
| 124 | -int strstart(const char *str, const char *val, const char **ptr); | |
| 125 | -int stristart(const char *str, const char *val, const char **ptr); | |
| 126 | -time_t mktimegm(struct tm *tm); | |
| 127 | - | |
| 128 | 65 | /* vl.c */ |
| 129 | 66 | uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); |
| 130 | 67 | |
| ... | ... | @@ -297,8 +234,6 @@ int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); |
| 297 | 234 | void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); |
| 298 | 235 | #endif |
| 299 | 236 | |
| 300 | -typedef struct QEMUBH QEMUBH; | |
| 301 | - | |
| 302 | 237 | /* character device */ |
| 303 | 238 | |
| 304 | 239 | #define CHR_EVENT_BREAK 0 /* serial break char */ |
| ... | ... | @@ -604,166 +539,6 @@ void do_loadvm(const char *name); |
| 604 | 539 | void do_delvm(const char *name); |
| 605 | 540 | void do_info_snapshots(void); |
| 606 | 541 | |
| 607 | -/* bottom halves */ | |
| 608 | -typedef void QEMUBHFunc(void *opaque); | |
| 609 | - | |
| 610 | -QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); | |
| 611 | -void qemu_bh_schedule(QEMUBH *bh); | |
| 612 | -void qemu_bh_cancel(QEMUBH *bh); | |
| 613 | -void qemu_bh_delete(QEMUBH *bh); | |
| 614 | -int qemu_bh_poll(void); | |
| 615 | - | |
| 616 | -/* block.c */ | |
| 617 | -typedef struct BlockDriverState BlockDriverState; | |
| 618 | -typedef struct BlockDriver BlockDriver; | |
| 619 | - | |
| 620 | -extern BlockDriver bdrv_raw; | |
| 621 | -extern BlockDriver bdrv_host_device; | |
| 622 | -extern BlockDriver bdrv_cow; | |
| 623 | -extern BlockDriver bdrv_qcow; | |
| 624 | -extern BlockDriver bdrv_vmdk; | |
| 625 | -extern BlockDriver bdrv_cloop; | |
| 626 | -extern BlockDriver bdrv_dmg; | |
| 627 | -extern BlockDriver bdrv_bochs; | |
| 628 | -extern BlockDriver bdrv_vpc; | |
| 629 | -extern BlockDriver bdrv_vvfat; | |
| 630 | -extern BlockDriver bdrv_qcow2; | |
| 631 | -extern BlockDriver bdrv_parallels; | |
| 632 | - | |
| 633 | -typedef struct BlockDriverInfo { | |
| 634 | - /* in bytes, 0 if irrelevant */ | |
| 635 | - int cluster_size; | |
| 636 | - /* offset at which the VM state can be saved (0 if not possible) */ | |
| 637 | - int64_t vm_state_offset; | |
| 638 | -} BlockDriverInfo; | |
| 639 | - | |
| 640 | -typedef struct QEMUSnapshotInfo { | |
| 641 | - char id_str[128]; /* unique snapshot id */ | |
| 642 | - /* the following fields are informative. They are not needed for | |
| 643 | - the consistency of the snapshot */ | |
| 644 | - char name[256]; /* user choosen name */ | |
| 645 | - uint32_t vm_state_size; /* VM state info size */ | |
| 646 | - uint32_t date_sec; /* UTC date of the snapshot */ | |
| 647 | - uint32_t date_nsec; | |
| 648 | - uint64_t vm_clock_nsec; /* VM clock relative to boot */ | |
| 649 | -} QEMUSnapshotInfo; | |
| 650 | - | |
| 651 | -#define BDRV_O_RDONLY 0x0000 | |
| 652 | -#define BDRV_O_RDWR 0x0002 | |
| 653 | -#define BDRV_O_ACCESS 0x0003 | |
| 654 | -#define BDRV_O_CREAT 0x0004 /* create an empty file */ | |
| 655 | -#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */ | |
| 656 | -#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to | |
| 657 | - use a disk image format on top of | |
| 658 | - it (default for | |
| 659 | - bdrv_file_open()) */ | |
| 660 | - | |
| 661 | -void bdrv_init(void); | |
| 662 | -BlockDriver *bdrv_find_format(const char *format_name); | |
| 663 | -int bdrv_create(BlockDriver *drv, | |
| 664 | - const char *filename, int64_t size_in_sectors, | |
| 665 | - const char *backing_file, int flags); | |
| 666 | -BlockDriverState *bdrv_new(const char *device_name); | |
| 667 | -void bdrv_delete(BlockDriverState *bs); | |
| 668 | -int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags); | |
| 669 | -int bdrv_open(BlockDriverState *bs, const char *filename, int flags); | |
| 670 | -int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, | |
| 671 | - BlockDriver *drv); | |
| 672 | -void bdrv_close(BlockDriverState *bs); | |
| 673 | -int bdrv_read(BlockDriverState *bs, int64_t sector_num, | |
| 674 | - uint8_t *buf, int nb_sectors); | |
| 675 | -int bdrv_write(BlockDriverState *bs, int64_t sector_num, | |
| 676 | - const uint8_t *buf, int nb_sectors); | |
| 677 | -int bdrv_pread(BlockDriverState *bs, int64_t offset, | |
| 678 | - void *buf, int count); | |
| 679 | -int bdrv_pwrite(BlockDriverState *bs, int64_t offset, | |
| 680 | - const void *buf, int count); | |
| 681 | -int bdrv_truncate(BlockDriverState *bs, int64_t offset); | |
| 682 | -int64_t bdrv_getlength(BlockDriverState *bs); | |
| 683 | -void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr); | |
| 684 | -int bdrv_commit(BlockDriverState *bs); | |
| 685 | -void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size); | |
| 686 | -/* async block I/O */ | |
| 687 | -typedef struct BlockDriverAIOCB BlockDriverAIOCB; | |
| 688 | -typedef void BlockDriverCompletionFunc(void *opaque, int ret); | |
| 689 | - | |
| 690 | -BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num, | |
| 691 | - uint8_t *buf, int nb_sectors, | |
| 692 | - BlockDriverCompletionFunc *cb, void *opaque); | |
| 693 | -BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num, | |
| 694 | - const uint8_t *buf, int nb_sectors, | |
| 695 | - BlockDriverCompletionFunc *cb, void *opaque); | |
| 696 | -void bdrv_aio_cancel(BlockDriverAIOCB *acb); | |
| 697 | - | |
| 698 | -void qemu_aio_init(void); | |
| 699 | -void qemu_aio_poll(void); | |
| 700 | -void qemu_aio_flush(void); | |
| 701 | -void qemu_aio_wait_start(void); | |
| 702 | -void qemu_aio_wait(void); | |
| 703 | -void qemu_aio_wait_end(void); | |
| 704 | - | |
| 705 | -int qemu_key_check(BlockDriverState *bs, const char *name); | |
| 706 | - | |
| 707 | -/* Ensure contents are flushed to disk. */ | |
| 708 | -void bdrv_flush(BlockDriverState *bs); | |
| 709 | - | |
| 710 | -#define BDRV_TYPE_HD 0 | |
| 711 | -#define BDRV_TYPE_CDROM 1 | |
| 712 | -#define BDRV_TYPE_FLOPPY 2 | |
| 713 | -#define BIOS_ATA_TRANSLATION_AUTO 0 | |
| 714 | -#define BIOS_ATA_TRANSLATION_NONE 1 | |
| 715 | -#define BIOS_ATA_TRANSLATION_LBA 2 | |
| 716 | -#define BIOS_ATA_TRANSLATION_LARGE 3 | |
| 717 | -#define BIOS_ATA_TRANSLATION_RECHS 4 | |
| 718 | - | |
| 719 | -void bdrv_set_geometry_hint(BlockDriverState *bs, | |
| 720 | - int cyls, int heads, int secs); | |
| 721 | -void bdrv_set_type_hint(BlockDriverState *bs, int type); | |
| 722 | -void bdrv_set_translation_hint(BlockDriverState *bs, int translation); | |
| 723 | -void bdrv_get_geometry_hint(BlockDriverState *bs, | |
| 724 | - int *pcyls, int *pheads, int *psecs); | |
| 725 | -int bdrv_get_type_hint(BlockDriverState *bs); | |
| 726 | -int bdrv_get_translation_hint(BlockDriverState *bs); | |
| 727 | -int bdrv_is_removable(BlockDriverState *bs); | |
| 728 | -int bdrv_is_read_only(BlockDriverState *bs); | |
| 729 | -int bdrv_is_inserted(BlockDriverState *bs); | |
| 730 | -int bdrv_media_changed(BlockDriverState *bs); | |
| 731 | -int bdrv_is_locked(BlockDriverState *bs); | |
| 732 | -void bdrv_set_locked(BlockDriverState *bs, int locked); | |
| 733 | -void bdrv_eject(BlockDriverState *bs, int eject_flag); | |
| 734 | -void bdrv_set_change_cb(BlockDriverState *bs, | |
| 735 | - void (*change_cb)(void *opaque), void *opaque); | |
| 736 | -void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size); | |
| 737 | -void bdrv_info(void); | |
| 738 | -BlockDriverState *bdrv_find(const char *name); | |
| 739 | -void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque); | |
| 740 | -int bdrv_is_encrypted(BlockDriverState *bs); | |
| 741 | -int bdrv_set_key(BlockDriverState *bs, const char *key); | |
| 742 | -void bdrv_iterate_format(void (*it)(void *opaque, const char *name), | |
| 743 | - void *opaque); | |
| 744 | -const char *bdrv_get_device_name(BlockDriverState *bs); | |
| 745 | -int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num, | |
| 746 | - const uint8_t *buf, int nb_sectors); | |
| 747 | -int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi); | |
| 748 | - | |
| 749 | -void bdrv_get_backing_filename(BlockDriverState *bs, | |
| 750 | - char *filename, int filename_size); | |
| 751 | -int bdrv_snapshot_create(BlockDriverState *bs, | |
| 752 | - QEMUSnapshotInfo *sn_info); | |
| 753 | -int bdrv_snapshot_goto(BlockDriverState *bs, | |
| 754 | - const char *snapshot_id); | |
| 755 | -int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id); | |
| 756 | -int bdrv_snapshot_list(BlockDriverState *bs, | |
| 757 | - QEMUSnapshotInfo **psn_info); | |
| 758 | -char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn); | |
| 759 | - | |
| 760 | -char *get_human_readable_size(char *buf, int buf_size, int64_t size); | |
| 761 | -int path_is_absolute(const char *path); | |
| 762 | -void path_combine(char *dest, int dest_size, | |
| 763 | - const char *base_path, | |
| 764 | - const char *filename); | |
| 765 | - | |
| 766 | - | |
| 767 | 542 | /* monitor.c */ |
| 768 | 543 | void monitor_init(CharDriverState *hd, int show_banner); |
| 769 | 544 | void term_puts(const char *str); |
| ... | ... | @@ -804,7 +579,7 @@ void do_info_vnc(void); |
| 804 | 579 | /* x_keymap.c */ |
| 805 | 580 | extern uint8_t _translate_keycode(const int key); |
| 806 | 581 | |
| 807 | -#ifndef QEMU_TOOL | |
| 582 | +#ifdef NEED_CPU_H | |
| 808 | 583 | |
| 809 | 584 | typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, |
| 810 | 585 | const char *boot_device, |
| ... | ... | @@ -1759,5 +1534,5 @@ extern QEMUMachine dummy_m68k_machine; |
| 1759 | 1534 | |
| 1760 | 1535 | #include "gdbstub.h" |
| 1761 | 1536 | |
| 1762 | -#endif /* defined(QEMU_TOOL) */ | |
| 1537 | +#endif /* defined(NEED_CPU_H) */ | |
| 1763 | 1538 | #endif /* VL_H */ | ... | ... |