Prex Home / Browse Source - Prex Version: 0.9.0

root/sys/include/irq.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*-
   2  * Copyright (c) 2005, Kohsuke Ohtani
   3  * All rights reserved.
   4  *
   5  * Redistribution and use in source and binary forms, with or without
   6  * modification, are permitted provided that the following conditions
   7  * are met:
   8  * 1. Redistributions of source code must retain the above copyright
   9  *    notice, this list of conditions and the following disclaimer.
  10  * 2. Redistributions in binary form must reproduce the above copyright
  11  *    notice, this list of conditions and the following disclaimer in the
  12  *    documentation and/or other materials provided with the distribution.
  13  * 3. Neither the name of the author nor the names of any co-contributors
  14  *    may be used to endorse or promote products derived from this software
  15  *    without specific prior written permission.
  16  *
  17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27  * SUCH DAMAGE.
  28  */
  29 
  30 #ifndef _IRQ_H
  31 #define _IRQ_H
  32 
  33 #include <types.h>
  34 #include <sys/cdefs.h>
  35 #include <sys/sysinfo.h>
  36 #include <sys/ipl.h>
  37 #include <event.h>
  38 
  39 struct irq {
  40         int             vector;         /* vector number */
  41         int             (*isr)(void *); /* pointer to isr */
  42         void            (*ist)(void *); /* pointer to ist */
  43         void            *data;          /* data to be passed for isr/ist */
  44         int             priority;       /* interrupt priority */
  45         u_int           count;          /* interrupt count */
  46         int             istreq;         /* number of ist request */
  47         thread_t        thread;         /* thread id of ist */
  48         struct event    istevt;         /* event for ist */
  49 };
  50 
  51 /*
  52  * Return values from ISR.
  53  */
  54 #define INT_DONE        0       /* success */
  55 #define INT_ERROR       1       /* interrupt not handled */
  56 #define INT_CONTINUE    2       /* continue processing (Request IST) */
  57 
  58 /*
  59  * Macro to map an interrupt priority level to IST priority.
  60  */
  61 #define ISTPRI(pri)     (PRI_IST + (IPL_HIGH - pri))
  62 
  63 /* No IST for irq_attach() */
  64 #define IST_NONE        ((void (*)(void *)) -1)
  65 
  66 __BEGIN_DECLS
  67 irq_t    irq_attach(int, int, int, int (*)(void *), void (*)(void *), void *);
  68 void     irq_detach(irq_t);
  69 void     irq_handler(int);
  70 int      irq_info(struct irqinfo *);
  71 void     irq_init(void);
  72 __BEGIN_DECLS
  73 
  74 #endif /* !_IRQ_H */

/* [<][>][^][v][top][bottom][index][help] */