home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / sysba021.zip / SRC.ZIP / sysbar2 / Piper / cpuload / out.msg / cpuload.RAR / cpuload.cpp < prev    next >
C/C++ Source or Header  |  1997-09-05  |  1KB  |  62 lines

  1. /*
  2. ** Module   :CPULOAD.CPP
  3. ** Abstract :Main routine for text-mode CPU usage meter.
  4. **
  5. ** Copyright (C) Sergey I. Yevtushenko
  6. ** Log: Fri  05/09/97   Last cleanup before sending it.
  7. */
  8.  
  9. #define INCL_BASE
  10. #define INCL_MODULEMGR
  11. #define INCL_DOSPROCESS
  12. #define INCL_DOSEXCEPTIONS
  13. #define INCL_ERRORS
  14. #include <os2.h>
  15. #include <pscoll.h>
  16. #include <stdio.h>
  17.  
  18. ULONG APIENTRY BugHandler(PEXCEPTIONREPORTRECORD p1,
  19.                           PEXCEPTIONREGISTRATIONRECORD p2,
  20.                           PCONTEXTRECORD p3,
  21.                           PVOID pv);
  22.  
  23. main()
  24. {
  25.     EXCEPTIONREGISTRATIONRECORD RegRec = { 0 };
  26.     APIRET rc = NO_ERROR;
  27.  
  28.     RegRec.ExceptionHandler = (ERR) BugHandler;
  29.     rc = DosSetExceptionHandler(&RegRec);
  30.     if (rc != NO_ERROR)
  31.     {
  32.         printf("DosSetExceptionHandler error: return code = %u\n", rc);
  33.         return 1;
  34.     }
  35.  
  36.     ProcessCollection pcList;
  37.  
  38.     for (;;)
  39.     {
  40.         printf("\x1B[H\x1B[K");
  41.         pcList.CollectData();
  42.         pcList.Print();
  43.         DosSleep(2000);
  44.     }
  45.  
  46. }
  47.  
  48. ULONG APIENTRY BugHandler(PEXCEPTIONREPORTRECORD p1,
  49.                           PEXCEPTIONREGISTRATIONRECORD p2,
  50.                           PCONTEXTRECORD p3,
  51.                           PVOID pv)
  52. {
  53.     if(   p1->ExceptionNum     == XCPT_ACCESS_VIOLATION
  54.        && p1->ExceptionInfo[1] == 0xFFFFFFFF
  55.        && p1->ExceptionInfo[0] == 0)
  56.     {
  57.             return XCPT_CONTINUE_EXECUTION;
  58.     }
  59.     return XCPT_CONTINUE_SEARCH;
  60. }
  61.  
  62.