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)