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/iokit/Kernel/IOPMPowerSourceList.cpp

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) 1998-2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
    5  * 
    6  * This file contains Original Code and/or Modifications of Original Code
    7  * as defined in and that are subject to the Apple Public Source License
    8  * Version 2.0 (the 'License'). You may not use this file except in
    9  * compliance with the License. The rights granted to you under the License
   10  * may not be used to create, or enable the creation or redistribution of,
   11  * unlawful or unlicensed copies of an Apple operating system, or to
   12  * circumvent, violate, or enable the circumvention or violation of, any
   13  * terms of an Apple operating system software license agreement.
   14  * 
   15  * Please obtain a copy of the License at
   16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
   17  * 
   18  * The Original Code and all software distributed under the License are
   19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   23  * Please see the License for the specific language governing rights and
   24  * limitations under the License.
   25  * 
   26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
   27  */
   28 #include <IOKit/pwr_mgt/IOPM.h>
   29 #include <IOKit/pwr_mgt/IOPMPowerSourceList.h>
   30 #include <IOKit/pwr_mgt/IOPMPowerSource.h>
   31 
   32 #define super OSObject
   33 OSDefineMetaClassAndStructors(IOPMPowerSourceList,OSObject)
   34 
   35 //******************************************************************************
   36 // init
   37 //
   38 //******************************************************************************
   39 void IOPMPowerSourceList::initialize ( void )
   40 {
   41     firstItem = NULL;
   42     length = 0;
   43 }
   44 
   45 //******************************************************************************
   46 // addToList
   47 //
   48 //******************************************************************************
   49 
   50 IOReturn IOPMPowerSourceList::addToList(IOPMPowerSource *newPowerSource)
   51 {
   52     IOPMPowerSource * nextPowerSource;
   53 
   54     // Is new object already in the list?
   55     nextPowerSource = firstItem;
   56     while (  nextPowerSource != NULL ) 
   57     {
   58         if ( nextPowerSource == newPowerSource ) 
   59         {
   60             // yes, just return
   61             return IOPMNoErr;                           
   62         }
   63         nextPowerSource = nextInList(nextPowerSource);
   64     }
   65 
   66     // add it to list
   67     newPowerSource->nextInList = firstItem;
   68     firstItem = newPowerSource;
   69     length++;
   70     return IOPMNoErr;
   71 }
   72 
   73 
   74 //******************************************************************************
   75 // firstInList
   76 //
   77 //******************************************************************************
   78 
   79 IOPMPowerSource * IOPMPowerSourceList::firstInList ( void )
   80 {
   81     return firstItem;
   82 }
   83 
   84 //******************************************************************************
   85 // nextInList
   86 //
   87 //******************************************************************************
   88 
   89 IOPMPowerSource * IOPMPowerSourceList::nextInList(IOPMPowerSource *currentItem)
   90 {
   91     if ( currentItem != NULL ) {
   92        return (currentItem->nextInList);
   93     }
   94     return NULL;
   95 }
   96 
   97 //******************************************************************************
   98 // numberOfItems
   99 //
  100 //******************************************************************************
  101 
  102 unsigned long IOPMPowerSourceList::numberOfItems ( void )
  103 {
  104     return length;
  105 }
  106 
  107 //******************************************************************************
  108 // removeFromList
  109 //
  110 // Find the item in the list, unlink it, and free it.
  111 //******************************************************************************
  112 
  113 IOReturn IOPMPowerSourceList::removeFromList ( IOPMPowerSource * theItem )
  114 {
  115     IOPMPowerSource * item = firstItem;
  116     IOPMPowerSource * temp;
  117 
  118     if ( NULL == item) goto exit;
  119     
  120     if ( item  == theItem ) {
  121         firstItem = item->nextInList;
  122         length--;
  123         item->release();
  124         return IOPMNoErr;
  125     }
  126     while ( item->nextInList != NULL ) {
  127         if ( item->nextInList == theItem ) {
  128             temp = item->nextInList;
  129             item->nextInList = temp->nextInList;
  130             length--;
  131             temp->release();
  132             return IOPMNoErr;
  133         }
  134         item = item->nextInList;
  135     }
  136 
  137 exit:
  138     return IOPMNoErr;
  139 }
  140 
  141 
  142 //******************************************************************************
  143 // free
  144 //
  145 // Free all items in the list, and then free the list itself
  146 //******************************************************************************
  147 
  148 void IOPMPowerSourceList::free (void )
  149 {
  150     IOPMPowerSource * next = firstItem;
  151 
  152     while ( next != NULL ) {
  153         firstItem = next->nextInList;
  154         length--;
  155         next->release();
  156         next = firstItem;        
  157     }
  158     super::free();
  159 }
  160 
  161 
  162 
  163 
  164 
  165 
  166 

Cache object: e24da0a232656711e961ef617daea9fe


[ 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.