mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
Xen 2016/10/28
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJYE/VuAAoJEIlPj0hw4a6Q/qAP+gMhunO/OJRSwIlYSOt+fVKW LE17QUfdVe204IuWY3h9svTvJXj/pOsE1HtIrGAUwsJxMqMBHeZnKhVZvEbvL2Iy sKSxzQkkPa6qVn/+Nxr9ZxULJZPXWnl61FLbElelff4w46lTaBM3gBaWDekFEO64 RbMvsMAUmav1x88KPvqY71Crbx5wbPhNmFqhbJNaQmm3zIQDK1TzGESv882mQKy2 rKNapBUXq8XnUNN+lIHhnzU9kUjhZxu7uet3GHMVICeAYu3b9jkgomv2OcV/sfRg 3o/NoXp4I7ZY3F0fkbtJOIFx0m+YlWnQhkBGsQoXJW+4lUdQR9ypMY4OdzjRa80e w9GrDt1//LOYrTpB0ZBkW0MIfnUK4TCqtL/aEQtRY9fdRFvcVpCjnqrYw+u9boZ1 hVypTYmAbk/ece6aJ/dngDQVtGC9qMGlHtBqSBRajFxenvFdY+DK6/FhITpNmobU YPWTSwS6WPw/venfvrTMfCQudGW3Jg8iBzRbGPS+GYfYlTHFoO0lKFGWWeTuRFIw /4owDhMJr5hRMRWZxCAu+Z8Ymj1MFuK7zDKjvT9LgWOZORh+rz6Tfn9+oxSt/D9I 1VKb/T9N9wBS3kreZ+Uz5+aQBoQSN5AQjay2ECZ16u9i63EL89CqXyyrJLlKlEGB cP3GzM9DlAtCQR943bys =Ao+X -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20161028-tag' into staging Xen 2016/10/28 # gpg: Signature made Sat 29 Oct 2016 02:03:42 BST # gpg: using RSA key 0x894F8F4870E1AE90 # gpg: Good signature from "Stefano Stabellini <sstabellini@kernel.org>" # gpg: aka "Stefano Stabellini <stefano.stabellini@eu.citrix.com>" # Primary key fingerprint: D04E 33AB A51F 67BA 07D3 0AEA 894F 8F48 70E1 AE90 * remotes/sstabellini/tags/xen-20161028-tag: xen: Rename xen_be_del_xendev xen: Rename xen_be_find_xendev xen: Rename xen_be_evtchn_event xen: Rename xen_be_send_notify xen: Rename xen_be_unbind_evtchn xen: Rename xen_be_printf to xen_pv_printf xen: Move xenstore cleanup and mkdir functions xen: Prepare xendev qtail to be shared with frontends xen: Move evtchn functions to xen_pvdev.c xen: Move xenstore_update to xen_pvdev.c xen: Create a new file xen_pvdev.c xen: Fix coding style warnings xen: Fix coding style errors Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
5ff06787d4
12 changed files with 603 additions and 525 deletions
|
@ -2,60 +2,10 @@
|
|||
#define QEMU_HW_XEN_BACKEND_H
|
||||
|
||||
#include "hw/xen/xen_common.h"
|
||||
#include "hw/xen/xen_pvdev.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "net/net.h"
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
#define XEN_BUFSIZE 1024
|
||||
|
||||
struct XenDevice;
|
||||
|
||||
/* driver uses grant tables -> open gntdev device (xendev->gnttabdev) */
|
||||
#define DEVOPS_FLAG_NEED_GNTDEV 1
|
||||
/* don't expect frontend doing correct state transitions (aka console quirk) */
|
||||
#define DEVOPS_FLAG_IGNORE_STATE 2
|
||||
|
||||
struct XenDevOps {
|
||||
size_t size;
|
||||
uint32_t flags;
|
||||
void (*alloc)(struct XenDevice *xendev);
|
||||
int (*init)(struct XenDevice *xendev);
|
||||
int (*initialise)(struct XenDevice *xendev);
|
||||
void (*connected)(struct XenDevice *xendev);
|
||||
void (*event)(struct XenDevice *xendev);
|
||||
void (*disconnect)(struct XenDevice *xendev);
|
||||
int (*free)(struct XenDevice *xendev);
|
||||
void (*backend_changed)(struct XenDevice *xendev, const char *node);
|
||||
void (*frontend_changed)(struct XenDevice *xendev, const char *node);
|
||||
int (*backend_register)(void);
|
||||
};
|
||||
|
||||
struct XenDevice {
|
||||
const char *type;
|
||||
int dom;
|
||||
int dev;
|
||||
char name[64];
|
||||
int debug;
|
||||
|
||||
enum xenbus_state be_state;
|
||||
enum xenbus_state fe_state;
|
||||
int online;
|
||||
char be[XEN_BUFSIZE];
|
||||
char *fe;
|
||||
char *protocol;
|
||||
int remote_port;
|
||||
int local_port;
|
||||
|
||||
xenevtchn_handle *evtchndev;
|
||||
xengnttab_handle *gnttabdev;
|
||||
|
||||
struct XenDevOps *ops;
|
||||
QTAILQ_ENTRY(XenDevice) next;
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
/* variables */
|
||||
extern xc_interface *xen_xc;
|
||||
extern xenforeignmemory_handle *xen_fmem;
|
||||
|
@ -63,26 +13,20 @@ extern struct xs_handle *xenstore;
|
|||
extern const char *xen_protocol;
|
||||
extern DeviceState *xen_sysdev;
|
||||
|
||||
/* xenstore helper functions */
|
||||
int xenstore_mkdir(char *path, int p);
|
||||
int xenstore_write_str(const char *base, const char *node, const char *val);
|
||||
int xenstore_write_int(const char *base, const char *node, int ival);
|
||||
int xenstore_write_int64(const char *base, const char *node, int64_t ival);
|
||||
char *xenstore_read_str(const char *base, const char *node);
|
||||
int xenstore_read_int(const char *base, const char *node, int *ival);
|
||||
|
||||
int xenstore_write_be_str(struct XenDevice *xendev, const char *node, const char *val);
|
||||
int xenstore_write_be_int(struct XenDevice *xendev, const char *node, int ival);
|
||||
int xenstore_write_be_int64(struct XenDevice *xendev, const char *node, int64_t ival);
|
||||
char *xenstore_read_be_str(struct XenDevice *xendev, const char *node);
|
||||
int xenstore_read_be_int(struct XenDevice *xendev, const char *node, int *ival);
|
||||
void xenstore_update_fe(char *watch, struct XenDevice *xendev);
|
||||
void xenstore_update_be(char *watch, char *type, int dom,
|
||||
struct XenDevOps *ops);
|
||||
char *xenstore_read_fe_str(struct XenDevice *xendev, const char *node);
|
||||
int xenstore_read_fe_int(struct XenDevice *xendev, const char *node, int *ival);
|
||||
int xenstore_read_uint64(const char *base, const char *node, uint64_t *uval);
|
||||
int xenstore_read_fe_uint64(struct XenDevice *xendev, const char *node, uint64_t *uval);
|
||||
int xenstore_read_fe_uint64(struct XenDevice *xendev, const char *node,
|
||||
uint64_t *uval);
|
||||
|
||||
const char *xenbus_strstate(enum xenbus_state state);
|
||||
struct XenDevice *xen_be_find_xendev(const char *type, int dom, int dev);
|
||||
void xen_be_check_state(struct XenDevice *xendev);
|
||||
|
||||
/* xen backend driver bits */
|
||||
|
@ -91,10 +35,6 @@ void xen_be_register_common(void);
|
|||
int xen_be_register(const char *type, struct XenDevOps *ops);
|
||||
int xen_be_set_state(struct XenDevice *xendev, enum xenbus_state state);
|
||||
int xen_be_bind_evtchn(struct XenDevice *xendev);
|
||||
void xen_be_unbind_evtchn(struct XenDevice *xendev);
|
||||
int xen_be_send_notify(struct XenDevice *xendev);
|
||||
void xen_be_printf(struct XenDevice *xendev, int msg_level, const char *fmt, ...)
|
||||
GCC_FMT_ATTR(3, 4);
|
||||
|
||||
/* actual backend drivers */
|
||||
extern struct XenDevOps xen_console_ops; /* xen_console.c */
|
||||
|
|
78
include/hw/xen/xen_pvdev.h
Normal file
78
include/hw/xen/xen_pvdev.h
Normal file
|
@ -0,0 +1,78 @@
|
|||
#ifndef QEMU_HW_XEN_PVDEV_H
|
||||
#define QEMU_HW_XEN_PVDEV_H
|
||||
|
||||
#include "hw/xen/xen_common.h"
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
#define XEN_BUFSIZE 1024
|
||||
|
||||
struct XenDevice;
|
||||
|
||||
/* driver uses grant tables -> open gntdev device (xendev->gnttabdev) */
|
||||
#define DEVOPS_FLAG_NEED_GNTDEV 1
|
||||
/* don't expect frontend doing correct state transitions (aka console quirk) */
|
||||
#define DEVOPS_FLAG_IGNORE_STATE 2
|
||||
|
||||
struct XenDevOps {
|
||||
size_t size;
|
||||
uint32_t flags;
|
||||
void (*alloc)(struct XenDevice *xendev);
|
||||
int (*init)(struct XenDevice *xendev);
|
||||
int (*initialise)(struct XenDevice *xendev);
|
||||
void (*connected)(struct XenDevice *xendev);
|
||||
void (*event)(struct XenDevice *xendev);
|
||||
void (*disconnect)(struct XenDevice *xendev);
|
||||
int (*free)(struct XenDevice *xendev);
|
||||
void (*backend_changed)(struct XenDevice *xendev, const char *node);
|
||||
void (*frontend_changed)(struct XenDevice *xendev, const char *node);
|
||||
int (*backend_register)(void);
|
||||
};
|
||||
|
||||
struct XenDevice {
|
||||
const char *type;
|
||||
int dom;
|
||||
int dev;
|
||||
char name[64];
|
||||
int debug;
|
||||
|
||||
enum xenbus_state be_state;
|
||||
enum xenbus_state fe_state;
|
||||
int online;
|
||||
char be[XEN_BUFSIZE];
|
||||
char *fe;
|
||||
char *protocol;
|
||||
int remote_port;
|
||||
int local_port;
|
||||
|
||||
xenevtchn_handle *evtchndev;
|
||||
xengnttab_handle *gnttabdev;
|
||||
|
||||
struct XenDevOps *ops;
|
||||
QTAILQ_ENTRY(XenDevice) next;
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
|
||||
/* xenstore helper functions */
|
||||
int xenstore_write_str(const char *base, const char *node, const char *val);
|
||||
int xenstore_write_int(const char *base, const char *node, int ival);
|
||||
int xenstore_write_int64(const char *base, const char *node, int64_t ival);
|
||||
char *xenstore_read_str(const char *base, const char *node);
|
||||
int xenstore_read_int(const char *base, const char *node, int *ival);
|
||||
int xenstore_read_uint64(const char *base, const char *node, uint64_t *uval);
|
||||
void xenstore_update(void *unused);
|
||||
|
||||
const char *xenbus_strstate(enum xenbus_state state);
|
||||
|
||||
void xen_pv_evtchn_event(void *opaque);
|
||||
void xen_pv_insert_xendev(struct XenDevice *xendev);
|
||||
void xen_pv_del_xendev(struct XenDevice *xendev);
|
||||
struct XenDevice *xen_pv_find_xendev(const char *type, int dom, int dev);
|
||||
|
||||
void xen_pv_unbind_evtchn(struct XenDevice *xendev);
|
||||
int xen_pv_send_notify(struct XenDevice *xendev);
|
||||
|
||||
void xen_pv_printf(struct XenDevice *xendev, int msg_level,
|
||||
const char *fmt, ...) GCC_FMT_ATTR(3, 4);
|
||||
|
||||
#endif /* QEMU_HW_XEN_PVDEV_H */
|
Loading…
Add table
Add a link
Reference in a new issue