home *** CD-ROM | disk | FTP | other *** search
- Debugging von Deadlock-Situationen unter pOS:
- ---------------------------------------------
-
- /* aus pExec/Types.h */
- enum pOS_DebugSysSemaphorePri
- {
- pOSd_SYSSEM_FirstApp = 109, // erste Pri für Applikationen
- pOSd_SYSSEM_LastApp = 61, // letzte Pri für Applikationen
-
- pOSd_SYSSEM_Unit = 50, // iu_Sem
- pOSd_SYSSEM_Gad = 40, // iu_GadSem
- pOSd_SYSSEM_LInfo = 30, // pOS_LayerInfo
- pOSd_SYSSEM_Layer = 20, // pOS_Layer
- };
-
-
-
- In (enum pOS_DebugSysSemaphorePri) sind die verwendeten bzw.
- verwendbaren Kennungen (ln_Pri) definiert. Nur in Debug-pOS
- wird der Debug-Mechanismus eingesetzt. Bei jedem Zugriff
- auf eine Semaphore wird geprüft, ob die neue Sem. eine
- gleiche oder geringere ln_Pri besitzt. Wird eine höhere
- ln_Pri entdeckt, so deutet dies auf eine Deadlock-Gefahr
- hin. Das pOS ist nur mit geschachtelten Semaphore-Obtains
- einverstanden, die zu einer kleinere ln_Pri streben.
- Z.B.
-
- ObtainSemaphore( pIntui ); => pOSd_SYSSEM_Unit
- ObtainSemaphore( Gad ); => pOSd_SYSSEM_Gad
- ObtainSemaphore( Layer ); => pOSd_SYSSEM_Layer
-
- ObtainSemaphore( LayerInfo ); => pOSd_SYSSEM_LInfo => ERROR
-
-
- Damit nicht alle Semaphoren getestet werden, prüft pOS zuerst die ln_Pri
- auf >0. Alle ln_Pri von null werden ohne Debug bearbeitet.
-
-
-
- ©proDAD
-