home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / d / desklib / !DeskSrc / FN / Libraries / BackTrace / c / GetDepth < prev    next >
Encoding:
Text File  |  1996-08-19  |  753 b   |  33 lines

  1. #include "kernel.h"
  2.  
  3. #include "Desk.BackTrace.h"
  4.  
  5. #include "Defs.h"
  6.  
  7.  
  8. int    Desk_BackTrace_GetNestingDepth( void)
  9.     {
  10.     _kernel_unwindblock    frame;
  11.     char            *language;
  12.     int            depth;
  13.     
  14.     for    (
  15.         Desk_BackTrace_SupportCurrentFrame( &frame), depth=0;
  16.         _kernel_unwind( &frame, &language) > 0;
  17.         depth++
  18.         )
  19.         {
  20.         /*
  21.         Have to calculate save_code_pointer - if NULL, we have reached end of 
  22.         stack. _kernel_unwind doesn't return <=0 sometimes when using CMHG.
  23.          */
  24.         unsigned int        *Desk_save_code_pointer;
  25.         unsigned int        *fp;
  26.         
  27.         fp            = (unsigned int*)    (frame.fp & PCMask);    if ( fp==NULL)                break;
  28.         Desk_save_code_pointer    = (unsigned int*)    (*fp & PCMask);        if ( Desk_save_code_pointer==NULL)    break;
  29.         }
  30.     
  31.     return depth-1;    /* don't include this function    */
  32.     }
  33.