1d94f9486Saliguori #ifndef QEMU_HW_XEN_BACKEND_H 2175de524SMarkus Armbruster #define QEMU_HW_XEN_BACKEND_H 3d94f9486Saliguori 40d09e41aSPaolo Bonzini #include "hw/xen/xen_common.h" 5f0021dbaSEmil Condrea #include "hw/xen/xen_pvdev.h" 69c17d615SPaolo Bonzini #include "sysemu/sysemu.h" 71422e32dSPaolo Bonzini #include "net/net.h" 8d94f9486Saliguori 9d94f9486Saliguori /* variables */ 1081daba58SIan Campbell extern xc_interface *xen_xc; 11e0cb42aeSIan Campbell extern xenforeignmemory_handle *xen_fmem; 12d94f9486Saliguori extern struct xs_handle *xenstore; 132c8b24a3Saliguori extern const char *xen_protocol; 149432e53aSJuergen Gross extern DeviceState *xen_sysdev; 15d94f9486Saliguori 16637c53ffSJuergen Gross int xenstore_mkdir(char *path, int p); 17d94f9486Saliguori int xenstore_write_be_str(struct XenDevice *xendev, const char *node, const char *val); 18d94f9486Saliguori int xenstore_write_be_int(struct XenDevice *xendev, const char *node, int ival); 1910bb3c62SFelipe Franciosi int xenstore_write_be_int64(struct XenDevice *xendev, const char *node, int64_t ival); 20d94f9486Saliguori char *xenstore_read_be_str(struct XenDevice *xendev, const char *node); 21d94f9486Saliguori int xenstore_read_be_int(struct XenDevice *xendev, const char *node, int *ival); 22d94f9486Saliguori char *xenstore_read_fe_str(struct XenDevice *xendev, const char *node); 23d94f9486Saliguori int xenstore_read_fe_int(struct XenDevice *xendev, const char *node, int *ival); 24b9730c5bSEmil Condrea int xenstore_read_fe_uint64(struct XenDevice *xendev, const char *node, 25b9730c5bSEmil Condrea uint64_t *uval); 26d94f9486Saliguori 27d94f9486Saliguori struct XenDevice *xen_be_find_xendev(const char *type, int dom, int dev); 28d94f9486Saliguori void xen_be_check_state(struct XenDevice *xendev); 29d94f9486Saliguori 30d94f9486Saliguori /* xen backend driver bits */ 31d94f9486Saliguori int xen_be_init(void); 320e39bb02SJuergen Gross void xen_be_register_common(void); 33d94f9486Saliguori int xen_be_register(const char *type, struct XenDevOps *ops); 34d94f9486Saliguori int xen_be_set_state(struct XenDevice *xendev, enum xenbus_state state); 35d94f9486Saliguori int xen_be_bind_evtchn(struct XenDevice *xendev); 36d94f9486Saliguori void xen_be_unbind_evtchn(struct XenDevice *xendev); 37d94f9486Saliguori int xen_be_send_notify(struct XenDevice *xendev); 38d94f9486Saliguori 39e57dd20bSaliguori /* actual backend drivers */ 40e57dd20bSaliguori extern struct XenDevOps xen_console_ops; /* xen_console.c */ 41e7151f83Saliguori extern struct XenDevOps xen_kbdmouse_ops; /* xen_framebuffer.c */ 42e7151f83Saliguori extern struct XenDevOps xen_framebuffer_ops; /* xen_framebuffer.c */ 4362d23efaSaliguori extern struct XenDevOps xen_blkdev_ops; /* xen_disk.c */ 44e613b064Saliguori extern struct XenDevOps xen_netdev_ops; /* xen_nic.c */ 45816ac92eSJuergen Gross #ifdef CONFIG_USB_LIBUSB 46816ac92eSJuergen Gross extern struct XenDevOps xen_usb_ops; /* xen-usb.c */ 47816ac92eSJuergen Gross #endif 48e7151f83Saliguori 49e7151f83Saliguori void xen_init_display(int domid); 50e57dd20bSaliguori 512c8b24a3Saliguori /* configuration (aka xenbus setup) */ 5228695489SAnthony Liguori void xen_config_cleanup(void); 532c8b24a3Saliguori int xen_config_dev_blk(DriveInfo *disk); 542c8b24a3Saliguori int xen_config_dev_nic(NICInfo *nic); 559306acb5Saliguori int xen_config_dev_vfb(int vdev, const char *type); 569306acb5Saliguori int xen_config_dev_vkbd(int vdev); 579306acb5Saliguori int xen_config_dev_console(int vdev); 582c8b24a3Saliguori 59d94f9486Saliguori #endif /* QEMU_HW_XEN_BACKEND_H */ 60