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) 1998 Apple Computer, Inc. All rights reserved. 24 25 HISTORY 26 1998-7-13 Godfrey van der Linden(gvdl) 27 Created. 28 ]*/ 29 #include <IOKit/IOLib.h> 30 31 #include <IOKit/IOEventSource.h> 32 #include <IOKit/IOWorkLoop.h> 33 34 #define super OSObject 35 36 OSDefineMetaClassAndAbstractStructors(IOEventSource, OSObject) 37 OSMetaClassDefineReservedUnused(IOEventSource, 0); 38 OSMetaClassDefineReservedUnused(IOEventSource, 1); 39 OSMetaClassDefineReservedUnused(IOEventSource, 2); 40 OSMetaClassDefineReservedUnused(IOEventSource, 3); 41 OSMetaClassDefineReservedUnused(IOEventSource, 4); 42 OSMetaClassDefineReservedUnused(IOEventSource, 5); 43 OSMetaClassDefineReservedUnused(IOEventSource, 6); 44 OSMetaClassDefineReservedUnused(IOEventSource, 7); 45 46 bool IOEventSource::init(OSObject *inOwner, 47 Action inAction = 0) 48 { 49 if (!inOwner) 50 return false; 51 52 owner = inOwner; 53 54 if ( !super::init() ) 55 return false; 56 57 (void) setAction(inAction); 58 enabled = true; 59 60 return true; 61 } 62 63 IOEventSource::Action IOEventSource::getAction () const { return action; }; 64 65 void IOEventSource::setAction(Action inAction) 66 { 67 action = inAction; 68 } 69 70 IOEventSource *IOEventSource::getNext() const { return eventChainNext; }; 71 72 void IOEventSource::setNext(IOEventSource *inNext) 73 { 74 eventChainNext = inNext; 75 } 76 77 void IOEventSource::enable() 78 { 79 enabled = true; 80 if (workLoop) 81 return signalWorkAvailable(); 82 } 83 84 void IOEventSource::disable() 85 { 86 enabled = false; 87 } 88 89 bool IOEventSource::isEnabled() const 90 { 91 return enabled; 92 } 93 94 void IOEventSource::setWorkLoop(IOWorkLoop *inWorkLoop) 95 { 96 if ( !inWorkLoop ) 97 disable(); 98 workLoop = inWorkLoop; 99 } 100 101 IOWorkLoop *IOEventSource::getWorkLoop() const 102 { 103 return workLoop; 104 } 105 106 bool IOEventSource::onThread() const 107 { 108 return (workLoop != 0) && workLoop->onThread(); 109 } 110