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