[comp.sys.sgi] Virtual Memory access

jit@SLIC.CELLBIO.DUKE.EDU (Jit Keong Tan) (06/05/91)

Is there a system call similar to the kvm_getu on SUN ?
Man page on SUN follows:

KVM_GETU(3K)       KERNEL VM LIBRARY FUNCTIONS       KVM_GETU(3K)

NAME
     kvm_getu, kvm_getcmd - get the u-area  or  invocation  argu-
     ments for a process

SYNOPSIS
     #include <kvm.h>
     #include <sys/param.h>
     #include <sys/user.h>
     #include <sys/proc.h>

     struct user *kvm_getu(kd, proc)
     kvm_t *kd;
     struct proc *proc;

     int kvm_getcmd(kd, proc, u, arg, env)
     kvm_t *kd;
     struct proc *proc;
     struct user *u;
     char ***arg;
     char ***env;

DESCRIPTION
     kvm_getu() reads the u-area of the process specified by proc
     to  an area of static storage associated with kd and returns
     a pointer  to  it.   Subsequent  calls  to  kvm_getu()  will
     overwrite this static area.

     kd  is  a  pointer  to  a  kernel  identifier  returned   by
     kvm_open(3K).   proc  is a pointer to a copy (in the current
     process' address space) of a proc structure  (obtained,  for
     instance,  by  a  prior  kvm_nextproc(3K)  call).  As a side
     effect, kvm_getu() sets the address space  used  to  resolve
     user  addresses  in  subsequent  kvm_read()  and kvm_write()
     calls to be the space belonging to proc.

     kvm_getcmd() constructs  a  list  of  string  pointers  that
     represent  the  command  arguments and environment that were
     used to initiate the process specified by proc.

     kd  is  a  pointer  to  a  kernel  identifier  returned   by
     kvm_open(3K).  u is a pointer to a copy (in the current pro-
     cess' address space) of  a  user  structure  (obtained,  for
     instance,  by a prior kvm_getu() call).  If arg is not NULL,
     then the command line arguments  are  formed  into  a  null-
     terminated  array  of  string  pointers.  The address of the
     first such pointer is returned in arg.  If env is not  NULL,
     then  the environment is formed into a null-terminated array
     of string pointers.  The address of the first  of  these  is
     returned in env.

     The pointers returned in arg and env refer to data allocated
     by  malloc(3V)  and  should be freed (by a call to free (see

Sun Release 4.1     Last change: 1 July 1990                    1

KVM_GETU(3K)       KERNEL VM LIBRARY FUNCTIONS       KVM_GETU(3K)

     malloc(3V)) when no longer needed.  Both the string pointers
     and the strings themselves are deallocated when freed.

     Since the environment and command line  arguments  may  have
     been  modified  by  the  user process, there is no guarantee
     that it will be possible to reconstruct the original command
     at  all.  Thus, kvm_getcmd() will make the best attempt pos-
     sible, returning -1 if the user process data is  unrecogniz-
     able.


Thanks in advance.

--------------------------------------------------------
Jit Keong Tan     | internet: jit@slic.cellbio.duke.edu
(919) 684-8098    | bitnet  : tan00001@dukemc.bitnet
--------------------------------------------------------
U.S. Mail:
Duke University Medical Center
Department Of Cell Biology
Box 3709
Nanaline Duke Bldg, Rm. 349
Durham, NC 27710