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
