version 1.1.1.1, 2018/04/24 16:47:19
|
version 1.1.1.2, 2018/04/24 16:50:36
|
Line 2
|
Line 2
|
#ifndef QEMU_COMMON_H |
#ifndef QEMU_COMMON_H |
#define QEMU_COMMON_H |
#define QEMU_COMMON_H |
|
|
|
#ifdef _WIN32 |
|
#define WIN32_LEAN_AND_MEAN |
|
#define WINVER 0x0501 /* needed for ipv6 bits */ |
|
#include <windows.h> |
|
#endif |
|
|
|
#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 */ |
/* we put basic includes here to avoid repeating them in device drivers */ |
#include <stdlib.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdarg.h> |
#include <stdarg.h> |
#include <string.h> |
#include <string.h> |
|
#include <strings.h> |
#include <inttypes.h> |
#include <inttypes.h> |
#include <limits.h> |
#include <limits.h> |
#include <time.h> |
#include <time.h> |
Line 15
|
Line 29
|
#include <unistd.h> |
#include <unistd.h> |
#include <fcntl.h> |
#include <fcntl.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
|
#include "config-host.h" |
|
|
#ifndef O_LARGEFILE |
#ifndef O_LARGEFILE |
#define O_LARGEFILE 0 |
#define O_LARGEFILE 0 |
Line 27
|
Line 42
|
#define ENOMEDIUM ENODEV |
#define ENOMEDIUM ENODEV |
#endif |
#endif |
|
|
|
#ifndef HAVE_IOVEC |
|
#define HAVE_IOVEC |
|
struct iovec { |
|
void *iov_base; |
|
size_t iov_len; |
|
}; |
|
#else |
|
#include <sys/uio.h> |
|
#endif |
|
|
#ifdef _WIN32 |
#ifdef _WIN32 |
#define WIN32_LEAN_AND_MEAN |
|
#include <windows.h> |
|
#define fsync _commit |
#define fsync _commit |
#define lseek _lseeki64 |
#define lseek _lseeki64 |
#define ENOTSUP 4096 |
#define ENOTSUP 4096 |
Line 52 static inline char *realpath(const char
|
Line 75 static inline char *realpath(const char
|
/* FIXME: Remove NEED_CPU_H. */ |
/* FIXME: Remove NEED_CPU_H. */ |
#ifndef NEED_CPU_H |
#ifndef NEED_CPU_H |
|
|
#include "config-host.h" |
|
#include <setjmp.h> |
#include <setjmp.h> |
#include "osdep.h" |
#include "osdep.h" |
#include "bswap.h" |
#include "bswap.h" |
Line 70 typedef void QEMUBHFunc(void *opaque);
|
Line 92 typedef void QEMUBHFunc(void *opaque);
|
|
|
QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); |
QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); |
void qemu_bh_schedule(QEMUBH *bh); |
void qemu_bh_schedule(QEMUBH *bh); |
|
/* Bottom halfs that are scheduled from a bottom half handler are instantly |
|
* invoked. This can create an infinite loop if a bottom half handler |
|
* schedules itself. qemu_bh_schedule_idle() avoids this infinite loop by |
|
* ensuring that the bottom half isn't executed until the next main loop |
|
* iteration. |
|
*/ |
|
void qemu_bh_schedule_idle(QEMUBH *bh); |
void qemu_bh_cancel(QEMUBH *bh); |
void qemu_bh_cancel(QEMUBH *bh); |
void qemu_bh_delete(QEMUBH *bh); |
void qemu_bh_delete(QEMUBH *bh); |
int qemu_bh_poll(void); |
int qemu_bh_poll(void); |
|
|
uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); |
uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); |
|
|
|
void qemu_get_timedate(struct tm *tm, int offset); |
|
int qemu_timedate_diff(struct tm *tm); |
|
|
/* cutils.c */ |
/* cutils.c */ |
void pstrcpy(char *buf, int buf_size, const char *str); |
void pstrcpy(char *buf, int buf_size, const char *str); |
char *pstrcat(char *buf, int buf_size, const char *s); |
char *pstrcat(char *buf, int buf_size, const char *s); |
int strstart(const char *str, const char *val, const char **ptr); |
int strstart(const char *str, const char *val, const char **ptr); |
int stristart(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); |
time_t mktimegm(struct tm *tm); |
|
int qemu_fls(int i); |
|
|
|
#define qemu_isalnum(c) isalnum((unsigned char)(c)) |
|
#define qemu_isalpha(c) isalpha((unsigned char)(c)) |
|
#define qemu_iscntrl(c) iscntrl((unsigned char)(c)) |
|
#define qemu_isdigit(c) isdigit((unsigned char)(c)) |
|
#define qemu_isgraph(c) isgraph((unsigned char)(c)) |
|
#define qemu_islower(c) islower((unsigned char)(c)) |
|
#define qemu_isprint(c) isprint((unsigned char)(c)) |
|
#define qemu_ispunct(c) ispunct((unsigned char)(c)) |
|
#define qemu_isspace(c) isspace((unsigned char)(c)) |
|
#define qemu_isupper(c) isupper((unsigned char)(c)) |
|
#define qemu_isxdigit(c) isxdigit((unsigned char)(c)) |
|
#define qemu_tolower(c) tolower((unsigned char)(c)) |
|
#define qemu_toupper(c) toupper((unsigned char)(c)) |
|
#define qemu_isascii(c) isascii((unsigned char)(c)) |
|
#define qemu_toascii(c) toascii((unsigned char)(c)) |
|
|
|
void *qemu_malloc(size_t size); |
|
void *qemu_realloc(void *ptr, size_t size); |
|
void *qemu_mallocz(size_t size); |
|
void qemu_free(void *ptr); |
|
char *qemu_strdup(const char *str); |
|
char *qemu_strndup(const char *str, size_t size); |
|
|
|
void *get_mmap_addr(unsigned long size); |
|
|
|
|
/* Error handling. */ |
/* Error handling. */ |
|
|
void hw_error(const char *fmt, ...) |
void QEMU_NORETURN hw_error(const char *fmt, ...) |
__attribute__ ((__format__ (__printf__, 1, 2))) |
__attribute__ ((__format__ (__printf__, 1, 2))); |
__attribute__ ((__noreturn__)); |
|
|
|
/* IO callbacks. */ |
/* IO callbacks. */ |
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); |
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); |
Line 104 typedef int (*DMA_transfer_handler) (voi
|
Line 162 typedef int (*DMA_transfer_handler) (voi
|
/* A load of opaque types so that device init declarations don't have to |
/* A load of opaque types so that device init declarations don't have to |
pull in all the real definitions. */ |
pull in all the real definitions. */ |
typedef struct NICInfo NICInfo; |
typedef struct NICInfo NICInfo; |
|
typedef struct HCIInfo HCIInfo; |
typedef struct AudioState AudioState; |
typedef struct AudioState AudioState; |
typedef struct BlockDriverState BlockDriverState; |
typedef struct BlockDriverState BlockDriverState; |
typedef struct DisplayState DisplayState; |
typedef struct DisplayState DisplayState; |
|
typedef struct DisplayChangeListener DisplayChangeListener; |
|
typedef struct DisplaySurface DisplaySurface; |
|
typedef struct PixelFormat PixelFormat; |
typedef struct TextConsole TextConsole; |
typedef struct TextConsole TextConsole; |
|
typedef TextConsole QEMUConsole; |
typedef struct CharDriverState CharDriverState; |
typedef struct CharDriverState CharDriverState; |
typedef struct VLANState VLANState; |
typedef struct VLANState VLANState; |
typedef struct QEMUFile QEMUFile; |
typedef struct QEMUFile QEMUFile; |
Line 121 typedef struct SerialState SerialState;
|
Line 184 typedef struct SerialState SerialState;
|
typedef struct IRQState *qemu_irq; |
typedef struct IRQState *qemu_irq; |
struct pcmcia_card_s; |
struct pcmcia_card_s; |
|
|
|
/* CPU save/load. */ |
|
void cpu_save(QEMUFile *f, void *opaque); |
|
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); |
|
|
|
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_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); |
|
|
|
#endif /* dyngen-exec.h hack */ |
|
|
#endif |
#endif |