Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

OS2::Proc
Perl extension for get information about running processes and loaded modules.

OS2::Proc - Perl extension for get information about running processes and loaded modules.


NAME

OS2::Proc - Perl extension for get information about running processes and loaded modules.


SYNOPSIS


  use OS2::Proc;

  $p_info = (proc_info($$,1))[0]->[0];

  $p_info->{pid} == $$ or die;

  $t_info = $p_info->{threads}[0];

  $ticks = ($t_info->{usertime}+$t_info->{systime});

  %i = OS2::SysInfo;

  $cpu_time = $ticks*$i{TIMER_INTERVAL}/10000;


DESCRIPTION

This module access internal tables keeping information of OS/2 processes. The corresponding API call was present for a long time, but is documented only around OS/2 v4.5. Since older version are stable now, it should be safe to use this call (with certain limitations) for any version of OS/2.

Keep in mind that due to certain bugs in the OS/2 kernel some calls to this API may kill your system. E.g., it is not safe to get an info about non-existing PID until W3fp18. (The module contains a safeguard against this bug.)

This module allows querying the following data:

$href = global_info()
hash reference with sizes of internal tables for modules, procs, threads.

  print "$_ => $href->{$_}\n" for qw(modules procs threads);

$href_modules = mod_info()
$href_modules indexes modules by their handles, the value being a hash reference with the following fields:

  cnt_static     - No. of modules linked in at compile time

  name           - Full path name (except for SYSINIT/basedevs?)

  segcnt         - ?? Number of segments?

  static_handles - array reference with handles of modules linked

                        at compile time

  static_names   - same with names

  type           - ?? SYSINIT/IFS/DMD/SYS=0, DLL/EXE=1,

($aref_processes, $href_modules) = proc_info(0)
information about all processes and modules on the system. Each entry referenced by $aref_processes is a hash reference with the following fields:

  threads         - Array of hash references with thread information

  pid             - pid

  ppid            - parent pid

  proc_type       - FullScreen/RealMode/VIO/PM/Detached

  type            - 0..4 (see proc_type)

  status_array    - combination of ExitList/ExitingT1/Exiting/

                        NeedsWait/Parent-Waiting/Dying/Embrionic

  state           - combination of flags in 0x01..0x80 (see status_array)

  sessid          - SessionId

  module_name     - full name of the executabale (!)

  module_handle   - module handle of the executable

  threadcnt       - No. of threads

  privsem32cnt    - No. of private 32bit semaphores

  sem16cnt        - No. of 16bit semaphores

  dllcnt          - length

  shrmemcnt       - No. of shared memory segments

  fdscnt          - No. of available file descriptors

  dynamic_names   - reference to array with full names of

                        runtime-loaded modules (!)

  dynamic_handles - same with handles

  static_handles  - array reference with handles of modules linked

                        at compile time (!)

  static_names    - same with names (!)

Each thread-information hash has the following entries


  priority       - absolute priority (?)

  priority_class - Idle-Time/Regular/Time-Critical/Fixed-High

  priority_level - Priority shift inside class (larger is higher)

  sleepid        - ???

  slotid         - "Global" thread id

  state          - 1,2,5 (see thread_state)

  systime        - Cumulative no. of busy ticks spent in syscalls

  thread_state   - Ready/Blocked/Running

  threadid       - Thread Id "in the process"

  usertime       - Cumulative no. of busy ticks spent in user code

Keep in mind that the semantic of priority_class is not monotonic, monotonic is Idle-Time/Regular/Fixed-High/Time-Critical.

The $href_modules is the same as for mod_info().

$aref = proc_info()
same info with processes restricted to the current process, and modules to modules used by the current process.

$aref = proc_info($pid)
same about a given ProcessID.

$aref = proc_info($pid,$flags)
Allows restriction of the information restricted to one about

  processes     - 0x001

  modules       - 0x002

  semaphores    - 0x004

  shared memory - 0x008

  files         - 0x100

and without any parsing. The description above corresponds to $flags==3. Only the combinations of 0x1 and 0x2 are allowed now. If 0x2 is not present, the fields marked with (!) are omited from the process list descriptions.

$href = process_info($pid)
Gives a reference to a hash with process information as above, except for those marked with (!).


AUTHOR

Ilya Zakharevich <ilya@math.ohio-state.edu>


SEE ALSO

perl(1).

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy