Ejemplo n.º 1
0
bool vmm_devtree_have_attr(const struct vmm_devtree_node *node)
{
	bool ret;
	irq_flags_t flags;
	struct vmm_devtree_node *np = (struct vmm_devtree_node *)node;

	if (!np) {
		return FALSE;
	}

	vmm_read_lock_irqsave_lite(&np->attr_lock, flags);
	ret = list_empty(&np->attr_list) ? FALSE : TRUE;
	vmm_read_unlock_irqrestore_lite(&np->attr_lock, flags);

	return ret;
}
Ejemplo n.º 2
0
struct vmm_host_irq *__vmm_host_irqext_get(unsigned int hirq)
{
	irq_flags_t flags;
	struct vmm_host_irq *irq = NULL;

	if (hirq < CONFIG_HOST_IRQ_COUNT)
		return NULL;
	hirq -= CONFIG_HOST_IRQ_COUNT;

	vmm_read_lock_irqsave_lite(&iectrl.lock, flags);

	if (hirq < iectrl.count)
		irq = iectrl.irqs[hirq];

	vmm_read_unlock_irqrestore_lite(&iectrl.lock, flags);

	return irq;
}
Ejemplo n.º 3
0
void vmm_host_irqext_debug_dump(struct vmm_chardev *cdev)
{
	int idx = 0;
	irq_flags_t flags;

	vmm_read_lock_irqsave_lite(&iectrl.lock, flags);

	vmm_cprintf(cdev, "%d extended IRQs\n", iectrl.count);
	vmm_cprintf(cdev, "  BITMAP:\n");
	for (idx = 0; idx < BITS_TO_LONGS(iectrl.count); ++idx) {
		if (0 == (idx % 4)) {
			vmm_cprintf(cdev, "\n    %d:", idx);
		}
		vmm_cprintf(cdev, " 0x%x", iectrl.bitmap[idx]);
	}
	vmm_cprintf(cdev, "\n");

	vmm_read_unlock_irqrestore_lite(&iectrl.lock, flags);
}