home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / piwg / a000013.ada < prev    next >
Encoding:
Text File  |  1988-05-03  |  2.6 KB  |  75 lines

  1. -- This is the Data General MV series computers function
  2. -- to get CPU time in seconds of type DURATION .
  3.  
  4. with SYS_CALLS ; use SYS_CALLS ;
  5. function CPU_TIME_CLOCK return DURATION is
  6.   type MEMORY_DESCRIPTOR is
  7.     record
  8.       UNSHARED_PAGES_IN_PROGRAM_FILE : INTEGER ;
  9.       UNSHARED_PAGES_BEING_USED : INTEGER ;
  10.       SHARED_PAGES_IN_PROGRAM_FILE : INTEGER ;
  11.       FIRST_SHARED_MEMORY_PAGE : INTEGER ;
  12.       STARTING_PAGE : INTEGER ;
  13.       PROGRAMS_FIRST_SHARED_MEMORY_PAGE : INTEGER ;
  14.     end record ;
  15.   type MEMORY_DESCRIPTORS is array ( 1 .. 7 ) of MEMORY_DESCRIPTOR ;
  16.   type PROCESS_STATISTICS is
  17.     record
  18.       FATHER_PID : SHORT_INTEGER ;
  19.       SONS1 : SHORT_INTEGER ;
  20.       SONS2 : SHORT_INTEGER ;
  21.       SONS3 : SHORT_INTEGER ;
  22.       SONS4 : SHORT_INTEGER ;
  23.       SONS5 : SHORT_INTEGER ;
  24.       SONS6 : SHORT_INTEGER ;
  25.       SONS7 : SHORT_INTEGER ;
  26.       SONS8 : SHORT_INTEGER ;
  27.       SONS9 : SHORT_INTEGER ;
  28.       SONS10 : SHORT_INTEGER ;
  29.       SONS11 : SHORT_INTEGER ;
  30.       SONS12 : SHORT_INTEGER ;
  31.       SONS13 : SHORT_INTEGER ;
  32.       SONS14 : SHORT_INTEGER ;
  33.       SONS15 : SHORT_INTEGER ;
  34.       SONS16 : SHORT_INTEGER ;
  35.       TASKS_BLOCKED_ON_IREC : SHORT_INTEGER ;
  36.       TASKS_BLOCKED_AWAITING_STACKS : SHORT_INTEGER ;
  37.       PROCESS_STATUS_WORD : SHORT_INTEGER ;
  38.       PRIORITY_QUEUE_FACTOR : SHORT_INTEGER ;
  39.       FLAG_WORD1 : SHORT_INTEGER ;
  40.       FLAG_WORD2 : SHORT_INTEGER ;
  41.       FLAG_WORD3 : SHORT_INTEGER ;
  42.       FLAG_WORD4 : SHORT_INTEGER ;
  43.       RESERVED : SHORT_INTEGER ;
  44.       PRIORITY : SHORT_INTEGER ;
  45.       WORKING_SET_SIZE : SHORT_INTEGER ;
  46.       PRIVILEGE_BITS : SHORT_INTEGER ;
  47.       TIME_SLICE_EXPONENT : SHORT_INTEGER ;
  48.       PROCESS_ID : SHORT_INTEGER ;
  49.       ELAPSED_TIME : INTEGER ;
  50.       CPU_TIME : INTEGER ;
  51.       IO_USAGE : INTEGER ;
  52.       PAGE_SECONDS : INTEGER ;
  53.       REMAINING_SUBSLICES : SHORT_INTEGER ;
  54.       MAX_LOGICAL_PAGES : SHORT_INTEGER ;
  55.       MAX_WORKING_SET_SIZE : SHORT_INTEGER ;
  56.       MIN_WORKING_SET_SIZE : SHORT_INTEGER ;
  57.       PAGE_FAULT_COUNT : SHORT_INTEGER ;
  58.       MEMORY : MEMORY_DESCRIPTORS ;
  59.       BLOCKS_READ_OR_WRITTEN : INTEGER ;
  60.       FAULTS_NOT_REQUIRING_DISK : INTEGER ;
  61.     end record ;
  62.   PROCESS_INFO : PROCESS_STATISTICS ;
  63.   ACC0 : INTEGER := - 1 ;
  64.   ACCUM1 : INTEGER := 0 ;
  65.   ERROR_INFO : ERROR_CODE ;
  66.   PT_PSTAT : INTEGER ;
  67. begin
  68.   PT_PSTAT := INTEGER ( PROCESS_INFO'ADDRESS ) ;
  69.  
  70. -- This is the call to obtain process statistics
  71.  
  72.   SYS ( PSTAT , ACC0 , ACCUM1 , PT_PSTAT , ERROR_INFO ) ;
  73.   return DURATION ( FLOAT( PROCESS_INFO.CPU_TIME ) / 1000.0) ;
  74. end CPU_TIME_CLOCK ;
  75.