time.c (6fae9c25134baffbeeb20031479e7ff6f6d8eec0) | time.c (f611f2da99420abc973c32cdbddbf5c365d0a20c) |
---|---|
1/* 2 * Xen time implementation. 3 * 4 * This is implemented in terms of a clocksource driver which uses 5 * the hypervisor clock as a nanosecond timebase, and a clockevent 6 * driver which uses the hypervisor's timer mechanism. 7 * 8 * Jeremy Fitzhardinge <jeremy@xensource.com>, XenSource Inc, 2007 --- 383 unchanged lines hidden (view full) --- 392 393 printk(KERN_INFO "installing Xen timer for CPU %d\n", cpu); 394 395 name = kasprintf(GFP_KERNEL, "timer%d", cpu); 396 if (!name) 397 name = "<timer kasprintf failed>"; 398 399 irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt, | 1/* 2 * Xen time implementation. 3 * 4 * This is implemented in terms of a clocksource driver which uses 5 * the hypervisor clock as a nanosecond timebase, and a clockevent 6 * driver which uses the hypervisor's timer mechanism. 7 * 8 * Jeremy Fitzhardinge <jeremy@xensource.com>, XenSource Inc, 2007 --- 383 unchanged lines hidden (view full) --- 392 393 printk(KERN_INFO "installing Xen timer for CPU %d\n", cpu); 394 395 name = kasprintf(GFP_KERNEL, "timer%d", cpu); 396 if (!name) 397 name = "<timer kasprintf failed>"; 398 399 irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt, |
400 IRQF_DISABLED|IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER, | 400 IRQF_DISABLED|IRQF_PERCPU| 401 IRQF_NOBALANCING|IRQF_TIMER| 402 IRQF_FORCE_RESUME, |
401 name, NULL); 402 403 evt = &per_cpu(xen_clock_events, cpu); 404 memcpy(evt, xen_clockevent, sizeof(*evt)); 405 406 evt->cpumask = cpumask_of(cpu); 407 evt->irq = irq; 408} --- 104 unchanged lines hidden --- | 403 name, NULL); 404 405 evt = &per_cpu(xen_clock_events, cpu); 406 memcpy(evt, xen_clockevent, sizeof(*evt)); 407 408 evt->cpumask = cpumask_of(cpu); 409 evt->irq = irq; 410} --- 104 unchanged lines hidden --- |