qemu-io: Interface cleanup
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
0b613881ae
commit
3d21994f9c
@ -14,35 +14,33 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifndef __COMMAND_H__
|
|
||||||
#define __COMMAND_H__
|
#ifndef QEMU_IO_H
|
||||||
|
#define QEMU_IO_H
|
||||||
|
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
|
|
||||||
#define CMD_FLAG_GLOBAL ((int)0x80000000) /* don't iterate "args" */
|
#define CMD_FLAG_GLOBAL ((int)0x80000000) /* don't iterate "args" */
|
||||||
|
|
||||||
extern BlockDriverState *qemuio_bs;
|
|
||||||
|
|
||||||
typedef int (*cfunc_t)(BlockDriverState *bs, int argc, char **argv);
|
typedef int (*cfunc_t)(BlockDriverState *bs, int argc, char **argv);
|
||||||
typedef void (*helpfunc_t)(void);
|
typedef void (*helpfunc_t)(void);
|
||||||
|
|
||||||
typedef struct cmdinfo {
|
typedef struct cmdinfo {
|
||||||
const char *name;
|
const char* name;
|
||||||
const char *altname;
|
const char* altname;
|
||||||
cfunc_t cfunc;
|
cfunc_t cfunc;
|
||||||
int argmin;
|
int argmin;
|
||||||
int argmax;
|
int argmax;
|
||||||
int canpush;
|
int canpush;
|
||||||
int flags;
|
int flags;
|
||||||
const char *args;
|
const char *args;
|
||||||
const char *oneline;
|
const char *oneline;
|
||||||
helpfunc_t help;
|
helpfunc_t help;
|
||||||
} cmdinfo_t;
|
} cmdinfo_t;
|
||||||
|
|
||||||
void qemuio_add_command(const cmdinfo_t *ci);
|
bool qemuio_command(BlockDriverState *bs, const char *cmd);
|
||||||
|
|
||||||
|
void qemuio_add_command(const cmdinfo_t *ci);
|
||||||
int qemuio_command_usage(const cmdinfo_t *ci);
|
int qemuio_command_usage(const cmdinfo_t *ci);
|
||||||
|
|
||||||
bool qemuio_command(const char *cmd);
|
#endif /* QEMU_IO_H */
|
||||||
|
|
||||||
#endif /* __COMMAND_H__ */
|
|
@ -8,9 +8,8 @@
|
|||||||
* See the COPYING file in the top-level directory.
|
* See the COPYING file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qemu-common.h"
|
#include "qemu-io.h"
|
||||||
#include "block/block_int.h"
|
#include "block/block_int.h"
|
||||||
#include "cmd.h"
|
|
||||||
|
|
||||||
#define CMD_NOFILE_OK 0x01
|
#define CMD_NOFILE_OK 0x01
|
||||||
|
|
||||||
@ -50,11 +49,12 @@ static int init_check_command(BlockDriverState *bs, const cmdinfo_t *ct)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int command(const cmdinfo_t *ct, int argc, char **argv)
|
static int command(BlockDriverState *bs, const cmdinfo_t *ct, int argc,
|
||||||
|
char **argv)
|
||||||
{
|
{
|
||||||
char *cmd = argv[0];
|
char *cmd = argv[0];
|
||||||
|
|
||||||
if (!init_check_command(qemuio_bs, ct)) {
|
if (!init_check_command(bs, ct)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ static int command(const cmdinfo_t *ct, int argc, char **argv)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
optind = 0;
|
optind = 0;
|
||||||
return ct->cfunc(qemuio_bs, argc, argv);
|
return ct->cfunc(bs, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const cmdinfo_t *find_command(const char *cmd)
|
static const cmdinfo_t *find_command(const char *cmd)
|
||||||
@ -2068,7 +2068,7 @@ static const cmdinfo_t help_cmd = {
|
|||||||
.oneline = "help for one or all commands",
|
.oneline = "help for one or all commands",
|
||||||
};
|
};
|
||||||
|
|
||||||
bool qemuio_command(const char *cmd)
|
bool qemuio_command(BlockDriverState *bs, const char *cmd)
|
||||||
{
|
{
|
||||||
char *input;
|
char *input;
|
||||||
const cmdinfo_t *ct;
|
const cmdinfo_t *ct;
|
||||||
@ -2081,7 +2081,7 @@ bool qemuio_command(const char *cmd)
|
|||||||
if (c) {
|
if (c) {
|
||||||
ct = find_command(v[0]);
|
ct = find_command(v[0]);
|
||||||
if (ct) {
|
if (ct) {
|
||||||
done = command(ct, c, v);
|
done = command(bs, ct, c, v);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "command \"%s\" not found\n", v[0]);
|
fprintf(stderr, "command \"%s\" not found\n", v[0]);
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,9 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
|
||||||
#include "qemu-common.h"
|
#include "qemu-io.h"
|
||||||
#include "qemu/main-loop.h"
|
#include "qemu/main-loop.h"
|
||||||
#include "block/block_int.h"
|
#include "block/block_int.h"
|
||||||
#include "cmd.h"
|
|
||||||
#include "trace/control.h"
|
#include "trace/control.h"
|
||||||
|
|
||||||
#define VERSION "0.0.1"
|
#define VERSION "0.0.1"
|
||||||
@ -273,7 +272,7 @@ static void command_loop(void)
|
|||||||
char *input;
|
char *input;
|
||||||
|
|
||||||
for (i = 0; !done && i < ncmdline; i++) {
|
for (i = 0; !done && i < ncmdline; i++) {
|
||||||
done = qemuio_command(cmdline[i]);
|
done = qemuio_command(qemuio_bs, cmdline[i]);
|
||||||
}
|
}
|
||||||
if (cmdline) {
|
if (cmdline) {
|
||||||
g_free(cmdline);
|
g_free(cmdline);
|
||||||
@ -298,7 +297,7 @@ static void command_loop(void)
|
|||||||
if (input == NULL) {
|
if (input == NULL) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
done = qemuio_command(input);
|
done = qemuio_command(qemuio_bs, input);
|
||||||
g_free(input);
|
g_free(input);
|
||||||
|
|
||||||
prompted = 0;
|
prompted = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user