mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
ppc/xics: add a xics_set_nr_servers common routine
xics_spapr and xics_kvm nearly define the same 'set_nr_servers' handler. Only the type of the ICP differs. So let's make a common one to remove some duplicated code. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
14fd8ab267
commit
2bb0d10aeb
4 changed files with 25 additions and 27 deletions
|
@ -183,6 +183,24 @@ static void xics_prop_set_nr_irqs(Object *obj, Visitor *v, const char *name,
|
|||
info->set_nr_irqs(xics, value, errp);
|
||||
}
|
||||
|
||||
void xics_set_nr_servers(XICSState *xics, uint32_t nr_servers,
|
||||
const char *typename, Error **errp)
|
||||
{
|
||||
int i;
|
||||
|
||||
xics->nr_servers = nr_servers;
|
||||
|
||||
xics->ss = g_malloc0(xics->nr_servers * sizeof(ICPState));
|
||||
for (i = 0; i < xics->nr_servers; i++) {
|
||||
char name[32];
|
||||
ICPState *icp = &xics->ss[i];
|
||||
|
||||
object_initialize(icp, sizeof(*icp), typename);
|
||||
snprintf(name, sizeof(name), "icp[%d]", i);
|
||||
object_property_add_child(OBJECT(xics), name, OBJECT(icp), errp);
|
||||
}
|
||||
}
|
||||
|
||||
static void xics_prop_get_nr_servers(Object *obj, Visitor *v,
|
||||
const char *name, void *opaque,
|
||||
Error **errp)
|
||||
|
@ -198,7 +216,7 @@ static void xics_prop_set_nr_servers(Object *obj, Visitor *v,
|
|||
Error **errp)
|
||||
{
|
||||
XICSState *xics = XICS_COMMON(obj);
|
||||
XICSStateClass *info = XICS_COMMON_GET_CLASS(xics);
|
||||
XICSStateClass *xsc = XICS_COMMON_GET_CLASS(xics);
|
||||
Error *error = NULL;
|
||||
int64_t value;
|
||||
|
||||
|
@ -213,8 +231,8 @@ static void xics_prop_set_nr_servers(Object *obj, Visitor *v,
|
|||
return;
|
||||
}
|
||||
|
||||
assert(info->set_nr_servers);
|
||||
info->set_nr_servers(xics, value, errp);
|
||||
assert(xsc->set_nr_servers);
|
||||
xsc->set_nr_servers(xics, value, errp);
|
||||
}
|
||||
|
||||
static void xics_common_initfn(Object *obj)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue