qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class
Date: Wed, 03 Oct 2012 16:38:10 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120911 Thunderbird/15.0.1

Il 03/10/2012 15:28, Eduardo Habkost ha scritto:
> We can make it a child of a generic "machine" class later, but right now
> a "PC" class is needed to allow global-properties to control some
> details of CPU creation on the PC code.

Does it need to be a Device, or can it be a normal Object (or for
clarity a derivative of TYPE_CONTAINER)?

Paolo

> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
>  hw/pc.c | 18 ++++++++++++++++++
>  hw/pc.h |  6 ++++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/hw/pc.c b/hw/pc.c
> index 7e7e0e2..9b68282 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -550,6 +550,24 @@ static void bochs_bios_write(void *opaque, uint32_t 
> addr, uint32_t val)
>      }
>  }
>  
> +typedef struct PC {
> +    DeviceState parent_obj;
> +} PC;
> +
> +static const TypeInfo pc_type_info = {
> +    .name = TYPE_PC_MACHINE,
> +    .parent = TYPE_DEVICE,
> +    .instance_size = sizeof(PC),
> +    .class_size = sizeof(DeviceClass),
> +};
> +
> +static void pc_register_type(void)
> +{
> +    type_register_static(&pc_type_info);
> +}
> +
> +type_init(pc_register_type);
> +
>  int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
>  {
>      int index = le32_to_cpu(e820_table.count);
> diff --git a/hw/pc.h b/hw/pc.h
> index e4db071..77e898f 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -102,6 +102,12 @@ void i8042_setup_a20_line(ISADevice *dev, qemu_irq 
> *a20_out);
>  /* pc.c */
>  extern int fd_bootchk;
>  
> +#define TYPE_PC_MACHINE "PC"
> +#define PC(obj) \
> +    OBJECT_CHECK(PC, (obj), TYPE_PC_MACHINE)
> +struct PC;
> +typedef struct PC PC;
> +
>  void pc_register_ferr_irq(qemu_irq irq);
>  void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
>  
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]