aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/irq.c
blob: 3e55dfa5e6badb39006a01e7eb1be7480054724b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <xen/config.h>
#include <xen/irq.h>
#include <xen/errno.h>

int init_one_irq_desc(struct irq_desc *desc)
{
    int err;

    if (irq_desc_initialized(desc))
        return 0;

    if ( !alloc_cpumask_var(&desc->affinity) )
        return -ENOMEM;

    desc->status = IRQ_DISABLED;
    desc->handler = &no_irq_type;
    spin_lock_init(&desc->lock);
    cpumask_setall(desc->affinity);
    INIT_LIST_HEAD(&desc->rl_link);

    err = arch_init_one_irq_desc(desc);
    if ( err )
    {
        free_cpumask_var(desc->affinity);
        desc->handler = NULL;
    }

    return err;
}

void no_action(int cpl, void *dev_id, struct cpu_user_regs *regs)
{
}

void irq_actor_none(struct irq_desc *desc)
{
}

unsigned int irq_startup_none(struct irq_desc *desc)
{
    return 0;
}