xen-qemu初始化

qemu初始化

tools\ioemu-qemu-xen\vl.c

int main(int argc, char **argv, char **envp)

{

    register_machines();

 

tools\ioemu-qemu-xen\i386-dm\machine.c

 

void register_machines(void)

{

    qemu_register_machine(&xenfv_machine);

    qemu_register_machine(&xenpv_machine);

}

 

tools\ioemu-qemu-xen\hw\xen_machine_fv.c

QEMUMachine xenfv_machine = {

    "xenfv",

    "Xen Fully-virtualized PC",

    xen_init_fv,

    BIOS_SIZE | RAMSIZE_FIXED,

    .max_cpus = 1,

    .nodisk_ok = 1,

};

 

tools\ioemu-qemu-xen\hw\xen_machine_fv.c

static void xen_init_fv(ram_addr_t ram_size, int vga_ram_size,

                          const char *boot_device,

                          const char *kernel_filename,const char *kernel_cmdline,

                        const char *initrd_filename, const char *cpu_model,

                        const char *direct_pci)

{

    pc_machine.init(ram_size, vga_ram_size, boot_device,

                      kernel_filename, kernel_cmdline, initrd_filename,

                      cpu_model, direct_pci);

 

tools\ioemu-qemu-xen\target-i386\machine.c

void register_machines(void)

{

    qemu_register_machine(&pc_machine);

    qemu_register_machine(&isapc_machine);

}

 

tools\ioemu-qemu-xen\hw\pc.c

QEMUMachine pc_machine = {

    .name = "pc",

    .desc = "Standard PC",

    .init = pc_init_pci,

    .ram_require = PC_MAX_BIOS_SIZE,

    .max_cpus = 255,

};

 

tools\ioemu-qemu-xen\hw\pc.c

static void pc_init_pci(ram_addr_t ram_size, int vga_ram_size,

                        const char *boot_device,

                        const char *kernel_filename,

                        const char *kernel_cmdline,

                        const char *initrd_filename,

                        const char *cpu_model,

                        const char *direct_pci)

{

    pc_init1(ram_size, vga_ram_size, boot_device,

             kernel_filename, kernel_cmdline,

             initrd_filename, 1, cpu_model);

}

 

tools\ioemu-qemu-xen\hw\pc.c

/* PC hardware initialisation */

static void pc_init1(ram_addr_t ram_size, int vga_ram_size,

                     const char *boot_device,

                     const char *kernel_filename, const char *kernel_cmdline,

                     const char *initrd_filename,

                     int pci_enabled, const char *cpu_model)

{

    rtc_state = rtc_init(0x70, i8259[8], 2000);

 

tools\ioemu-qemu-xen\hw\Mc146818rtc.c

RTCState *rtc_init(int base, qemu_irq irq, int base_year)

{

tools\ioemu-qemu-xen\i386-dm\Helper2.c

CPUX86State *cpu_x86_init(const char *cpu_model)

{

 

tools\ioemu-qemu-xen\target-i386\cpu.h

#define cpu_init cpu_x86_init

 

tools\ioemu-qemu-xen\hw\pc.c

/* PC hardware initialisation */

static void pc_init1(ram_addr_t ram_size, int vga_ram_size,

                     const char *boot_device,

                     const char *kernel_filename, const char *kernel_cmdline,

                     const char *initrd_filename,

                     int pci_enabled, const char *cpu_model)

{

    for(i = 0; i < smp_cpus; i++) {

        env = cpu_init(cpu_model);

        if (!env) {

            fprintf(stderr, "Unable to find x86 CPU definition\n");

            exit(1);

        }

 

结论:tools\ioemu-qemu-xen\hw\pc.c中的pc_init1负责对硬件设备进行初始化。

 

2013年5月22日上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值