Loading...
libkern/c++/OSMetaClass.cpp xnu-12377.101.15 xnu-7195.81.3
--- xnu/xnu-12377.101.15/libkern/c++/OSMetaClass.cpp
+++ xnu/xnu-7195.81.3/libkern/c++/OSMetaClass.cpp
@@ -433,7 +433,7 @@
 {
 public:
 	OSMetaClassMeta();
-	OSObject * alloc() const override;
+	OSObject * alloc() const;
 };
 OSMetaClassMeta::OSMetaClassMeta()
 	: OSMetaClass("OSMetaClass", NULL, sizeof(OSMetaClass))
@@ -580,7 +580,8 @@
 	classSize = inClassSize;
 	superClassLink = inSuperClass;
 
-	reserved = IOMallocType(ExpansionData);
+	reserved = IONew(ExpansionData, 1);
+	bzero(reserved, sizeof(ExpansionData));
 #if IOTRACKING
 	uint32_t numSiteQs = 0;
 	if ((this == &OSSymbol    ::gMetaClass)
@@ -617,22 +618,21 @@
 		// Grow stalled array if neccessary
 		if (sStalled->count >= sStalled->capacity) {
 			OSMetaClass **oldStalled = sStalled->classes;
-			int oldCount = sStalled->capacity;
-			int newCount = oldCount + kKModCapacityIncrement;
-
-			sStalled->classes = kalloc_type_tag(OSMetaClass *, newCount,
-			    Z_WAITOK_ZERO, VM_KERN_MEMORY_OSKEXT);
+			int oldSize = sStalled->capacity * sizeof(OSMetaClass *);
+			int newSize = oldSize
+			    + kKModCapacityIncrement * sizeof(OSMetaClass *);
+
+			sStalled->classes = (OSMetaClass **)kalloc_tag(newSize, VM_KERN_MEMORY_OSKEXT);
 			if (!sStalled->classes) {
 				sStalled->classes = oldStalled;
 				sStalled->result = kOSMetaClassNoTempData;
 				return;
 			}
 
-			sStalled->capacity = newCount;
-			memmove(sStalled->classes, oldStalled,
-			    sizeof(OSMetaClass *) * oldCount);
-			kfree_type(OSMetaClass *, oldCount, oldStalled);
-			OSMETA_ACCUMSIZE(sizeof(OSMetaClass *) * (newCount - oldCount));
+			sStalled->capacity += kKModCapacityIncrement;
+			memmove(sStalled->classes, oldStalled, oldSize);
+			kfree(oldStalled, oldSize);
+			OSMETA_ACCUMSIZE(((size_t)newSize) - ((size_t)oldSize));
 		}
 
 		sStalled->classes[sStalled->count++] = this;
@@ -713,7 +713,7 @@
 #if IOTRACKING
 	IOTrackingQueueFree(reserved->tracking);
 #endif
-	IOFreeType(reserved, ExpansionData);
+	IODelete(reserved, ExpansionData, 1);
 }
 
 /*********************************************************************
@@ -782,21 +782,23 @@
 	IOLockLock(sStalledClassesLock);
 
 	assert(sStalled == NULL);
-	sStalled = kalloc_type(StalledData, Z_WAITOK_ZERO_NOFAIL);
-
-	sStalled->classes = kalloc_type_tag(OSMetaClass *,
-	    kKModCapacityIncrement, Z_WAITOK_ZERO, VM_KERN_MEMORY_OSKEXT);
-	if (!sStalled->classes) {
-		kfree_type(StalledData, sStalled);
-		return NULL;
-	}
-	OSMETA_ACCUMSIZE((kKModCapacityIncrement * sizeof(OSMetaClass *)) +
-	    sizeof(*sStalled));
-
-	sStalled->result   = kOSReturnSuccess;
-	sStalled->capacity = kKModCapacityIncrement;
-	sStalled->count    = 0;
-	sStalled->kextIdentifier = kextIdentifier;
+	sStalled = (StalledData *)kalloc_tag(sizeof(*sStalled), VM_KERN_MEMORY_OSKEXT);
+	if (sStalled) {
+		sStalled->classes = (OSMetaClass **)
+		    kalloc_tag(kKModCapacityIncrement * sizeof(OSMetaClass *), VM_KERN_MEMORY_OSKEXT);
+		if (!sStalled->classes) {
+			kfree(sStalled, sizeof(*sStalled));
+			return NULL;
+		}
+		OSMETA_ACCUMSIZE((kKModCapacityIncrement * sizeof(OSMetaClass *)) +
+		    sizeof(*sStalled));
+
+		sStalled->result   = kOSReturnSuccess;
+		sStalled->capacity = kKModCapacityIncrement;
+		sStalled->count    = 0;
+		sStalled->kextIdentifier = kextIdentifier;
+		bzero(sStalled->classes, kKModCapacityIncrement * sizeof(OSMetaClass *));
+	}
 
 	// keep sStalledClassesLock locked until postModLoad
 
@@ -968,8 +970,8 @@
 	if (sStalled) {
 	        OSMETA_ACCUMSIZE(-(sStalled->capacity * sizeof(OSMetaClass *) +
 	            sizeof(*sStalled)));
-	        kfree_type(OSMetaClass *, sStalled->capacity, sStalled->classes);
-	        kfree_type(StalledData, sStalled);
+	        kfree(sStalled->classes, sStalled->capacity * sizeof(OSMetaClass *));
+	        kfree(sStalled, sizeof(*sStalled));
 	        sStalled = NULL;
 	}
 
@@ -1105,7 +1107,7 @@
 
         maxDepth = sDeepestClass;
         if (maxDepth > kLocalDepth) {
-                nextIndex = IONewData(typeof(nextIndex[0]), maxDepth);
+                nextIndex = IONew(typeof(nextIndex[0]), maxDepth);
                 sets      = IONew(typeof(sets[0]), maxDepth);
 	}
         done = false;
@@ -1137,7 +1139,7 @@
 		}
 	}while (!done);
         if (maxDepth > kLocalDepth) {
-                IODeleteData(nextIndex, typeof(nextIndex[0]), maxDepth);
+                IODelete(nextIndex, typeof(nextIndex[0]), maxDepth);
                 IODelete(sets, typeof(sets[0]), maxDepth);
 	}
 }
@@ -1478,7 +1480,7 @@
 OSDictionary *
 OSMetaClass::getClassDictionary()
 {
-        panic("OSMetaClass::getClassDictionary() is obsoleted.");
+        panic("OSMetaClass::getClassDictionary() is obsoleted.\n");
         return NULL;
 }
 
@@ -1487,7 +1489,7 @@
 bool
 OSMetaClass::serialize(__unused OSSerialize * s) const
 {
-        panic("OSMetaClass::serialize(): Obsoleted");
+        panic("OSMetaClass::serialize(): Obsoleted\n");
         return false;
 }
 
@@ -1545,15 +1547,12 @@
 
 #if IOTRACKING
 
-__typed_allocators_ignore_push
-
 void *
 OSMetaClass::trackedNew(size_t size)
 {
         IOTracking * mem;
 
-        mem = (typeof(mem))kheap_alloc(KHEAP_DEFAULT, size + sizeof(IOTracking),
-            Z_VM_TAG_BT(Z_WAITOK, VM_KERN_MEMORY_LIBKERN));
+        mem = (typeof(mem))kalloc_tag_bt(size + sizeof(IOTracking), VM_KERN_MEMORY_LIBKERN);
         assert(mem);
         if (!mem) {
                 return mem;
@@ -1572,11 +1571,9 @@
 {
         IOTracking * mem = (typeof(mem))instance; mem--;
 
-        kheap_free(KHEAP_DEFAULT, mem, size + sizeof(IOTracking));
+        kfree(mem, size + sizeof(IOTracking));
         OSIVAR_ACCUMSIZE(-size);
 }
-
-__typed_allocators_ignore_pop
 
 void
 OSMetaClass::trackedInstance(OSObject * instance) const