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