xref: /openbmc/qemu/qga/guest-agent-core.h (revision 61baac2f)
113a286d5SMichael Roth /*
213a286d5SMichael Roth  * QEMU Guest Agent core declarations
313a286d5SMichael Roth  *
413a286d5SMichael Roth  * Copyright IBM Corp. 2011
513a286d5SMichael Roth  *
613a286d5SMichael Roth  * Authors:
713a286d5SMichael Roth  *  Adam Litke        <aglitke@linux.vnet.ibm.com>
813a286d5SMichael Roth  *  Michael Roth      <mdroth@linux.vnet.ibm.com>
913a286d5SMichael Roth  *
1013a286d5SMichael Roth  * This work is licensed under the terms of the GNU GPL, version 2 or later.
1113a286d5SMichael Roth  * See the COPYING file in the top-level directory.
1213a286d5SMichael Roth  */
13*61baac2fSPeter Maydell #ifndef GUEST_AGENT_CORE_H
14*61baac2fSPeter Maydell #define GUEST_AGENT_CORE_H
15*61baac2fSPeter Maydell 
167b1b5d19SPaolo Bonzini #include "qapi/qmp/dispatch.h"
1713a286d5SMichael Roth #include "qemu-common.h"
18abb297edSMarkus Armbruster #include "qga-qapi-types.h"
1913a286d5SMichael Roth 
20125b310eSMichael Roth #define QGA_READ_COUNT_DEFAULT 4096
2113a286d5SMichael Roth 
2248ff7a62SMichael Roth typedef struct GAState GAState;
2313a286d5SMichael Roth typedef struct GACommandState GACommandState;
241527badbSMarkus Armbruster 
253cf0bed8SMichael Roth extern GAState *ga_state;
261527badbSMarkus Armbruster extern QmpCommandList ga_commands;
2713a286d5SMichael Roth 
281281c08aSTomoki Sekiyama GList *ga_command_blacklist_init(GList *blacklist);
29e3d4d252SMichael Roth void ga_command_state_init(GAState *s, GACommandState *cs);
3013a286d5SMichael Roth void ga_command_state_add(GACommandState *cs,
3113a286d5SMichael Roth                           void (*init)(void),
3213a286d5SMichael Roth                           void (*cleanup)(void));
3313a286d5SMichael Roth void ga_command_state_init_all(GACommandState *cs);
3413a286d5SMichael Roth void ga_command_state_cleanup_all(GACommandState *cs);
3513a286d5SMichael Roth GACommandState *ga_command_state_new(void);
363e3e302fSMarc-André Lureau void ga_command_state_free(GACommandState *cs);
3748ff7a62SMichael Roth bool ga_logging_enabled(GAState *s);
3848ff7a62SMichael Roth void ga_disable_logging(GAState *s);
3948ff7a62SMichael Roth void ga_enable_logging(GAState *s);
40d607a523SStefan Weil void GCC_FMT_ATTR(1, 2) slog(const gchar *fmt, ...);
413cf0bed8SMichael Roth void ga_set_response_delimited(GAState *s);
42f22d85e9SMichael Roth bool ga_is_frozen(GAState *s);
43f22d85e9SMichael Roth void ga_set_frozen(GAState *s);
44f22d85e9SMichael Roth void ga_unset_frozen(GAState *s);
45ec0f694cSTomoki Sekiyama const char *ga_fsfreeze_hook(GAState *s);
4639097dafSMichael Roth int64_t ga_get_fd_handle(GAState *s, Error **errp);
470b4b4938SEric Blake int ga_parse_whence(GuestFileWhence *whence, Error **errp);
4804b4e75fSLuiz Capitulino 
4904b4e75fSLuiz Capitulino #ifndef _WIN32
5004b4e75fSLuiz Capitulino void reopen_fd_to_null(int fd);
5104b4e75fSLuiz Capitulino #endif
52*61baac2fSPeter Maydell 
53*61baac2fSPeter Maydell #endif /* GUEST_AGENT_CORE_H */
54