Exemplo n.º 1
0
OSReturn
OSMetaClass::postModLoad(void * loadHandle)
{
	sAllClassesDict = OSDictionary::withCapacity(INIT_POOL_SIZE);
	
	assert(sAllClassesDict);
	printk("libkern_init0: class dict = %p\n", sAllClassesDict);
	
	printk("libkern_init0: initializing pool classes ...\n");
	for (int i = 0; i < classInitPoolCount; i++)
	{
		OSMetaClass* pclass = classInitPool[i];
		void** vt = (void**)pclass;
		
		printk("libkern_init0: [%d/%d] %s, vt %p\n", i, classInitPoolCount-1, pclass->className, vt[0]);
		
		pclass->taggedRetain();
		
		/* fixup name */
		pclass->className = OSSymbol::withCStringNoCopy((const char*)pclass->className);
		printk("\t * fixed class name (%p)\n", pclass->className);
		
		sAllClassesDict->setObject(pclass->className, pclass);
		printk("\t * inserted into class table\n");
	}
	
	return 0;
}