2 * QEMU Guest Agent command state interfaces
4 * Copyright IBM Corp. 2011
7 * Michael Roth <mdroth@linux.vnet.ibm.com>
9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
10 * See the COPYING file in the top-level directory.
12 #include "qemu/osdep.h"
13 #include "guest-agent-core.h"
15 struct GACommandState
{
19 typedef struct GACommandGroup
{
21 void (*cleanup
)(void);
24 /* handle init/cleanup for stateful guest commands */
26 void ga_command_state_add(GACommandState
*cs
,
28 void (*cleanup
)(void))
30 GACommandGroup
*cg
= g_new0(GACommandGroup
, 1);
32 cg
->cleanup
= cleanup
;
33 cs
->groups
= g_slist_append(cs
->groups
, cg
);
36 static void ga_command_group_init(gpointer opaque
, gpointer unused
)
38 GACommandGroup
*cg
= opaque
;
46 void ga_command_state_init_all(GACommandState
*cs
)
49 g_slist_foreach(cs
->groups
, ga_command_group_init
, NULL
);
52 static void ga_command_group_cleanup(gpointer opaque
, gpointer unused
)
54 GACommandGroup
*cg
= opaque
;
62 void ga_command_state_cleanup_all(GACommandState
*cs
)
65 g_slist_foreach(cs
->groups
, ga_command_group_cleanup
, NULL
);
68 GACommandState
*ga_command_state_new(void)
70 GACommandState
*cs
= g_new0(GACommandState
, 1);
75 void ga_command_state_free(GACommandState
*cs
)
77 g_slist_free_full(cs
->groups
, g_free
);