1 #ifndef PR_MANAGER_H 2 #define PR_MANAGER_H 3 4 #include "qom/object.h" 5 #include "qapi/visitor.h" 6 #include "qom/object_interfaces.h" 7 #include "block/aio.h" 8 #include "qemu/coroutine.h" 9 10 #define TYPE_PR_MANAGER "pr-manager" 11 12 typedef struct PRManager PRManager; 13 typedef struct PRManagerClass PRManagerClass; 14 #define PR_MANAGER_CLASS(klass) \ 15 OBJECT_CLASS_CHECK(PRManagerClass, (klass), TYPE_PR_MANAGER) 16 #define PR_MANAGER_GET_CLASS(obj) \ 17 OBJECT_GET_CLASS(PRManagerClass, (obj), TYPE_PR_MANAGER) 18 #define PR_MANAGER(obj) \ 19 OBJECT_CHECK(PRManager, (obj), TYPE_PR_MANAGER) 20 21 struct sg_io_hdr; 22 23 struct PRManager { 24 /* <private> */ 25 Object parent; 26 }; 27 28 /** 29 * PRManagerClass: 30 * @parent_class: the base class 31 * @run: callback invoked in thread pool context 32 */ 33 struct PRManagerClass { 34 /* <private> */ 35 ObjectClass parent_class; 36 37 /* <public> */ 38 int (*run)(PRManager *pr_mgr, int fd, struct sg_io_hdr *hdr); 39 bool (*is_connected)(PRManager *pr_mgr); 40 }; 41 42 bool pr_manager_is_connected(PRManager *pr_mgr); 43 int coroutine_fn pr_manager_execute(PRManager *pr_mgr, AioContext *ctx, int fd, 44 struct sg_io_hdr *hdr); 45 46 PRManager *pr_manager_lookup(const char *id, Error **errp); 47 48 #endif 49