[comp.unix.internals] How to access U area from proc table

kunkee@ficc.ferranti.com (randy kunkee) (06/15/91)

I have Intel Xenix 3.5, which is basically a modified system III kernal
running on 80286 mode.

I'm trying to write a program which will allow me to access the u area
for every process running on the system, but there seems to be some
magic going on.

I expected the ADDR field of ps -l to point directly to the U area, but
it does not.  Apparently it points to a 7 to 9 byte structure which
then points to the U area.  This is small structure is what is referenced
by proc.p_caddr.

Can anybody tell me how to convert this into the actual address of the
U area?  Then, can you tell me how to convert that into an offset in
/dev/mem?
-- 
Randy Kunkee
Ferranti International Controls Corporation
12808 W. Airport Blvd.  Sugar Land, TX 77478
UUCP: uupsi!ficc!kunkee       ph: (713) 274-5132
INTERNET: kunkee@ficc.ferranti.com

curt@cynic.wimsey.bc.ca (Curt Sampson) (06/15/91)

In article <8D-B4F1@xds13.ferranti.com>
  kunkee@ficc.ferranti.com (randy kunkee) writes:

> I expected the ADDR field of ps -l to point directly to the U area, but
> it does not.  Apparently it points to a 7 to 9 byte structure which
> then points to the U area.  This is small structure is what is referenced
> by proc.p_caddr.

It's probably a little trickier than that, actually.  My device driver
handbook that came with my 286 SCO Xenix indicates that a u_area can
be swapped out (specifically, it warns against interupt routines
attempting to modify the u_area of any process).

cjs
-- 
                        | "This sound system comes to you with fuel injection.
Curt Sampson            |  Toes tapping, the unthinking masses dance to a new
curt@cynic.uucp         |  tune. . . . Undress yourself to this bastard.  Suck
curt@cynic.wimsey.bc.ca |  on this plan of noise, bimbo!"       --Gary Clail