home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / taman002.zip / TASKMANA.ZIP / src / kThreadRecord.cpp < prev    next >
C/C++ Source or Header  |  2000-04-29  |  4KB  |  172 lines

  1. /* $Id: kThreadRecord.cpp,v 1.1 2000/04/29 19:06:35 stknut Exp $
  2.  *
  3.  * kThreadRecord - Thread container record.
  4.  *
  5.  * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  6.  *
  7.  */
  8. /*******************************************************************************
  9. *   Defined Constants And Macros                                               *
  10. *******************************************************************************/
  11. #define INCL_WIN
  12. #define INCL_DOS
  13.  
  14. /*******************************************************************************
  15. *   Internal Functions                                                         *
  16. *******************************************************************************/
  17. #include <os2.h>
  18. #ifdef USE_KLIB
  19.     #include <kAssert.h>
  20.     #include <kLog.h>
  21.     #include <kHeap.h>
  22. #endif
  23. #include <stddef.h>
  24. #include <stdio.h>
  25. #include <string.h>
  26. #include "kBase.h"
  27. #include "kError.h"
  28. #include "kContainer.h"
  29. #include "kQuerySysState.h"
  30. #include "kThreadRecord.h"
  31.  
  32. /*******************************************************************************
  33. *   Global Variables                                                           *
  34. *******************************************************************************/
  35. const FIELDINFO kThreadRecord::aFieldInfo[] =
  36. {
  37.    {
  38.       sizeof(FIELDINFO),
  39.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR | CFA_RIGHT,
  40.       CFA_STRING,
  41.       (PVOID)"Tid",
  42.       offsetof(kThreadRecord, pszTid),
  43.       NULL,
  44.       NULL,
  45.       0L
  46.    }
  47.    ,
  48.    {
  49.       sizeof(FIELDINFO),
  50.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  51.       CFA_STRING,
  52.       (PVOID)"Slot",
  53.       offsetof(kThreadRecord, pszSlot),
  54.       NULL,
  55.       NULL,
  56.       0L
  57.    }
  58.    ,
  59.    {
  60.       sizeof(FIELDINFO),
  61.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  62.       CFA_STRING,
  63.       (PVOID)"SleepId",
  64.       offsetof(kThreadRecord, pszSleepId),
  65.       NULL,
  66.       NULL,
  67.       0L
  68.    }
  69.    ,
  70.    {
  71.       sizeof(FIELDINFO),
  72.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  73.       CFA_STRING,
  74.       (PVOID)"Priority",
  75.       offsetof(kThreadRecord, pszPriority),
  76.       NULL,
  77.       NULL,
  78.       0L
  79.    }
  80.    ,
  81.    {
  82.       sizeof(FIELDINFO),
  83.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  84.       CFA_STRING,
  85.       (PVOID)"State",
  86.       offsetof(kThreadRecord, pszState),
  87.       NULL,
  88.       NULL,
  89.       0L
  90.    }
  91.    ,
  92.    {
  93.       sizeof(FIELDINFO),
  94.       CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR,
  95.       CFA_STRING,
  96.       (PVOID)"Systime",
  97.       offsetof(kThreadRecord, pszSysTime),
  98.       NULL,
  99.       NULL,
  100.       0L
  101.    }
  102.    ,
  103.    {
  104.       sizeof(FIELDINFO),
  105.       CFA_STRING | CFA_HORZSEPARATOR,
  106.       CFA_STRING,
  107.       (PVOID)"Usertime",
  108.       offsetof(kThreadRecord, pszUserTime),
  109.       NULL,
  110.       NULL,
  111.       0L
  112.    }
  113. };
  114.  
  115. const unsigned  kThreadRecord::cFieldInfo = 7;
  116.  
  117. /**
  118.  * Initiates the struct. (zero fields some field)
  119.  * @author    knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  120.  */
  121. VOID  kThreadRecord::init()
  122. {
  123.     usTid       = (USHORT)~0;
  124.     usSlot      = (USHORT)~0;
  125.     pszTid      = &szTid[0];
  126.     pszSlot     = &szSlot[0];
  127.     pszSleepId  = &szSleepId[0];
  128.     pszPriority = &szPriority[0];
  129.     pszUserTime = &szUserTime[0];
  130.     pszSysTime  = &szSysTime[0];
  131.     pszState    = &szState[0];
  132. }
  133.  
  134.  
  135. /**
  136.  * Set record information according to the passed in pThreadRec struct.
  137.  * This is also used to update data.
  138.  * @param     pThreadRec    Thread information from QS.
  139.  * @author    knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
  140.  * @remark
  141.  */
  142. VOID  kThreadRecord::set(qsTrec_t *pThreadRec)
  143. {
  144.     ULONG   ulTime;
  145.  
  146.     /*
  147.      * Set and format
  148.      */
  149.     sprintf(szTid,      "%04x", pThreadRec->tid);
  150.     sprintf(szSlot,     "%04x", pThreadRec->slot);
  151.     sprintf(szSleepId,  "%08x", pThreadRec->sleepid);
  152.     sprintf(szPriority, "%08x", pThreadRec->priority);
  153.     sprintf(szState,    "%08x", pThreadRec->state);
  154.  
  155.     ulTime = pThreadRec->systime * 32;
  156.     sprintf(szSysTime,  "%02d:%02d:%02d,%03d",
  157.             (ulTime / 3600000),
  158.             (ulTime / 60000) % 60,
  159.             (ulTime / 1000) % 60,
  160.              ulTime % 1000);
  161.  
  162.     ulTime = pThreadRec->usertime * 32;
  163.     sprintf(szUserTime,  "%02d:%02d:%02d,%03d",
  164.             (ulTime / 3600000),
  165.             (ulTime / 60000) % 60,
  166.             (ulTime / 1000) % 60,
  167.              ulTime % 1000);
  168. }
  169.  
  170.  
  171.  
  172.