Annotation of XNU/iokit/Examples/drvGenericInterruptController/GenericInterruptController.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1998-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: /*
                     23:  * Copyright (c) 1999 Apple Computer, Inc.  All rights reserved.
                     24:  *
                     25:  *  DRI: Josh de Cesare
                     26:  *
                     27:  */
                     28: 
                     29: #ifndef _IOKIT_GENERICINTERRUPTCONTROLLER_H
                     30: #define _IOKIT_GENERICINTERRUPTCONTROLLER_H
                     31: 
                     32: #include <IOKit/IOInterrupts.h>
                     33: #include <IOKit/IOInterruptController.h>
                     34: 
                     35: class GenericInterruptController : public IOInterruptController
                     36: {
                     37:   IODeclareDefaultStructors(GenericInterruptController);
                     38:   
                     39: public:
                     40:   // There should be a method to start or init the controller.
                     41:   // Its nature is up to you.
                     42:   virtual bool start(IOService *provider);
                     43:   
                     44:   // Returns the type of a vector: level or edge.  This will probably get
                     45:   // replaced but a default method and a new method getVectorType.
                     46:   virtual IOReturn getInterruptType(IOService *nub, int source,
                     47:                                    int *interruptType);
                     48:   
                     49:   // Returns a function pointer for the interrupt handler.
                     50:   // Sadly, egcs prevents this from being done by the base class.
                     51:   virtual IOInterruptAction getInterruptHandlerAddress(void);
                     52:   
                     53:   // The actual interrupt handler.
                     54:   virtual IOReturn handleInterrupt(void *refCon,
                     55:                                   IOService *nub, int source);
                     56:   
                     57:   
                     58:   // Should return true if this vector can be shared.
                     59:   // The base class return false, so this method only need to be implemented
                     60:   // if the controller needs to support shared interrupts.
                     61:   // No other work is required to support shared interrupts.
                     62:   virtual bool vectorCanBeShared(long vectorNumber, IOInterruptVector *vector);
                     63:   
                     64:   // Do any hardware initalization for this vector.  Leave the vector
                     65:   // hard disabled.
                     66:   virtual void initVector(long vectorNumber, IOInterruptVector *vector);
                     67:   
                     68:   // Disable this vector at the hardware.
                     69:   virtual void disableVectorHard(long vectorNumber, IOInterruptVector *vector);
                     70:   
                     71:   // Enable this vector at the hardware.
                     72:   virtual void enableVector(long vectorNumber, IOInterruptVector *vector);
                     73:   
                     74:   // Cause an interrupt on this vector.
                     75:   virtual void causeVector(long vectorNumber, IOInterruptVector *vector);
                     76: };
                     77: 
                     78: #endif /* ! _IOKIT_GENERICINTERRUPTCONTROLLER_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.