version 1.1.1.8, 2018/04/24 18:33:50
|
version 1.1.1.9, 2018/04/24 18:56:06
|
Line 2
|
Line 2
|
#ifndef QEMU_COMMON_H |
#ifndef QEMU_COMMON_H |
#define QEMU_COMMON_H |
#define QEMU_COMMON_H |
|
|
|
#include "compiler.h" |
#include "config-host.h" |
#include "config-host.h" |
|
|
#define QEMU_NORETURN __attribute__ ((__noreturn__)) |
#define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR) |
#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT |
|
#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) |
|
#else |
|
#define QEMU_WARN_UNUSED_RESULT |
|
#endif |
|
|
|
#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1]; |
|
|
|
typedef struct QEMUTimer QEMUTimer; |
typedef struct QEMUTimer QEMUTimer; |
typedef struct QEMUFile QEMUFile; |
typedef struct QEMUFile QEMUFile; |
typedef struct QEMUBH QEMUBH; |
typedef struct QEMUBH QEMUBH; |
typedef struct DeviceState DeviceState; |
typedef struct DeviceState DeviceState; |
|
|
|
struct Monitor; |
|
typedef struct Monitor Monitor; |
|
|
/* 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 33 typedef struct DeviceState DeviceState;
|
Line 30 typedef struct DeviceState DeviceState;
|
#include <unistd.h> |
#include <unistd.h> |
#include <fcntl.h> |
#include <fcntl.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
|
#include <sys/time.h> |
#include <assert.h> |
#include <assert.h> |
|
#include <signal.h> |
|
|
|
#ifdef _WIN32 |
|
#include "qemu-os-win32.h" |
|
#endif |
|
|
|
#ifdef CONFIG_POSIX |
|
#include "qemu-os-posix.h" |
|
#endif |
|
|
#ifndef O_LARGEFILE |
#ifndef O_LARGEFILE |
#define O_LARGEFILE 0 |
#define O_LARGEFILE 0 |
Line 68 struct iovec {
|
Line 75 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, ...) |
typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) |
GCC_FMT_ATTR(2, 3); |
GCC_FMT_ATTR(2, 3); |
|
|
Line 98 static inline char *realpath(const char
|
Line 89 static inline char *realpath(const char
|
_fullpath(resolved_path, path, _MAX_PATH); |
_fullpath(resolved_path, path, _MAX_PATH); |
return resolved_path; |
return resolved_path; |
} |
} |
|
|
#define PRId64 "I64d" |
|
#define PRIx64 "I64x" |
|
#define PRIu64 "I64u" |
|
#define PRIo64 "I64o" |
|
#endif |
#endif |
|
|
/* FIXME: Remove NEED_CPU_H. */ |
/* FIXME: Remove NEED_CPU_H. */ |
#ifndef NEED_CPU_H |
#ifndef NEED_CPU_H |
|
|
#include <setjmp.h> |
|
#include "osdep.h" |
#include "osdep.h" |
#include "bswap.h" |
#include "bswap.h" |
|
|
Line 118 static inline char *realpath(const char
|
Line 103 static inline char *realpath(const char
|
|
|
#endif /* !defined(NEED_CPU_H) */ |
#endif /* !defined(NEED_CPU_H) */ |
|
|
|
/* main function, renamed */ |
|
#if defined(CONFIG_COCOA) |
|
int qemu_main(int argc, char **argv, char **envp); |
|
#endif |
|
|
/* bottom halves */ |
/* bottom halves */ |
typedef void QEMUBHFunc(void *opaque); |
typedef void QEMUBHFunc(void *opaque); |
|
|
Line 188 const char *path(const char *pathname);
|
Line 178 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_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); |
Line 210 ssize_t qemu_write_full(int fd, const vo
|
Line 195 ssize_t qemu_write_full(int fd, const vo
|
void qemu_set_cloexec(int fd); |
void qemu_set_cloexec(int fd); |
|
|
#ifndef _WIN32 |
#ifndef _WIN32 |
|
int qemu_add_child_watch(pid_t pid); |
int qemu_eventfd(int pipefd[2]); |
int qemu_eventfd(int pipefd[2]); |
int qemu_pipe(int pipefd[2]); |
int qemu_pipe(int pipefd[2]); |
#endif |
#endif |
|
|
|
#ifdef _WIN32 |
|
#define qemu_recv(sockfd, buf, len, flags) recv(sockfd, (void *)buf, len, flags) |
|
#else |
|
#define qemu_recv(sockfd, buf, len, flags) recv(sockfd, buf, len, flags) |
|
#endif |
|
|
/* Error handling. */ |
/* Error handling. */ |
|
|
void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2); |
void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2); |
Line 223 typedef void IOReadHandler(void *opaque,
|
Line 215 typedef void IOReadHandler(void *opaque,
|
typedef int IOCanReadHandler(void *opaque); |
typedef int IOCanReadHandler(void *opaque); |
typedef void IOHandler(void *opaque); |
typedef void IOHandler(void *opaque); |
|
|
|
void qemu_iohandler_fill(int *pnfds, fd_set *readfds, fd_set *writefds, fd_set *xfds); |
|
void qemu_iohandler_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds, int rc); |
|
|
struct ParallelIOArg { |
struct ParallelIOArg { |
void *buffer; |
void *buffer; |
int count; |
int count; |
Line 288 void qemu_notify_event(void);
|
Line 283 void qemu_notify_event(void);
|
|
|
/* Unblock cpu */ |
/* Unblock cpu */ |
void qemu_cpu_kick(void *env); |
void qemu_cpu_kick(void *env); |
int qemu_cpu_self(void *env); |
void qemu_cpu_kick_self(void); |
|
int qemu_cpu_is_self(void *env); |
|
bool all_cpu_threads_idle(void); |
|
|
/* work queue */ |
/* work queue */ |
struct qemu_work_item { |
struct qemu_work_item { |
Line 325 void qemu_iovec_memset(QEMUIOVector *qio
|
Line 322 void qemu_iovec_memset(QEMUIOVector *qio
|
void qemu_iovec_memset_skip(QEMUIOVector *qiov, int c, size_t count, |
void qemu_iovec_memset_skip(QEMUIOVector *qiov, int c, size_t count, |
size_t skip); |
size_t skip); |
|
|
struct Monitor; |
void qemu_progress_init(int enabled, float min_skip); |
typedef struct Monitor Monitor; |
void qemu_progress_end(void); |
|
void qemu_progress_print(float delta, int max); |
|
|
|
#define QEMU_FILE_TYPE_BIOS 0 |
|
#define QEMU_FILE_TYPE_KEYMAP 1 |
|
char *qemu_find_file(int type, const char *name); |
|
|
|
/* OS specific functions */ |
|
void os_setup_early_signal_handling(void); |
|
char *os_find_datadir(const char *argv0); |
|
void os_parse_cmd_args(int index, const char *optarg); |
|
void os_pidfile_error(void); |
|
|
/* Convert a byte between binary and BCD. */ |
/* Convert a byte between binary and BCD. */ |
static inline uint8_t to_bcd(uint8_t val) |
static inline uint8_t to_bcd(uint8_t val) |