|
|
| 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; |