Changeset 2869 for trunk/kLdr/kLdrDyldMod.c
- Timestamp:
- Nov 12, 2006, 3:47:25 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrDyldMod.c
r2868 r2869 567 567 uint32_t i; 568 568 569 KLDRDYLDMOD_ASSERT(pMod->papPrereqs );569 KLDRDYLDMOD_ASSERT(pMod->papPrereqs || !pMod->cPrereqs); 570 570 571 571 /* … … 584 584 pMod2->cDepRefs--; 585 585 pMod2->cRefs--; 586 cToUnload += !pMod2->c Refs;586 cToUnload += !pMod2->cDepRefs && !pMod2->cDynRefs; 587 587 } 588 588 } … … 661 661 for (pMod = kLdrDyldHead; pMod; pMod = pMod->Load.pNext) 662 662 { 663 if ( pMod->cRefs 663 if ( pMod->cDepRefs 664 || pMod->cDynRefs 664 665 || pMod->enmState >= KLDRSTATE_PENDING_TERMINATION 665 666 || pMod->enmState < KLDRSTATE_LOADED_PREREQUISITES) … … 760 761 761 762 /* sanity */ 762 KLDRDYLDMOD_ASSERT(pMod->cRefs > 0);763 763 KLDRDYLDMOD_ASSERT(pMod->enmState == KLDRSTATE_OPEN); 764 764 KLDRDYLDMOD_ASSERT(!pMod->fMapped); … … 1003 1003 int rc; 1004 1004 1005 KLDRDYLDMOD_ASSERT(pMod->enmState == KLDRSTATE_INITIALIZING); 1006 1005 KLDRDYLDMOD_ASSERT(pMod->enmState == KLDRSTATE_PENDING_INITIALIZATION); 1006 1007 pMod->enmState = KLDRSTATE_INITIALIZING; 1007 1008 rc = kLdrModCallInit(pMod->pMod, (uintptr_t)pMod->hMod); 1008 1009 if (!rc) 1010 { 1009 1011 pMod->enmState = KLDRSTATE_GOOD; 1012 /* push it onto the termination list.*/ 1013 pMod->InitTerm.pPrev = NULL; 1014 pMod->InitTerm.pNext = g_pkLdrDyldTermHead; 1015 if (g_pkLdrDyldTermHead) 1016 g_pkLdrDyldTermHead->InitTerm.pPrev = pMod; 1017 else 1018 g_pkLdrDyldTermTail = pMod; 1019 g_pkLdrDyldTermHead = pMod; 1020 } 1010 1021 else 1011 1022 pMod->enmState = KLDRSTATE_INITIALIZATION_FAILED; … … 1024 1035 void kldrDyldModCallTerm(PKLDRDYLDMOD pMod) 1025 1036 { 1026 KLDRDYLDMOD_ASSERT(pMod->enmState == KLDRSTATE_TERMINATING); 1027 1037 KLDRDYLDMOD_ASSERT(pMod->enmState == KLDRSTATE_PENDING_TERMINATION); 1038 1039 pMod->enmState = KLDRSTATE_TERMINATING; 1028 1040 kLdrModCallTerm(pMod->pMod, (uintptr_t)pMod->hMod); 1029 1041 pMod->enmState = KLDRSTATE_PENDING_GC; 1042 /* unlinking on destruction. */ 1030 1043 } 1031 1044
Note:
See TracChangeset
for help on using the changeset viewer.