[BACK]Return to unix_resource_usage.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / System

Annotation of OpenXM_contrib/PHC/Ada/System/unix_resource_usage.ads, Revision 1.1.1.1

1.1       maekawa     1: with System;
                      2:
                      3: package Unix_Resource_Usage is
                      4:
                      5:   type Process_Times is private;
                      6:
                      7:   type times_enum is (self, children);
                      8:
                      9:   type page_seconds is new integer;
                     10:
                     11:   --   expressed in units of pages * clock ticks (1 tick = 1/50 second).
                     12:   --   The value is calculated by summing the number of shared memory
                     13:   --   pages in use each time the internal system clock ticks, and then
                     14:   --   averaging over 1 second intervals.
                     15:
                     16:   function Get_Process_Times ( who : times_enum := self ) return Process_Times;
                     17:
                     18:   function Total_Time_of ( times: in Process_Times ) return duration;
                     19:
                     20:   function User_CPU_Time_Of ( times: in Process_Times ) return duration;
                     21:
                     22:   function System_CPU_Time_Of ( times: in Process_Times ) return duration;
                     23:
                     24:   function Max_Resident_Set_Size_of ( times: in Process_Times ) return natural;
                     25:
                     26:   function Shared_Pages_Value_of ( times: in Process_Times )
                     27:                                  return page_seconds;
                     28:
                     29:   -- DESCRIPTION :
                     30:   --   returns the amount of memory used by the text segment which was
                     31:   --   also shared among other processes.
                     32:
                     33:   function Unshared_Data_Pages_Value_of ( times: in Process_Times )
                     34:                                         return page_seconds;
                     35:
                     36:   -- DESCRIPTION :
                     37:   --   returns the amount of unshared memory residing in the data segment
                     38:   --   of the process.
                     39:
                     40:   function Stack_Pages_Value_of ( times: in Process_Times ) return page_seconds;
                     41:
                     42:   -- DESCRIPTION :
                     43:   --   returns the amount of unshared memory residing in the stack segment
                     44:   --   of the process
                     45:
                     46:   function Non_IO_Page_Faults_of ( times: in Process_Times ) return natural;
                     47:
                     48:   -- DESCRIPTION :
                     49:   --   returns the number of page faults serviced without any I/O activity;
                     50:   --   here I/O activity is avoided by "reclaiming" a page frame from the
                     51:   --   list of pages awaiting reallocation.
                     52:
                     53:   function IO_Page_Faults_of ( times: in Process_Times ) return natural;
                     54:
                     55:   -- DESCRIPTION :
                     56:   --   returns the number of page faults serviced which required I/O activity.
                     57:
                     58:   function Swaps_of ( times : in Process_Times ) return natural;
                     59:
                     60:   -- DESCRIPTION :
                     61:   --   returns the number of times the process was swapped out of main memory.
                     62:
                     63:   function Input_Blocks_of ( times : in Process_Times ) return natural;
                     64:
                     65:   -- DESCRIPTION :
                     66:   --   returns the number of times the file system had to perform input.
                     67:
                     68:   function Output_Blocks_of ( times : in Process_Times ) return natural;
                     69:
                     70:   -- DESCRIPTION :
                     71:   --   returns the number of times the file system had to perform output.
                     72:
                     73:   function Socket_Messages_Sent_of ( times : in Process_Times ) return natural;
                     74:
                     75:   -- DESCRIPTION :
                     76:   --   returns the number of messages sent over sockets.
                     77:
                     78:   function Socket_Messages_Received_of ( times : in Process_Times )
                     79:                                        return natural;
                     80:   -- DESCRIPTION :
                     81:   --   returns the number of messages received over sockets.
                     82:
                     83:   function Signals_Delivered_of ( times : in Process_Times ) return natural;
                     84:
                     85:   -- DESCRIPTION :
                     86:   --   returns the number of signals delivered.
                     87:
                     88:   function Voluntary_Context_Switches_of ( times: in Process_Times )
                     89:                                          return natural;
                     90:   -- DESCRIPTION :
                     91:   --   returns the number of times a context switch resulted due to a process
                     92:   --   voluntarily giving up the processor before its time slice was completed
                     93:   --   (usually to await availability of a resource).
                     94:
                     95:   function Involuntary_Context_Switches_of ( times: in Process_Times )
                     96:                                            return natural;
                     97:   -- DESCRIPTION :
                     98:   --   returns the number of times a context switch resulted due to a
                     99:   --   higher priority process becoming runnable or because the current
                    100:   --   process exceeded its time slice.
                    101:
                    102: private
                    103:
                    104:   type timeval is record
                    105:     tv_sec : integer;        -- Ada integer is C/SunOS long
                    106:     tv_usec : integer;       -- Ada integer is C/SunOS long
                    107:   end record;
                    108:
                    109:   type rusage is record
                    110:     ru_utime : timeval;
                    111:     ru_stime : timeval;
                    112:     ru_maxrss : integer;
                    113:     ru_ixrss : integer;    -- integral shared text memory size
                    114:     ru_idrss : integer;    -- integral unshared data size
                    115:     ru_isrss : integer;    -- integral unshared stack size
                    116:     ru_minflt : integer;   -- page reclaims
                    117:     ru_majflt : integer;   -- page faults
                    118:     ru_nswap : integer;    -- swaps
                    119:     ru_inblock : integer;  -- block input operations
                    120:     ru_outblock : integer; -- block output operations
                    121:     ru_msgsnd : integer;   -- messages sent
                    122:     ru_msgrcv : integer;   -- messages received
                    123:     ru_nsignals : integer; -- signals received
                    124:     ru_nvcsw : integer;    -- voluntary context switches
                    125:     ru_nivcsw : integer;   -- involuntary context switches
                    126:   end record;
                    127:
                    128:   type process_times is new rusage;
                    129:
                    130:   pragma inline (get_process_times, total_time_of, user_cpu_time_of,
                    131:                  system_cpu_time_of, max_resident_set_size_of,
                    132:                  shared_pages_value_of, unshared_data_pages_value_of,
                    133:                  stack_pages_value_of, non_io_page_faults_of,
                    134:                  io_page_faults_of, swaps_of, input_blocks_of,
                    135:                  output_blocks_of, socket_messages_sent_of,
                    136:                  socket_messages_received_of, signals_delivered_of,
                    137:                  voluntary_context_switches_of,
                    138:                  involuntary_context_switches_of);
                    139:
                    140: end Unix_Resource_Usage;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>