version 1.1.1.7, 2018/04/24 18:23:52
|
version 1.1.1.8, 2018/04/24 18:33:50
|
Line 18 typedef struct QEMUFile QEMUFile;
|
Line 18 typedef struct QEMUFile QEMUFile;
|
typedef struct QEMUBH QEMUBH; |
typedef struct QEMUBH QEMUBH; |
typedef struct DeviceState DeviceState; |
typedef struct DeviceState DeviceState; |
|
|
/* 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> |
Line 55 typedef struct DeviceState DeviceState;
|
Line 50 typedef struct DeviceState DeviceState;
|
#if !defined(ENOTSUP) |
#if !defined(ENOTSUP) |
#define ENOTSUP 4096 |
#define ENOTSUP 4096 |
#endif |
#endif |
|
#ifndef TIME_MAX |
|
#define TIME_MAX LONG_MAX |
|
#endif |
|
|
#ifndef CONFIG_IOVEC |
#ifndef CONFIG_IOVEC |
#define CONFIG_IOVEC |
#define CONFIG_IOVEC |
Line 70 struct iovec {
|
Line 68 struct iovec {
|
#include <sys/uio.h> |
#include <sys/uio.h> |
#endif |
#endif |
|
|
|
#if defined __GNUC__ |
|
# if (__GNUC__ < 4) || \ |
|
defined(__GNUC_MINOR__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4) |
|
/* gcc versions before 4.4.x don't support gnu_printf, so use printf. */ |
|
# define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2))) |
|
# define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m))) |
|
# else |
|
/* Use gnu_printf when supported (qemu uses standard format strings). */ |
|
# define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2))) |
|
# define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m))) |
|
# endif |
|
#else |
|
#define GCC_ATTR /**/ |
|
#define GCC_FMT_ATTR(n, m) |
|
#endif |
|
|
|
typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) |
|
GCC_FMT_ATTR(2, 3); |
|
|
#ifdef _WIN32 |
#ifdef _WIN32 |
#define fsync _commit |
#define fsync _commit |
#define lseek _lseeki64 |
#define lseek _lseeki64 |
extern int qemu_ftruncate64(int, int64_t); |
int qemu_ftruncate64(int, int64_t); |
#define ftruncate qemu_ftruncate64 |
#define ftruncate qemu_ftruncate64 |
|
|
static inline char *realpath(const char *path, char *resolved_path) |
static inline char *realpath(const char *path, char *resolved_path) |
Line 122 void qemu_bh_delete(QEMUBH *bh);
|
Line 139 void qemu_bh_delete(QEMUBH *bh);
|
int qemu_bh_poll(void); |
int qemu_bh_poll(void); |
void qemu_bh_update_timeout(int *timeout); |
void qemu_bh_update_timeout(int *timeout); |
|
|
uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); |
|
|
|
void qemu_get_timedate(struct tm *tm, int offset); |
void qemu_get_timedate(struct tm *tm, int offset); |
int qemu_timedate_diff(struct tm *tm); |
int qemu_timedate_diff(struct tm *tm); |
|
|
Line 138 int qemu_fls(int i);
|
Line 153 int qemu_fls(int i);
|
int qemu_fdatasync(int fd); |
int qemu_fdatasync(int fd); |
int fcntl_setfl(int fd, int flag); |
int fcntl_setfl(int fd, int flag); |
|
|
|
/* |
|
* strtosz() suffixes used to specify the default treatment of an |
|
* argument passed to strtosz() without an explicit suffix. |
|
* These should be defined using upper case characters in the range |
|
* A-Z, as strtosz() will use qemu_toupper() on the given argument |
|
* prior to comparison. |
|
*/ |
|
#define STRTOSZ_DEFSUFFIX_TB 'T' |
|
#define STRTOSZ_DEFSUFFIX_GB 'G' |
|
#define STRTOSZ_DEFSUFFIX_MB 'M' |
|
#define STRTOSZ_DEFSUFFIX_KB 'K' |
|
#define STRTOSZ_DEFSUFFIX_B 'B' |
|
int64_t strtosz(const char *nptr, char **end); |
|
int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix); |
|
|
/* path.c */ |
/* path.c */ |
void init_paths(const char *prefix); |
void init_paths(const char *prefix); |
const char *path(const char *pathname); |
const char *path(const char *pathname); |
Line 158 const char *path(const char *pathname);
|
Line 188 const char *path(const char *pathname);
|
#define qemu_isascii(c) isascii((unsigned char)(c)) |
#define qemu_isascii(c) isascii((unsigned char)(c)) |
#define qemu_toascii(c) toascii((unsigned char)(c)) |
#define qemu_toascii(c) toascii((unsigned char)(c)) |
|
|
|
#ifdef _WIN32 |
|
/* ffs() in oslib-win32.c for WIN32, strings.h for the rest of the world */ |
|
int ffs(int i); |
|
#endif |
|
|
|
void *qemu_oom_check(void *ptr); |
void *qemu_malloc(size_t size); |
void *qemu_malloc(size_t size); |
void *qemu_realloc(void *ptr, size_t size); |
void *qemu_realloc(void *ptr, size_t size); |
void *qemu_mallocz(size_t size); |
void *qemu_mallocz(size_t size); |
Line 180 int qemu_pipe(int pipefd[2]);
|
Line 216 int qemu_pipe(int pipefd[2]);
|
|
|
/* Error handling. */ |
/* Error handling. */ |
|
|
void QEMU_NORETURN hw_error(const char *fmt, ...) |
void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2); |
__attribute__ ((__format__ (__printf__, 1, 2))); |
|
|
|
/* 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 201 typedef struct NICInfo NICInfo;
|
Line 236 typedef struct NICInfo NICInfo;
|
typedef struct HCIInfo HCIInfo; |
typedef struct HCIInfo HCIInfo; |
typedef struct AudioState AudioState; |
typedef struct AudioState AudioState; |
typedef struct BlockDriverState BlockDriverState; |
typedef struct BlockDriverState BlockDriverState; |
|
typedef struct DriveInfo DriveInfo; |
typedef struct DisplayState DisplayState; |
typedef struct DisplayState DisplayState; |
typedef struct DisplayChangeListener DisplayChangeListener; |
typedef struct DisplayChangeListener DisplayChangeListener; |
typedef struct DisplaySurface DisplaySurface; |
typedef struct DisplaySurface DisplaySurface; |
Line 219 typedef struct PCIHostState PCIHostState
|
Line 255 typedef struct PCIHostState PCIHostState
|
typedef struct PCIExpressHost PCIExpressHost; |
typedef struct PCIExpressHost PCIExpressHost; |
typedef struct PCIBus PCIBus; |
typedef struct PCIBus PCIBus; |
typedef struct PCIDevice PCIDevice; |
typedef struct PCIDevice PCIDevice; |
|
typedef struct PCIExpressDevice PCIExpressDevice; |
|
typedef struct PCIBridge PCIBridge; |
|
typedef struct PCIEAERMsg PCIEAERMsg; |
|
typedef struct PCIEAERLog PCIEAERLog; |
|
typedef struct PCIEAERErr PCIEAERErr; |
|
typedef struct PCIEPort PCIEPort; |
|
typedef struct PCIESlot PCIESlot; |
typedef struct SerialState SerialState; |
typedef struct SerialState SerialState; |
typedef struct IRQState *qemu_irq; |
typedef struct IRQState *qemu_irq; |
typedef struct PCMCIACardState PCMCIACardState; |
typedef struct PCMCIACardState PCMCIACardState; |
Line 271 typedef struct QEMUIOVector {
|
Line 314 typedef struct QEMUIOVector {
|
void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint); |
void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint); |
void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov); |
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_add(QEMUIOVector *qiov, void *base, size_t len); |
|
void qemu_iovec_copy(QEMUIOVector *dst, QEMUIOVector *src, uint64_t skip, |
|
size_t size); |
void qemu_iovec_concat(QEMUIOVector *dst, QEMUIOVector *src, size_t size); |
void qemu_iovec_concat(QEMUIOVector *dst, QEMUIOVector *src, size_t size); |
void qemu_iovec_destroy(QEMUIOVector *qiov); |
void qemu_iovec_destroy(QEMUIOVector *qiov); |
void qemu_iovec_reset(QEMUIOVector *qiov); |
void qemu_iovec_reset(QEMUIOVector *qiov); |
void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf); |
void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf); |
void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count); |
void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count); |
|
void qemu_iovec_memset(QEMUIOVector *qiov, int c, size_t count); |
|
void qemu_iovec_memset_skip(QEMUIOVector *qiov, int c, size_t count, |
|
size_t skip); |
|
|
struct Monitor; |
struct Monitor; |
typedef struct Monitor Monitor; |
typedef struct Monitor Monitor; |
Line 291 static inline uint8_t from_bcd(uint8_t v
|
Line 339 static inline uint8_t from_bcd(uint8_t v
|
return ((val >> 4) * 10) + (val & 0x0f); |
return ((val >> 4) * 10) + (val & 0x0f); |
} |
} |
|
|
#include "module.h" |
/* compute with 96 bit intermediate result: (a*b)/c */ |
|
static inline uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c) |
|
{ |
|
union { |
|
uint64_t ll; |
|
struct { |
|
#ifdef HOST_WORDS_BIGENDIAN |
|
uint32_t high, low; |
|
#else |
|
uint32_t low, high; |
|
#endif |
|
} l; |
|
} u, res; |
|
uint64_t rl, rh; |
|
|
|
u.ll = a; |
|
rl = (uint64_t)u.l.low * (uint64_t)b; |
|
rh = (uint64_t)u.l.high * (uint64_t)b; |
|
rh += (rl >> 32); |
|
res.l.high = rh / c; |
|
res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c; |
|
return res.ll; |
|
} |
|
|
#endif /* dyngen-exec.h hack */ |
#include "module.h" |
|
|
#endif |
#endif |