Aiur – ZelluX 的技术博客

Security, Kernel, Virtualization, Programming Languages

DomainU中调用do_console_io

88 views | without comments

The Definitive Guide to Xen第二章的Exercise,通过调用hypercall page中的console_io项输出Hello World。

void start_kernel(start_info_t * start_info)
{
    HYPERVISOR_console_io(CONSOLEIO_write,12,"Hello Worldn");
    while(1);
}

但是默认选项编译和启动的Xen是不会保留DomainU中输出的信息。参考drivers/char/console.c,可以看到主要有两个选项控制了DomainU的do_console_io输出:

#ifndef VERBOSE
    /* Only domain 0 may access the emergency console. */
    if ( current->domain->domain_id != 0 )
        return -EPERM;
#endif
if ( opt_console_to_ring )
{
    for ( kptr = kbuf; *kptr != ''; kptr++ )
        putchar_console_ring(*kptr);
    send_guest_global_virq(dom0, VIRQ_CON_RING);
}

VERBOSE选项可以在编译Xen的时候开启debug选项,而opt_console_to_ring则是一个启动选项,在grub的启动选项中增加loglvl=all guest_loglvl=all console_to_ring即可。

重启Xen后就能通过xm dmesg看到Hello World了。

Related Posts

Written by zellux

September 25th, 2008 at 1:06 pm

Posted in Computer System

Tagged with

Leave a Reply

FireStats icon Powered by FireStatsBetter Tag Cloud