17c9e5276SPaolo Bonzini #ifndef PR_MANAGER_H 27c9e5276SPaolo Bonzini #define PR_MANAGER_H 37c9e5276SPaolo Bonzini 47c9e5276SPaolo Bonzini #include "qom/object.h" 57c9e5276SPaolo Bonzini #include "qapi/visitor.h" 67c9e5276SPaolo Bonzini #include "qom/object_interfaces.h" 77c9e5276SPaolo Bonzini #include "block/aio.h" 87c9e5276SPaolo Bonzini 97c9e5276SPaolo Bonzini #define TYPE_PR_MANAGER "pr-manager" 107c9e5276SPaolo Bonzini 11c821774aSEduardo Habkost OBJECT_DECLARE_TYPE(PRManager, PRManagerClass, 12*30b5707cSEduardo Habkost PR_MANAGER) 137c9e5276SPaolo Bonzini 147c9e5276SPaolo Bonzini struct sg_io_hdr; 157c9e5276SPaolo Bonzini 16db1015e9SEduardo Habkost struct PRManager { 177c9e5276SPaolo Bonzini /* <private> */ 187c9e5276SPaolo Bonzini Object parent; 19db1015e9SEduardo Habkost }; 207c9e5276SPaolo Bonzini 217c9e5276SPaolo Bonzini /** 227c9e5276SPaolo Bonzini * PRManagerClass: 237c9e5276SPaolo Bonzini * @parent_class: the base class 247c9e5276SPaolo Bonzini * @run: callback invoked in thread pool context 257c9e5276SPaolo Bonzini */ 26db1015e9SEduardo Habkost struct PRManagerClass { 277c9e5276SPaolo Bonzini /* <private> */ 287c9e5276SPaolo Bonzini ObjectClass parent_class; 297c9e5276SPaolo Bonzini 307c9e5276SPaolo Bonzini /* <public> */ 317c9e5276SPaolo Bonzini int (*run)(PRManager *pr_mgr, int fd, struct sg_io_hdr *hdr); 325f640894SPaolo Bonzini bool (*is_connected)(PRManager *pr_mgr); 33db1015e9SEduardo Habkost }; 347c9e5276SPaolo Bonzini 355f640894SPaolo Bonzini bool pr_manager_is_connected(PRManager *pr_mgr); 362f3a7ab3SKevin Wolf int coroutine_fn pr_manager_execute(PRManager *pr_mgr, AioContext *ctx, int fd, 372f3a7ab3SKevin Wolf struct sg_io_hdr *hdr); 387c9e5276SPaolo Bonzini 397c9e5276SPaolo Bonzini PRManager *pr_manager_lookup(const char *id, Error **errp); 407c9e5276SPaolo Bonzini 417c9e5276SPaolo Bonzini #endif 42