I am looking into a file which is i8259.c which is basically an interrupt controller. here in end is a function which is
static int pic_initfn(ISADevice *dev)
{
PicState *s = DO_UPCAST(PicState, dev, dev);
memory_region_init_io(&s->base_io, &pic_base_ioport_ops, s, "pic", 2);
memory_region_init_io(&s->elcr_io, &pic_elcr_ioport_ops, s, "elcr", 1);
isa_register_ioport(NULL, &s->base_io, s->iobase);
if (s->elcr_addr != -1) {
isa_register_ioport(NULL, &s->elcr_io, s->elcr_addr);
}
qdev_init_gpio_out(&dev->qdev, s->int_out, ARRAY_SIZE(s->int_out));
qdev_init_gpio_in(&dev->qdev, pic_set_irq, 8);
qdev_set_legacy_instance_id(&dev->qdev, s->iobase, 1);
return 0;
}
Can any one tell me what "memory_region_init_io" , "isa_register_ioport" , " qdev_init_gpio_out" , "qdev_init_gpio_in" and "qdev_set_legacy_instance_id" do? and what does this qdev mean?