The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/pexpert/i386/pe_interrupt.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * The contents of this file constitute Original Code as defined in and
    7  * are subject to the Apple Public Source License Version 1.1 (the
    8  * "License").  You may not use this file except in compliance with the
    9  * License.  Please obtain a copy of the License at
   10  * http://www.apple.com/publicsource and read it before using this file.
   11  * 
   12  * This Original Code and all software distributed under the License are
   13  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   14  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   15  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   16  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
   17  * License for the specific language governing rights and limitations
   18  * under the License.
   19  * 
   20  * @APPLE_LICENSE_HEADER_END@
   21  */
   22 #include <pexpert/pexpert.h>
   23 #include <pexpert/protos.h>
   24 #include <machine/machine_routines.h>
   25 #include <i386/mp.h>
   26 #include <sys/kdebug.h>
   27 
   28 
   29 void PE_incoming_interrupt(int, void *);
   30 
   31 
   32 struct i386_interrupt_handler {
   33         IOInterruptHandler      handler;
   34         void                    *nub;
   35         void                    *target;
   36         void                    *refCon;
   37 };
   38 
   39 typedef struct i386_interrupt_handler i386_interrupt_handler_t;
   40 
   41 i386_interrupt_handler_t        PE_interrupt_handler;
   42 
   43 
   44 
   45 void
   46 PE_incoming_interrupt(int interrupt, void *state)
   47 {
   48         i386_interrupt_handler_t        *vector;
   49 
   50         KERNEL_DEBUG_CONSTANT(MACHDBG_CODE(DBG_MACH_EXCP_INTR, 0) | DBG_FUNC_START,
   51                               0, ((unsigned int *)state)[7], 0, 0, 0);
   52 
   53         vector = &PE_interrupt_handler;
   54 
   55         if (!lapic_interrupt(interrupt, state)) {
   56                 vector->handler(vector->target, state, vector->nub, interrupt);
   57         }
   58 
   59         KERNEL_DEBUG_CONSTANT(MACHDBG_CODE(DBG_MACH_EXCP_INTR, 0) | DBG_FUNC_END,
   60            0, 0, 0, 0, 0);
   61 }
   62 
   63 void PE_install_interrupt_handler(void *nub,
   64                                   __unused int source,
   65                                   void *target,
   66                                   IOInterruptHandler handler,
   67                                   void *refCon)
   68 {
   69         i386_interrupt_handler_t        *vector;
   70 
   71         vector = &PE_interrupt_handler;
   72 
   73         /*vector->source = source; IGNORED */
   74         vector->handler = handler;
   75         vector->nub = nub;
   76         vector->target = target;
   77         vector->refCon = refCon;
   78 }

Cache object: 788c8f6a107c218fb25996abf8b1bdf2


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.