thompson@ELROND.SSEC.HONEYWELL.COM (John Thompson) (12/06/90)
(I was sure I kept the original message....)
A bit ago, people were asking about calls to find out process information.
Someone mentioned that there was extra stuff in proc2_$get_info that is
returned if you're sneaky enough to ask for it. I decided to poke around,
and see what I could see.
Turns out that they're quite right. There's (as I found it) 192 bytes
of information beyond the standard 'proc2_$info_t' type that will be returned
if you pass a large enough structure, and tell Domain/OS that it's that large.
(Anything above 192 (up to 1024) was 0, so I assume there's naught more.)
Here's the extended proc2_$info_t declaration, with everything that I could
tag listed. Note that there are still unknown values. Anyone who can
discover them should feel free to sned that info to me. :-)
It should also go without saying that this is _NOT_ guaranteed to be true,
nor do I or Honeywell support it. HP/Apollo probably won't support it either,
but I won't speak for them.
As people have mentioned, it might be a waste of time to use this stuff,
since HP seems bent on killing Domain/OS.
<flame on>
I DON'T WANT AN HP MACHINE -- I WANT MY APOLLO!!!!!!!!!!!!!!! IF I CAN'T
GET THAT, I MIGHT AS WELL GET A SUN.
<flame off>
============================================================================
typedef
struct {
short int len;
char name[32];
} string_t;
typedef
union {
short int i; /* Just a convenience for unknowns */
pinteger p;
} unknown_t;
typedef
struct {
uid_$t stack_uid; /* uid of user stack */
linteger stack_base; /* base address of user stack */
proc2_$state_t state; /* ready, waiting, etc. */
pinteger usr; /* user sr */
linteger upc; /* user pc */
linteger usp; /* user stack pointer */
linteger usb; /* user sb ptr (A6) */
time_$clock_t cpu_total; /* cumulative cpu used by process */
unsigned short priority; /* process priority */
/* Here are the extensions */
uid_$t person_uid; /* user's UID (not Unix ID) */
uid_$t group_uid; /* user's GID (not Unix ID) */
uid_$t org_uid; /* user's OID (not Unix ID) */
unknown_t unknown1[11]; /* 22 bytes unknown */
/* bytes 9..12 appear to be nodeID */
short int low_pri; /* low priority of process (1..16) */
short int high_pri; /* hi priority of process (1..16) */
long unsigned exec_faults; /* execute faults */
long unsigned data_faults; /* data faults */
long unsigned disk_pageIO; /* disk paging */
long unsigned net_pageIO; /* net paging */
unknown_t unknown2[5]; /* 10 bytes unknown */
short int unix_PID; /* Unix process ID */
short int unix_PPID; /* Unix Process Parent ID */
short int unix_PGID; /* UNix Process Group ID */
unknown_t unknown3[2]; /* 4 bytes unknown */
uid_$t prog_disk_uid; /* file uid of executable object */
string_t progname; /* leafname of invoked program */
string_t procname; /* name of process */
uid_$t unknown_uid; /* in CRP connections, this was */
/* the CRP device -- as such, it */
/* seems related to I/O. Child */
/* processes get the same value. */
/* However, it does NOT appear to */
/* be stdin, stdout, or errout ??? */
short int unknown_int1; /* */
time_$clock_t cpu_time; /* cpu time again. Why???? */
unknown_t unknown4[6]; /* 12 bytes unknown */
short int unknown_int2; /* appears to always be 0x411c ??? */
} big_proc2_$info_t;
============================================================================
-- jt --
John Thompson (jt)
Honeywell, SSEC
Plymouth, MN 55441
thompson@pan.ssec.honeywell.com
As ever, my opinions do not necessarily agree with Honeywell's or reality's.
(Honeywell's do not necessarily agree with mine or reality's, either)