Loading...
libkern/c++/OSMetaClass.cpp xnu-4570.71.2 xnu-3789.41.3
--- xnu/xnu-4570.71.2/libkern/c++/OSMetaClass.cpp
+++ xnu/xnu-3789.41.3/libkern/c++/OSMetaClass.cpp
@@ -110,7 +110,6 @@
 struct ExpansionData {
     OSOrderedSet    * instances;
     OSKext          * kext;
-    uint32_t          retain;
 #if IOTRACKING
     IOTrackingQueue * tracking;
 #endif
@@ -466,7 +465,7 @@
         if (myKext) {
             sAllClassesDict->removeObject(className);
         } else {
-            sAllClassesDict->removeObject((const char *)className);
+            sAllClassesDict->removeObject((char *)className);
         }
     }
     IOLockUnlock(sAllClassesLock);
@@ -657,11 +656,7 @@
                    /* Log this error here so we can include the class name.
                     * xxx - we should look up the other kext that defines the class
                     */
-#if CONFIG_EMBEDDED
-                    panic(
-#else
                     OSKextLog(myKext, kOSMetaClassLogSpec,
-#endif /* CONFIG_EMBEDDED */
                         "OSMetaClass: Kext %s class %s is a duplicate;"
                         "kext %s already has a class by that name.",
                          sStalled->kextIdentifier, (const char *)me->className,
@@ -951,43 +946,6 @@
 
 /*********************************************************************
 *********************************************************************/
-bool
-OSMetaClass::removeClasses(OSCollection * metaClasses)
-{
-    OSCollectionIterator * classIterator;
-    OSMetaClass          * checkClass;
-    bool                   result;
-
-    classIterator = OSCollectionIterator::withCollection(metaClasses);
-    if (!classIterator) return (false);
-
-    IOLockLock(sAllClassesLock);
-
-    result = false;
-    do
-    {
-        while ((checkClass = (OSMetaClass *)classIterator->getNextObject())
-            && !checkClass->getInstanceCount()
-            && !checkClass->reserved->retain) {}
-        if (checkClass) break;
-        classIterator->reset();
-        while ((checkClass = (OSMetaClass *)classIterator->getNextObject()))
-        {
-            sAllClassesDict->removeObject(checkClass->className);
-        }
-        result = true;
-    }
-    while (false);
-
-    IOLockUnlock(sAllClassesLock);
-    OSSafeReleaseNULL(classIterator);
-
-    return (result);
-}
-
-
-/*********************************************************************
-*********************************************************************/
 const OSMetaClass *
 OSMetaClass::getMetaClassWithName(const OSSymbol * name)
 {
@@ -1008,46 +966,15 @@
 
 /*********************************************************************
 *********************************************************************/
-const OSMetaClass *
-OSMetaClass::copyMetaClassWithName(const OSSymbol * name)
-{
-    const OSMetaClass * meta;
-
-    if (!name) return (0);
-
-    meta = 0;
-    IOLockLock(sAllClassesLock);
-    if (sAllClassesDict) {
-        meta = (OSMetaClass *) sAllClassesDict->getObject(name);
-        if (meta) OSIncrementAtomic(&meta->reserved->retain);
-    }
-    IOLockUnlock(sAllClassesLock);
-
-    return (meta);
-}
-
-/*********************************************************************
-*********************************************************************/
-void
-OSMetaClass::releaseMetaClass() const
-{
-    OSDecrementAtomic(&reserved->retain);
-}
-
-/*********************************************************************
-*********************************************************************/
 OSObject *
 OSMetaClass::allocClassWithName(const OSSymbol * name)
 {
-    const OSMetaClass * meta;
-    OSObject          * result;
-
-    result = 0;
-    meta = copyMetaClassWithName(name);
-    if (meta)
-    {
+    OSObject * result = 0;
+
+    const OSMetaClass * const meta = getMetaClassWithName(name);
+
+    if (meta) {
         result = meta->alloc();
-        meta->releaseMetaClass();
     }
 
     return result;
@@ -1319,7 +1246,7 @@
 {
     IOTracking * mem = (typeof(mem)) instance; mem--;
 
-    return (IOTrackingAdd(reserved->tracking, mem, classSize, false, VM_KERN_MEMORY_NONE));
+    return (IOTrackingAdd(reserved->tracking, mem, classSize, false));
 }
 
 void OSMetaClass::trackedFree(OSObject * instance) const