8110fa1d94
Generated using: $ ./scripts/codeconverter/converter.py -i \ --pattern=TypeCheckMacro $(git grep -l '' -- '*.[ch]') Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <20200831210740.126168-12-ehabkost@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <20200831210740.126168-13-ehabkost@redhat.com> Message-Id: <20200831210740.126168-14-ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
79 lines
2.0 KiB
C
79 lines
2.0 KiB
C
/*
|
|
* Virtio Support
|
|
*
|
|
* Copyright IBM, Corp. 2007-2008
|
|
*
|
|
* Authors:
|
|
* Anthony Liguori <aliguori@us.ibm.com>
|
|
* Rusty Russell <rusty@rustcorp.com.au>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
* the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef QEMU_VIRTIO_BALLOON_H
|
|
#define QEMU_VIRTIO_BALLOON_H
|
|
|
|
#include "standard-headers/linux/virtio_balloon.h"
|
|
#include "hw/virtio/virtio.h"
|
|
#include "sysemu/iothread.h"
|
|
#include "qom/object.h"
|
|
|
|
#define TYPE_VIRTIO_BALLOON "virtio-balloon-device"
|
|
typedef struct VirtIOBalloon VirtIOBalloon;
|
|
DECLARE_INSTANCE_CHECKER(VirtIOBalloon, VIRTIO_BALLOON,
|
|
TYPE_VIRTIO_BALLOON)
|
|
|
|
#define VIRTIO_BALLOON_FREE_PAGE_HINT_CMD_ID_MIN 0x80000000
|
|
|
|
typedef struct virtio_balloon_stat VirtIOBalloonStat;
|
|
|
|
typedef struct virtio_balloon_stat_modern {
|
|
uint16_t tag;
|
|
uint8_t reserved[6];
|
|
uint64_t val;
|
|
} VirtIOBalloonStatModern;
|
|
|
|
enum virtio_balloon_free_page_hint_status {
|
|
FREE_PAGE_HINT_S_STOP = 0,
|
|
FREE_PAGE_HINT_S_REQUESTED = 1,
|
|
FREE_PAGE_HINT_S_START = 2,
|
|
FREE_PAGE_HINT_S_DONE = 3,
|
|
};
|
|
|
|
struct VirtIOBalloon {
|
|
VirtIODevice parent_obj;
|
|
VirtQueue *ivq, *dvq, *svq, *free_page_vq, *reporting_vq;
|
|
uint32_t free_page_hint_status;
|
|
uint32_t num_pages;
|
|
uint32_t actual;
|
|
uint32_t free_page_hint_cmd_id;
|
|
uint64_t stats[VIRTIO_BALLOON_S_NR];
|
|
VirtQueueElement *stats_vq_elem;
|
|
size_t stats_vq_offset;
|
|
QEMUTimer *stats_timer;
|
|
IOThread *iothread;
|
|
QEMUBH *free_page_bh;
|
|
/*
|
|
* Lock to synchronize threads to access the free page reporting related
|
|
* fields (e.g. free_page_hint_status).
|
|
*/
|
|
QemuMutex free_page_lock;
|
|
QemuCond free_page_cond;
|
|
/*
|
|
* Set to block iothread to continue reading free page hints as the VM is
|
|
* stopped.
|
|
*/
|
|
bool block_iothread;
|
|
NotifierWithReturn free_page_hint_notify;
|
|
int64_t stats_last_update;
|
|
int64_t stats_poll_interval;
|
|
uint32_t host_features;
|
|
|
|
bool qemu_4_0_config_size;
|
|
uint32_t poison_val;
|
|
};
|
|
|
|
#endif
|