X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=qemu-common.h;h=fdc367997dce8e7ff23ed6dcfea06846159e6a20;hb=3a2eeac0c9033e30b19d88465c9561f982e9e6d0;hp=cb5d46541e8b0b4414d1d7a845307c40b68320f6;hpb=331dadde1900247ee90547ce51c620432c5a8f79;p=qemu diff --git a/qemu-common.h b/qemu-common.h index cb5d465..fdc3679 100644 --- a/qemu-common.h +++ b/qemu-common.h @@ -2,6 +2,13 @@ #ifndef QEMU_COMMON_H #define QEMU_COMMON_H +#define QEMU_NORETURN __attribute__ ((__noreturn__)) + +/* Hack around the mess dyngen-exec.h causes: We need QEMU_NORETURN in files that + cannot include the following headers without conflicts. This condition has + to be removed once dyngen is gone. */ +#ifndef __DYNGEN_EXEC_H__ + /* we put basic includes here to avoid repeating them in device drivers */ #include #include @@ -16,6 +23,7 @@ #include #include #include +#include #include "config-host.h" #ifndef O_LARGEFILE @@ -40,9 +48,6 @@ struct iovec { #endif #ifdef _WIN32 -#define WIN32_LEAN_AND_MEAN -#define WINVER 0x0501 /* needed for ipv6 bits */ -#include #define fsync _commit #define lseek _lseeki64 #define ENOTSUP 4096 @@ -104,7 +109,7 @@ char *pstrcat(char *buf, int buf_size, const char *s); int strstart(const char *str, const char *val, const char **ptr); int stristart(const char *str, const char *val, const char **ptr); time_t mktimegm(struct tm *tm); -int fls(int i); +int qemu_fls(int i); #define qemu_isalnum(c) isalnum((unsigned char)(c)) #define qemu_isalpha(c) isalpha((unsigned char)(c)) @@ -134,9 +139,8 @@ void *get_mmap_addr(unsigned long size); /* Error handling. */ -void hw_error(const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 1, 2))) - __attribute__ ((__noreturn__)); +void QEMU_NORETURN hw_error(const char *fmt, ...) + __attribute__ ((__format__ (__printf__, 1, 2))); /* IO callbacks. */ typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); @@ -157,6 +161,10 @@ typedef struct HCIInfo HCIInfo; typedef struct AudioState AudioState; typedef struct BlockDriverState BlockDriverState; typedef struct DisplayState DisplayState; +typedef struct DisplayChangeListener DisplayChangeListener; +typedef struct DisplaySurface DisplaySurface; +typedef struct DisplayAllocator DisplayAllocator; +typedef struct PixelFormat PixelFormat; typedef struct TextConsole TextConsole; typedef TextConsole QEMUConsole; typedef struct CharDriverState CharDriverState; @@ -170,7 +178,12 @@ typedef struct PCIBus PCIBus; typedef struct PCIDevice PCIDevice; typedef struct SerialState SerialState; typedef struct IRQState *qemu_irq; -struct pcmcia_card_s; +typedef struct PCMCIACardState PCMCIACardState; +typedef struct MouseTransformInfo MouseTransformInfo; +typedef struct uWireSlave uWireSlave; +typedef struct I2SCodec I2SCodec; +typedef struct DeviceState DeviceState; +typedef struct SSIBus SSIBus; /* CPU save/load. */ void cpu_save(QEMUFile *f, void *opaque); @@ -179,4 +192,39 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id); /* Force QEMU to stop what it's doing and service IO */ void qemu_service_io(void); +/* Force QEMU to process pending events */ +void qemu_notify_event(void); + +/* Unblock cpu */ +void qemu_cpu_kick(void *env); +int qemu_cpu_self(void *env); + +#ifdef CONFIG_USER_ONLY +#define qemu_init_vcpu(env) do { } while (0) +#else +void qemu_init_vcpu(void *env); +#endif + +typedef struct QEMUIOVector { + struct iovec *iov; + int niov; + int nalloc; + size_t size; +} QEMUIOVector; + +void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint); +void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov); +void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len); +void qemu_iovec_destroy(QEMUIOVector *qiov); +void qemu_iovec_reset(QEMUIOVector *qiov); +void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf); +void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count); + +struct Monitor; +typedef struct Monitor Monitor; + +#include "module.h" + +#endif /* dyngen-exec.h hack */ + #endif