mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 13:30:52 +00:00
0a982b1bf3
Exposing OS-specific SEEK_ constants in our qapi was a mistake (if the host has SEEK_CUR as 1, but the guest has it as 2, then the semantics are unclear what should happen); if we had a time machine, we would instead expose only a symbolic enum. It's too late to change the fact that we have an integer in qapi, but we can at least document what mapping we want to enforce for all qga clients (and luckily, it happens to be the mapping that both Linux and Windows use); then fix the code to match that mapping. It also helps us filter out unsupported SEEK_DATA and SEEK_HOLE. In the future, we may wish to move our QGA_SEEK_* constants into qga/qapi-schema.json, along with updating the schema to take an alternate type (either the integer, or the string value of the enum name) - but that's too much risk during hard freeze. Signed-off-by: Eric Blake <eblake@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/*
|
|
* QEMU Guest Agent core declarations
|
|
*
|
|
* Copyright IBM Corp. 2011
|
|
*
|
|
* Authors:
|
|
* Adam Litke <aglitke@linux.vnet.ibm.com>
|
|
* Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
#include "qapi/qmp/dispatch.h"
|
|
#include "qemu-common.h"
|
|
|
|
#define QGA_READ_COUNT_DEFAULT 4096
|
|
|
|
/* Mapping of whence codes used by guest-file-seek. */
|
|
enum {
|
|
QGA_SEEK_SET = 0,
|
|
QGA_SEEK_CUR = 1,
|
|
QGA_SEEK_END = 2,
|
|
};
|
|
|
|
typedef struct GAState GAState;
|
|
typedef struct GACommandState GACommandState;
|
|
extern GAState *ga_state;
|
|
|
|
GList *ga_command_blacklist_init(GList *blacklist);
|
|
void ga_command_state_init(GAState *s, GACommandState *cs);
|
|
void ga_command_state_add(GACommandState *cs,
|
|
void (*init)(void),
|
|
void (*cleanup)(void));
|
|
void ga_command_state_init_all(GACommandState *cs);
|
|
void ga_command_state_cleanup_all(GACommandState *cs);
|
|
GACommandState *ga_command_state_new(void);
|
|
bool ga_logging_enabled(GAState *s);
|
|
void ga_disable_logging(GAState *s);
|
|
void ga_enable_logging(GAState *s);
|
|
void GCC_FMT_ATTR(1, 2) slog(const gchar *fmt, ...);
|
|
void ga_set_response_delimited(GAState *s);
|
|
bool ga_is_frozen(GAState *s);
|
|
void ga_set_frozen(GAState *s);
|
|
void ga_unset_frozen(GAState *s);
|
|
const char *ga_fsfreeze_hook(GAState *s);
|
|
int64_t ga_get_fd_handle(GAState *s, Error **errp);
|
|
|
|
#ifndef _WIN32
|
|
void reopen_fd_to_null(int fd);
|
|
#endif
|