symbian-qemu-0.9.1-12/qemu-symbian-svp/qemu-common.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 <strings.h>
       
    11 #include <inttypes.h>
       
    12 #include <limits.h>
       
    13 #include <time.h>
       
    14 #include <ctype.h>
       
    15 #include <errno.h>
       
    16 #include <unistd.h>
       
    17 #include <fcntl.h>
       
    18 #include <sys/stat.h>
       
    19 #include "config-host.h"
       
    20 
       
    21 #ifndef O_LARGEFILE
       
    22 #define O_LARGEFILE 0
       
    23 #endif
       
    24 #ifndef O_BINARY
       
    25 #define O_BINARY 0
       
    26 #endif
       
    27 
       
    28 #ifndef ENOMEDIUM
       
    29 #define ENOMEDIUM ENODEV
       
    30 #endif
       
    31 
       
    32 #ifndef HAVE_IOVEC
       
    33 #define HAVE_IOVEC
       
    34 struct iovec {
       
    35     void *iov_base;
       
    36     size_t iov_len;
       
    37 };
       
    38 #else
       
    39 #include <sys/uio.h>
       
    40 #endif
       
    41 
       
    42 #ifdef _WIN32
       
    43 #define WIN32_LEAN_AND_MEAN
       
    44 #define WINVER 0x0501  /* needed for ipv6 bits */
       
    45 #include <windows.h>
       
    46 #define fsync _commit
       
    47 #define lseek _lseeki64
       
    48 #define ENOTSUP 4096
       
    49 extern int qemu_ftruncate64(int, int64_t);
       
    50 #define ftruncate qemu_ftruncate64
       
    51 
       
    52 
       
    53 static inline char *realpath(const char *path, char *resolved_path)
       
    54 {
       
    55     _fullpath(resolved_path, path, _MAX_PATH);
       
    56     return resolved_path;
       
    57 }
       
    58 
       
    59 #define PRId64 "I64d"
       
    60 #define PRIx64 "I64x"
       
    61 #define PRIu64 "I64u"
       
    62 #define PRIo64 "I64o"
       
    63 #endif
       
    64 
       
    65 /* FIXME: Remove NEED_CPU_H.  */
       
    66 #ifndef NEED_CPU_H
       
    67 
       
    68 #include <setjmp.h>
       
    69 #include "osdep.h"
       
    70 #include "bswap.h"
       
    71 
       
    72 #else
       
    73 
       
    74 #include "cpu.h"
       
    75 
       
    76 #endif /* !defined(NEED_CPU_H) */
       
    77 
       
    78 /* bottom halves */
       
    79 typedef struct QEMUBH QEMUBH;
       
    80 
       
    81 typedef void QEMUBHFunc(void *opaque);
       
    82 
       
    83 QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque);
       
    84 void qemu_bh_schedule(QEMUBH *bh);
       
    85 /* Bottom halfs that are scheduled from a bottom half handler are instantly
       
    86  * invoked.  This can create an infinite loop if a bottom half handler
       
    87  * schedules itself.  qemu_bh_schedule_idle() avoids this infinite loop by
       
    88  * ensuring that the bottom half isn't executed until the next main loop
       
    89  * iteration.
       
    90  */
       
    91 void qemu_bh_schedule_idle(QEMUBH *bh);
       
    92 void qemu_bh_cancel(QEMUBH *bh);
       
    93 void qemu_bh_delete(QEMUBH *bh);
       
    94 int qemu_bh_poll(void);
       
    95 
       
    96 uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
       
    97 
       
    98 void qemu_get_timedate(struct tm *tm, int offset);
       
    99 int qemu_timedate_diff(struct tm *tm);
       
   100 
       
   101 /* cutils.c */
       
   102 void pstrcpy(char *buf, int buf_size, const char *str);
       
   103 char *pstrcat(char *buf, int buf_size, const char *s);
       
   104 int strstart(const char *str, const char *val, const char **ptr);
       
   105 int stristart(const char *str, const char *val, const char **ptr);
       
   106 time_t mktimegm(struct tm *tm);
       
   107 int uninterrupted_open(const char *pathname, int flags, int mode);
       
   108 int uninterrupted_close(int fd);
       
   109 int uninterrupted_read(int fd, void *buf, size_t count);
       
   110 int uninterrupted_write(int fd, void *buf, size_t count);
       
   111 int qemu_fls(int i);
       
   112 
       
   113 #define qemu_isalnum(c)		isalnum((unsigned char)(c))
       
   114 #define qemu_isalpha(c)		isalpha((unsigned char)(c))
       
   115 #define qemu_iscntrl(c)		iscntrl((unsigned char)(c))
       
   116 #define qemu_isdigit(c)		isdigit((unsigned char)(c))
       
   117 #define qemu_isgraph(c)		isgraph((unsigned char)(c))
       
   118 #define qemu_islower(c)		islower((unsigned char)(c))
       
   119 #define qemu_isprint(c)		isprint((unsigned char)(c))
       
   120 #define qemu_ispunct(c)		ispunct((unsigned char)(c))
       
   121 #define qemu_isspace(c)		isspace((unsigned char)(c))
       
   122 #define qemu_isupper(c)		isupper((unsigned char)(c))
       
   123 #define qemu_isxdigit(c)	isxdigit((unsigned char)(c))
       
   124 #define qemu_tolower(c)		tolower((unsigned char)(c))
       
   125 #define qemu_toupper(c)		toupper((unsigned char)(c))
       
   126 #define qemu_isascii(c)		isascii((unsigned char)(c))
       
   127 #define qemu_toascii(c)		toascii((unsigned char)(c))
       
   128 
       
   129 void *qemu_malloc(size_t size);
       
   130 void *qemu_realloc(void *ptr, size_t size);
       
   131 void *qemu_mallocz(size_t size);
       
   132 void qemu_free(void *ptr);
       
   133 char *qemu_strdup(const char *str);
       
   134 char *qemu_strndup(const char *str, size_t size);
       
   135 
       
   136 void *get_mmap_addr(unsigned long size);
       
   137 
       
   138 
       
   139 /* Error handling.  */
       
   140 
       
   141 void hw_error(const char *fmt, ...)
       
   142     __attribute__ ((__format__ (__printf__, 1, 2)))
       
   143     __attribute__ ((__noreturn__));
       
   144 
       
   145 /* IO callbacks.  */
       
   146 typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
       
   147 typedef int IOCanRWHandler(void *opaque);
       
   148 typedef void IOHandler(void *opaque);
       
   149 
       
   150 struct ParallelIOArg {
       
   151     void *buffer;
       
   152     int count;
       
   153 };
       
   154 
       
   155 typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size);
       
   156 
       
   157 /* A load of opaque types so that device init declarations don't have to
       
   158    pull in all the real definitions.  */
       
   159 typedef struct NICInfo NICInfo;
       
   160 typedef struct HCIInfo HCIInfo;
       
   161 typedef struct AudioState AudioState;
       
   162 typedef struct BlockDriverState BlockDriverState;
       
   163 typedef struct DisplayState DisplayState;
       
   164 typedef struct TextConsole TextConsole;
       
   165 /*typedef TextConsole QEMUConsole;*/
       
   166 typedef struct CharDriverState CharDriverState;
       
   167 typedef struct VLANState VLANState;
       
   168 typedef struct QEMUFile QEMUFile;
       
   169 typedef struct i2c_bus i2c_bus;
       
   170 typedef struct i2c_slave i2c_slave;
       
   171 typedef struct SMBusDevice SMBusDevice;
       
   172 typedef struct QEMUTimer QEMUTimer;
       
   173 typedef struct PCIBus PCIBus;
       
   174 typedef struct PCIDevice PCIDevice;
       
   175 typedef struct SerialState SerialState;
       
   176 typedef struct IRQState *qemu_irq;
       
   177 struct pcmcia_card_s;
       
   178 
       
   179 /* CPU save/load.  */
       
   180 void cpu_save(QEMUFile *f, void *opaque);
       
   181 int cpu_load(QEMUFile *f, void *opaque, int version_id);
       
   182 
       
   183 /* Force QEMU to stop what it's doing and service IO */
       
   184 void qemu_service_io(void);
       
   185 
       
   186 #ifdef USE_KQEMU
       
   187 extern int kqemu_allowed;
       
   188 #endif
       
   189 
       
   190 #endif