blob: 45de28d3542c713e23fa34bb627c87e2e54d3195 [file] [log] [blame]
Paolo Bonzini7c9e5272017-08-21 18:58:56 +02001#ifndef PR_MANAGER_H
2#define PR_MANAGER_H
3
4#include "qom/object.h"
Paolo Bonzini7c9e5272017-08-21 18:58:56 +02005#include "qapi/visitor.h"
6#include "qom/object_interfaces.h"
7#include "block/aio.h"
8
9#define TYPE_PR_MANAGER "pr-manager"
10
Eduardo Habkostc821774a2020-08-31 17:07:37 -040011OBJECT_DECLARE_TYPE(PRManager, PRManagerClass,
Eduardo Habkost30b57072020-09-16 14:25:17 -040012 PR_MANAGER)
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020013
14struct sg_io_hdr;
15
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040016struct PRManager {
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020017 /* <private> */
18 Object parent;
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040019};
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020020
21/**
22 * PRManagerClass:
23 * @parent_class: the base class
24 * @run: callback invoked in thread pool context
25 */
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040026struct PRManagerClass {
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020027 /* <private> */
28 ObjectClass parent_class;
29
30 /* <public> */
31 int (*run)(PRManager *pr_mgr, int fd, struct sg_io_hdr *hdr);
Paolo Bonzini5f640892018-02-28 18:47:57 +010032 bool (*is_connected)(PRManager *pr_mgr);
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040033};
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020034
Paolo Bonzini5f640892018-02-28 18:47:57 +010035bool pr_manager_is_connected(PRManager *pr_mgr);
Kevin Wolf2f3a7ab2018-10-31 11:25:18 +010036int coroutine_fn pr_manager_execute(PRManager *pr_mgr, AioContext *ctx, int fd,
37 struct sg_io_hdr *hdr);
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020038
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020039PRManager *pr_manager_lookup(const char *id, Error **errp);
Paolo Bonzini7c9e5272017-08-21 18:58:56 +020040
41#endif