Diff for /src/lib/libkvm/kvm_proc.c between versions 1.5 and 1.6

version 1.5, 2004/02/03 07:34:10 version 1.6, 2004/04/11 21:28:03
Line 75 Line 75
   
 #if used  #if used
 static char *  static char *
 kvm_readswap(kd, p, va, cnt)  kvm_readswap(kvm_t *kd, const struct proc *p, u_long va, u_long *cnt)
         kvm_t *kd;  
         const struct proc *p;  
         u_long va;  
         u_long *cnt;  
 {  {
 #if defined(__FreeBSD__) || defined(__DragonFly__)  #if defined(__FreeBSD__) || defined(__DragonFly__)
         /* XXX Stubbed out, our vm system is differnet */          /* XXX Stubbed out, our vm system is differnet */
Line 97  kvm_readswap(kd, p, va, cnt) Line 93  kvm_readswap(kd, p, va, cnt)
  * at most maxcnt procs.   * at most maxcnt procs.
  */   */
 static int  static int
 kvm_proclist(kd, what, arg, p, bp, maxcnt)  kvm_proclist(kvm_t *kd, int what, int arg, struct proc *p,
         kvm_t *kd;               struct kinfo_proc *bp, int maxcnt)
         int what, arg;  
         struct proc *p;  
         struct kinfo_proc *bp;  
         int maxcnt;  
 {  {
         register int cnt = 0;          int cnt = 0;
         struct eproc eproc;          struct eproc eproc;
         struct pgrp pgrp;          struct pgrp pgrp;
         struct session sess;          struct session sess;
Line 248  kvm_proclist(kd, what, arg, p, bp, maxcn Line 240  kvm_proclist(kd, what, arg, p, bp, maxcn
  * Return number of procs read.  maxcnt is the max we will read.   * Return number of procs read.  maxcnt is the max we will read.
  */   */
 static int  static int
 kvm_deadprocs(kd, what, arg, a_allproc, a_zombproc, maxcnt)  kvm_deadprocs(kvm_t *kd, int what, int arg, u_long a_allproc,
         kvm_t *kd;                u_long a_zombproc, int maxcnt)
         int what, arg;  
         u_long a_allproc;  
         u_long a_zombproc;  
         int maxcnt;  
 {  {
         register struct kinfo_proc *bp = kd->procbase;          struct kinfo_proc *bp = kd->procbase;
         register int acnt, zcnt;          int acnt, zcnt;
         struct proc *p;          struct proc *p;
   
         if (KREAD(kd, a_allproc, &p)) {          if (KREAD(kd, a_allproc, &p)) {
Line 279  kvm_deadprocs(kd, what, arg, a_allproc, Line 267  kvm_deadprocs(kd, what, arg, a_allproc,
 }  }
   
 struct kinfo_proc *  struct kinfo_proc *
 kvm_getprocs(kd, op, arg, cnt)  kvm_getprocs(kvm_t *kd, int op, int arg, int *cnt)
         kvm_t *kd;  
         int op, arg;  
         int *cnt;  
 {  {
         int mib[4], st, nprocs;          int mib[4], st, nprocs;
         size_t size;          size_t size;
Line 362  kvm_getprocs(kd, op, arg, cnt) Line 347  kvm_getprocs(kd, op, arg, cnt)
 }  }
   
 void  void
 _kvm_freeprocs(kd)  _kvm_freeprocs(kvm_t *kd)
         kvm_t *kd;  
 {  {
         if (kd->procbase) {          if (kd->procbase) {
                 free(kd->procbase);                  free(kd->procbase);
Line 372  _kvm_freeprocs(kd) Line 356  _kvm_freeprocs(kd)
 }  }
   
 void *  void *
 _kvm_realloc(kd, p, n)  _kvm_realloc(kvm_t *kd, void *p, size_t n)
         kvm_t *kd;  
         void *p;  
         size_t n;  
 {  {
         void *np = (void *)realloc(p, n);          void *np = (void *)realloc(p, n);
   
Line 397  _kvm_realloc(kd, p, n) Line 378  _kvm_realloc(kd, p, n)
  * environment strings.  Read at most maxcnt characters of strings.   * environment strings.  Read at most maxcnt characters of strings.
  */   */
 static char **  static char **
 kvm_argv(kd, p, addr, narg, maxcnt)  kvm_argv(kvm_t *kd, const struct proc *p, u_long addr, int narg, int maxcnt)
         kvm_t *kd;  {
         const struct proc *p;          char *np, *cp, *ep, *ap;
         register u_long addr;          u_long oaddr = -1;
         register int narg;          int len, cc;
         register int maxcnt;          char **argv;
 {  
         register char *np, *cp, *ep, *ap;  
         register u_long oaddr = -1;  
         register int len, cc;  
         register char **argv;  
   
         /*          /*
          * Check that there aren't an unreasonable number of agruments,           * Check that there aren't an unreasonable number of agruments,
Line 573  kvm_argv(kd, p, addr, narg, maxcnt) Line 549  kvm_argv(kd, p, addr, narg, maxcnt)
 }  }
   
 static void  static void
 ps_str_a(p, addr, n)  ps_str_a(struct ps_strings *p, u_long *addr, int *n)
         struct ps_strings *p;  
         u_long *addr;  
         int *n;  
 {  {
         *addr = (u_long)p->ps_argvstr;          *addr = (u_long)p->ps_argvstr;
         *n = p->ps_nargvstr;          *n = p->ps_nargvstr;
 }  }
   
 static void  static void
 ps_str_e(p, addr, n)  ps_str_e(struct ps_strings *p, u_long *addr, int *n)
         struct ps_strings *p;  
         u_long *addr;  
         int *n;  
 {  {
         *addr = (u_long)p->ps_envstr;          *addr = (u_long)p->ps_envstr;
         *n = p->ps_nenvstr;          *n = p->ps_nenvstr;
Line 598  ps_str_e(p, addr, n) Line 568  ps_str_e(p, addr, n)
  * being wrong are very low.   * being wrong are very low.
  */   */
 static int  static int
 proc_verify(kd, kernp, p)  proc_verify(kvm_t *kd, u_long kernp, const struct proc *p)
         kvm_t *kd;  
         u_long kernp;  
         const struct proc *p;  
 {  {
         struct kinfo_proc kp;          struct kinfo_proc kp;
         int mib[4];          int mib[4];
Line 619  proc_verify(kd, kernp, p) Line 586  proc_verify(kd, kernp, p)
 }  }
   
 static char **  static char **
 kvm_doargv(kd, kp, nchr, info)  kvm_doargv(kvm_t *kd, const struct kinfo_proc *kp, int nchr,
         kvm_t *kd;             void (*info)(struct ps_strings *, u_long *, int *))
         const struct kinfo_proc *kp;  
         int nchr;  
         void (*info)(struct ps_strings *, u_long *, int *);  
 {  {
         register const struct proc *p = &kp->kp_proc;          const struct proc *p = &kp->kp_proc;
         register char **ap;          char **ap;
         u_long addr;          u_long addr;
         int cnt;          int cnt;
         static struct ps_strings arginfo;          static struct ps_strings arginfo;
Line 665  kvm_doargv(kd, kp, nchr, info) Line 629  kvm_doargv(kd, kp, nchr, info)
  * Get the command args.  This code is now machine independent.   * Get the command args.  This code is now machine independent.
  */   */
 char **  char **
 kvm_getargv(kd, kp, nchr)  kvm_getargv(kvm_t *kd, const struct kinfo_proc *kp, int nchr)
         kvm_t *kd;  
         const struct kinfo_proc *kp;  
         int nchr;  
 {  {
         int oid[4];          int oid[4];
         int i;          int i;
Line 727  kvm_getargv(kd, kp, nchr) Line 688  kvm_getargv(kd, kp, nchr)
 }  }
   
 char **  char **
 kvm_getenvv(kd, kp, nchr)  kvm_getenvv(kvm_t *kd, const struct kinfo_proc *kp, int nchr)
         kvm_t *kd;  
         const struct kinfo_proc *kp;  
         int nchr;  
 {  {
         return (kvm_doargv(kd, kp, nchr, ps_str_e));          return (kvm_doargv(kd, kp, nchr, ps_str_e));
 }  }
Line 739  kvm_getenvv(kd, kp, nchr) Line 697  kvm_getenvv(kd, kp, nchr)
  * Read from user space.  The user context is given by p.   * Read from user space.  The user context is given by p.
  */   */
 ssize_t  ssize_t
 kvm_uread(kd, p, uva, buf, len)  kvm_uread(kvm_t *kd, const struct proc *p, u_long uva, char *buf, size_t len)
         kvm_t *kd;  
         register const struct proc *p;  
         register u_long uva;  
         register char *buf;  
         register size_t len;  
 {  {
         register char *cp;          char *cp;
         char procfile[MAXPATHLEN];          char procfile[MAXPATHLEN];
         ssize_t amount;          ssize_t amount;
         int fd;          int fd;

Removed from v.1.5  
changed lines
  Added in v.1.6