This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Periodic timer interrupts in the Mini-OS (working?)

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Periodic timer interrupts in the Mini-OS (working?)
From: Simon Kagstrom <simon.kagstrom@xxxxxx>
Date: Thu, 2 Feb 2006 09:14:54 +0100
Delivery-date: Thu, 02 Feb 2006 08:24:57 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.9i

I have a question about timer interrupts in the Mini-OS and
HYPERVISOR_set_timer_op. From printouts, it seems like the Mini-OS only
recieves timer events after calling block_domain:

void block_domain(u32 millisecs)
    struct timeval tv;
    HYPERVISOR_set_timer_op(monotonic_clock() + 1000000LL * (s64) millisecs);
    HYPERVISOR_sched_op(SCHEDOP_block, 0);

i.e., not the "regular" 10ms periodic events (if I don't call block_domain(),
it will just sit idle). I'm trying to understand why this is the case.

>From looking in the Linux source code, I presume that the periodic ticker is
setup in setup_cpu0_timer_irq() on uniprocessors, and this simply does a
bind_virq_to_irqhandler(VIRQ_TIMER, ...), which is the same thing that the
mini-os does by calling bind_virq(VIRQ_TIMER, ...) in the init_time()
function. These two functions do the same things, including unmasking the
event channel.

The mini-os also does a __sti(), also taken from Linux, to enable event
delivery before init_time().

Is there anything else which needs to be done to deliver periodic timer

// Simon

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>