Diff for /qemu/qemu-common.h between versions and

version, 2018/04/24 18:23:52 version, 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
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
   #define GCC_ATTR /**/
   #define GCC_FMT_ATTR(n, m)
   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);
   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 {
               uint32_t high, low;
               uint32_t low, high;
           } 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

Removed from v.  
changed lines
  Added in v.