xref: /qemu/include/hw/xen/xen-legacy-backend.h (revision d1bb9921bbbc65ecbb7c6193834e154af0cd0a1f)
158ea30f5SMarkus Armbruster #ifndef HW_XEN_LEGACY_BACKEND_H
258ea30f5SMarkus Armbruster #define HW_XEN_LEGACY_BACKEND_H
3d94f9486Saliguori 
4b6cacfeaSDavid Woodhouse #include "hw/xen/xen_backend_ops.h"
5f0021dbaSEmil Condrea #include "hw/xen/xen_pvdev.h"
6db1015e9SEduardo Habkost #include "qom/object.h"
7d94f9486Saliguori 
8873d57abSJuergen Gross #define TYPE_XENSYSDEV "xen-sysdev"
9873d57abSJuergen Gross #define TYPE_XENSYSBUS "xen-sysbus"
103a6c9172SJuergen Gross #define TYPE_XENBACKEND "xen-backend"
113a6c9172SJuergen Gross 
12694b3d28SEduardo Habkost typedef struct XenLegacyDevice XenLegacyDevice;
132211118aSEduardo Habkost DECLARE_INSTANCE_CHECKER(XenLegacyDevice, XENBACKEND,
148110fa1dSEduardo Habkost                          TYPE_XENBACKEND)
15873d57abSJuergen Gross 
16d94f9486Saliguori /* variables */
17ba2a92dbSPaul Durrant extern struct qemu_xs_handle *xenstore;
182c8b24a3Saliguori extern const char *xen_protocol;
199432e53aSJuergen Gross extern DeviceState *xen_sysdev;
20873d57abSJuergen Gross extern BusState *xen_sysbus;
21d94f9486Saliguori 
22637c53ffSJuergen Gross int xenstore_mkdir(char *path, int p);
232d0ed5e6SPaul Durrant int xenstore_write_be_str(struct XenLegacyDevice *xendev, const char *node,
242d0ed5e6SPaul Durrant                           const char *val);
252d0ed5e6SPaul Durrant int xenstore_write_be_int(struct XenLegacyDevice *xendev, const char *node,
262d0ed5e6SPaul Durrant                           int ival);
272d0ed5e6SPaul Durrant int xenstore_write_be_int64(struct XenLegacyDevice *xendev, const char *node,
282d0ed5e6SPaul Durrant                             int64_t ival);
292d0ed5e6SPaul Durrant char *xenstore_read_be_str(struct XenLegacyDevice *xendev, const char *node);
302d0ed5e6SPaul Durrant int xenstore_read_be_int(struct XenLegacyDevice *xendev, const char *node,
312d0ed5e6SPaul Durrant                          int *ival);
322d0ed5e6SPaul Durrant char *xenstore_read_fe_str(struct XenLegacyDevice *xendev, const char *node);
332d0ed5e6SPaul Durrant int xenstore_read_fe_int(struct XenLegacyDevice *xendev, const char *node,
342d0ed5e6SPaul Durrant                          int *ival);
352d0ed5e6SPaul Durrant int xenstore_read_fe_uint64(struct XenLegacyDevice *xendev, const char *node,
36b9730c5bSEmil Condrea                             uint64_t *uval);
37d94f9486Saliguori 
382d0ed5e6SPaul Durrant void xen_be_check_state(struct XenLegacyDevice *xendev);
39d94f9486Saliguori 
40d94f9486Saliguori /* xen backend driver bits */
4179807f3eSDavid Woodhouse void xen_be_init(void);
42*19c2d53cSPhilippe Mathieu-Daudé int xen_be_register(const char *type, const struct XenDevOps *ops);
432d0ed5e6SPaul Durrant int xen_be_set_state(struct XenLegacyDevice *xendev, enum xenbus_state state);
442d0ed5e6SPaul Durrant int xen_be_bind_evtchn(struct XenLegacyDevice *xendev);
452d0ed5e6SPaul Durrant void xen_be_set_max_grant_refs(struct XenLegacyDevice *xendev,
469838824aSPaul Durrant                                unsigned int nr_refs);
472d0ed5e6SPaul Durrant void *xen_be_map_grant_refs(struct XenLegacyDevice *xendev, uint32_t *refs,
489838824aSPaul Durrant                             unsigned int nr_refs, int prot);
492d0ed5e6SPaul Durrant void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
50f80fad16SDavid Woodhouse                              uint32_t *refs, unsigned int nr_refs);
519838824aSPaul Durrant 
xen_be_map_grant_ref(struct XenLegacyDevice * xendev,uint32_t ref,int prot)522d0ed5e6SPaul Durrant static inline void *xen_be_map_grant_ref(struct XenLegacyDevice *xendev,
539838824aSPaul Durrant                                          uint32_t ref, int prot)
549838824aSPaul Durrant {
559838824aSPaul Durrant     return xen_be_map_grant_refs(xendev, &ref, 1, prot);
569838824aSPaul Durrant }
579838824aSPaul Durrant 
xen_be_unmap_grant_ref(struct XenLegacyDevice * xendev,void * ptr,uint32_t ref)582d0ed5e6SPaul Durrant static inline void xen_be_unmap_grant_ref(struct XenLegacyDevice *xendev,
59f80fad16SDavid Woodhouse                                           void *ptr, uint32_t ref)
609838824aSPaul Durrant {
61f80fad16SDavid Woodhouse     return xen_be_unmap_grant_refs(xendev, ptr, &ref, 1);
629838824aSPaul Durrant }
63d94f9486Saliguori 
642c8b24a3Saliguori /* configuration (aka xenbus setup) */
6528695489SAnthony Liguori void xen_config_cleanup(void);
669306acb5Saliguori int xen_config_dev_vfb(int vdev, const char *type);
679306acb5Saliguori int xen_config_dev_vkbd(int vdev);
682c8b24a3Saliguori 
6958ea30f5SMarkus Armbruster #endif /* HW_XEN_LEGACY_BACKEND_H */
70