PINFO

Generated from C.70.00 /SYS/PUB/CICAT last modified on Mon Feb 16 17:55:04 2004


Syntax:     PINFO(pinID, item [,status])

Defn:       A CI evaluator function that returns information about
            the specified process or thread.

Type:       String, integer, or Boolean depending upon item.

Parms:

  pinID:    Required.  String or integer identifying the target process.
            Format is: nnn, "[#P]nnn" or "[#P]nnn.tid", where "nnn" is a
            number, and "tid" is an optional thread ID.  Zero or "0"
            indicates the target process is the caller.
  Item:     Required.  String label specifying which information is to
            be returned.
  Status:   Optional. CI variable name where a PINFO error number can be
            returned.  Zero indicates success.  Non-zero indicates a
            failure.  Error values returned in 'status' are the same as
            the CIERROR value when an error occurs.  If the 'status'
            parm is passed the CI will not set CIERROR and will not
            report an error message.  If 'status' is not specified the
            CI performs its normal error handling.

Example:    PINFO('#P78', "alive")
Result:     TRUE
Example:    PINFO( 0, 'QPri')
Result:     C152
Example:    PINFO( 123, 'children')
Result:     8/41 44 56 73 81 92 107 112
Example:    PINFO( PINFO( 0, "parent"), 'procType')
Result:     MAIN    # process type of caller's parent #


PINFO enforces the same security as the SHOWPROC command and the
SHOWCONN utility.  See these commands for the details.

The following table summarizes the items of the PINFO function.  The
description includes the item string, one or more aliases, the data
type, and a brief description of the item.

Item String         Type     * Description
------------        ----    --------------------------------------------
Alive               bool    True if pin is alive (not dead)
Boosted             bool    True if pin's priority has been boosted
BoostReason         string  'NO BOOST','OWNS PRI SEMA','OWNS SIR','LONG
                            SYS TRANS','BREAK','BLOCKED UNPREEMPTABLE',
                            'IPC SERV CONTENTION',LONG USER TRANS',
                            'OWNS PRI SEMA PORT','PRI OSCILLATION'
BoostType           string  'NO BOOST','LINEAR','DECAY'
Child               int     pin of first child process
ChildPin            int     same as 'child'
Children            string  list of all descendant pins, format:
                            'total/pin1 pin2 ... pinN'. Note that
                            truncation is evident when 'total' is >
                            than the number of pins returned, e.g.
                               :setvar x pinfo('123','children')
                               :if wordcnt(x) < ![word(x,'/')] then
                                   # truncation occurred...
ChildrenPins        string  same as 'children'
CMask               int     POSIX cmask for file creation security
CMMode              bool    True if pin is currently in CM
CMProg              bool    True if pin is a CM program (PROG filecode)
CPUMilliSec         int     number of milliseconds of CPU
Creator             int     creator pin, usually the parent pin
CreatorPin          int     same as 'creator'
CriticalDepth       int     > 0 means process is critical and cannot be
                            aborted
EGID                int     POSIX effective group ID
EUID                int     POSIX effective user ID
ExecState           string  execution state: 'BLOCK MEM MGR','BLOCK CB',
                            'BLOCK MSG','READY','BLOCK TERM'
Exist               bool    True if the target pin exists in any state
Exists              bool    same as 'exist'
FmtCPUMilliSec      string  formatted CPU time 'MM:SS.mls' or 'HH:MM:SS'
FmtEGID             string  formatted EGID ('account name')
FmtEUID             string  formatted EUID ('user.account')
FmtGID              string  formatted GID ('account name')
FmtPID              string  MPE internal process ID: 'pin reuse_cnt'
FmtUID              string  formatted UID ('user.account')
FmtWaitMilliSec     string  formatted CPU time 'MM:SS.mls' or 'HH:MM:SS'
GID                 int     POSIX group ID
HasSIR              bool    true if pin owns a SIR
HPEPri              int     internal priority in the range 0..32767; a
                            higher number is greater priority
InBreak             bool    true if pin is in break mode
Info                string  * info= string with all lockwords removed
InfoString          string  same as 'info'
InitThreadPin       int     the PIN of the initial thread, 0 if not a
                            thread
IntProcType         int     process type, 0=user, 1=son, 2=usermain,
                            3=task, 4=system, 5=detach, 6=jsmain
IntWaitReason       int     see 'waitreason' item
IPAddr              string  ** IP address in dotted format (xx.xx.xx.xx)
JobNum              string  job/session ID, '#J|Snnn'
JSMAIN              int     pin of JSMAIN process
JSMAINPin           int     same as 'jsmain'
Linear              bool    true if process priority does not decay
LinearPriority      bool    same as 'linear'
MPECmask            int     internal MPE cmask
MPEPri              int     MPE external priority in the range 0..255; a
                            higher number is less priority
NumFilesOpen        int     number of open files including system files
NumOpenFiles        int     same a 'numopenfiles'
NumPINs             int     number of descendant processes
NumProcesses        int     same as 'numpins'
Parent              int     parent pin
ParentPin           int     same as 'parent'
Parm                int     run/creation parm= value
PendingIOCount      int     total IOs outstanding for pin
PendIOs             int     same as 'pendingiocount'
PIN                 int     pin, useful if target pin is a thread
PriAfterBoost       int     pin priority when boost period is over
ProcState           string  'DYING','DEAD','ALIVE','INITIATE',
                            'UNBORN' -- only 'alive' is expected
ProcType            string  'USER','SON','MAIN','TASK','SYSTEM',
                            'DETACH','JSMAIN'
Program             string  * MPE or POSIX name of program file
ProgramName         string  same as 'program'
PxPID               int     POSIX PID: 16 bit re-use cnt, 16 bit PIN
QPri                string  scheduling queue followed by MPE priority
QueuePriority       string  same as 'qpri'
SchedQ              string  scheduling queue, 'AS','BS,'CS','DS','ES'
SchedQueue          string  same as 'schedq'
SchedState          string  'EXECUTING','READY','SHORT WAIT','LONG WAIT'
SecondaryThreads    string  list of secondary threads in the same format
                            as used by "Children"
Setdump             bool    true if SETDUMP enbabled
Sibling             int     first sibling pin
SiblingPin          int     same as 'sibling'
SystemDepth         int     system code depth, >0 means in system code
ThreadID            int     TIN (thread ID number), 1 for non-threaded
                            processes, > 1 for threaded processes
ThreadType          string  'NONE','INITIAL','SECONDARY'
TIN                 int     same as 'threadid'
UID                 int     POSIX user ID
UnboostPri          int     same as 'priafterboost'
UserAcct            string  'user.account'
UserProcess         bool    true if pin is a user process, process type
                            is 0,1,2
WaitMilliSec        int     time pin has been waiting (need MI)
WaitReason          string  'PAGE FLT NM CODE','PAGE FLT NM STK','PAGE
                            FLT NM TRANSIENT','PAGE FLT FILE','PAGE FLT
                            CM CODE','PAGE FLT CM STK','PAGE FLT CM
                            TRANSIENT' (above 7 require MI),'TERMINAL
                            READ','TERMINAL WRITE','DISC IO','OTHER IO',
                            'IPC TRANS COMPLETE','SIR','RIN','MM
                            PREFETCH','EXPIRED QUANTUM','TIMER','PARENT'
                            'CB','CHILD','DATA COMM','RIT','DISP WORK',
                            'PORT','MAIL','JUNK','MSG','IMPEDE','BREAK',
                            'WAIT QUEUE','MEM MGR','PORT BLOCK','FILE
                            BLOCK','FILE UNBLOCK','STORAGE MGT','DEBUG
                            MSG','IO CONF','PFP REPLY','DBMON','FILL
                            DISC','HILO','FS TERM IO','MM POST','SIG
                            TIMER','PREEMPTION','DISC IO PREMPTION','PRI
                            PREEMPTION','SQL LOCK','SQL LATCH','SQL
                            BUFF','LONG PAUSE','MM FREEEZE','RELEASE',
                            'DEFERRED PREEMPT','MM PSEUDO IO READ','MM
                            PSEUDO IO WRITE','OTHER','NOT WAITING',
                            'DEAD PROCESS'
WG                  string  workgroup name
WorkGroup           string  same as 'wg'


*  indicates further restrictions apply to these items: you must have SM
   capability, or the PIN must be you, or the user.account of the PIN
   must be the same as your user.account and JOBSECURITY is low.
   Otherwise the item is not returned and an error is generated.

** indicates you must have at least one of SM,OP,NA,NM,PM capabilities.