mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Don't call calcru() on a swapped-out process. calcru() access p_stats, which
is in U-area.
This commit is contained in:
parent
53ee42d318
commit
9d3a442583
3 changed files with 31 additions and 40 deletions
|
|
@ -37,7 +37,7 @@
|
|||
* @(#)procfs_status.c 8.4 (Berkeley) 6/15/94
|
||||
*
|
||||
* From:
|
||||
* $Id: procfs_status.c,v 1.12 1999/01/05 03:53:06 peter Exp $
|
||||
* $Id: procfs_status.c,v 1.13 1999/04/28 11:37:20 phk Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -102,23 +102,17 @@ procfs_dostatus(curp, p, pfs, uio)
|
|||
if (*sep != ',')
|
||||
ps += sprintf(ps, "noflags");
|
||||
|
||||
if (p->p_flag & P_INMEM)
|
||||
ps += sprintf(ps, " %ld,%ld",
|
||||
p->p_stats->p_start.tv_sec,
|
||||
p->p_stats->p_start.tv_usec);
|
||||
else
|
||||
ps += sprintf(ps, " -1,-1");
|
||||
|
||||
{
|
||||
if (p->p_flag & P_INMEM) {
|
||||
struct timeval ut, st;
|
||||
|
||||
calcru(p, &ut, &st, (void *) 0);
|
||||
ps += sprintf(ps, " %ld,%ld %ld,%ld",
|
||||
ut.tv_sec,
|
||||
ut.tv_usec,
|
||||
st.tv_sec,
|
||||
st.tv_usec);
|
||||
}
|
||||
calcru(p, &ut, &st, (struct timeval *) NULL);
|
||||
ps += sprintf(ps, " %ld,%ld %ld,%ld %ld,%ld",
|
||||
p->p_stats->p_start.tv_sec,
|
||||
p->p_stats->p_start.tv_usec,
|
||||
ut.tv_sec, ut.tv_usec,
|
||||
st.tv_sec, st.tv_usec);
|
||||
} else
|
||||
ps += sprintf(ps, " -1,-1 -1,-1 -1,-1");
|
||||
|
||||
ps += sprintf(ps, " %s",
|
||||
(p->p_wchan && p->p_wmesg) ? p->p_wmesg : "nochan");
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)tty.c 8.8 (Berkeley) 1/21/94
|
||||
* $Id: tty.c,v 1.117 1999/05/06 18:12:47 peter Exp $
|
||||
* $Id: tty.c,v 1.118 1999/05/08 06:39:42 phk Exp $
|
||||
*/
|
||||
|
||||
/*-
|
||||
|
|
@ -2260,15 +2260,18 @@ ttyinfo(tp)
|
|||
pick->p_stat == SRUN ? "running" :
|
||||
pick->p_wmesg ? pick->p_wmesg : "iowait");
|
||||
|
||||
calcru(pick, &utime, &stime, NULL);
|
||||
if (pick->p_flag & P_INMEM) {
|
||||
calcru(pick, &utime, &stime, NULL);
|
||||
|
||||
/* Print user time. */
|
||||
ttyprintf(tp, "%ld.%02ldu ",
|
||||
utime.tv_sec, utime.tv_usec / 10000);
|
||||
/* Print user time. */
|
||||
ttyprintf(tp, "%ld.%02ldu ",
|
||||
utime.tv_sec, utime.tv_usec / 10000);
|
||||
|
||||
/* Print system time. */
|
||||
ttyprintf(tp, "%ld.%02lds ",
|
||||
stime.tv_sec, stime.tv_usec / 10000);
|
||||
/* Print system time. */
|
||||
ttyprintf(tp, "%ld.%02lds ",
|
||||
stime.tv_sec, stime.tv_usec / 10000);
|
||||
} else
|
||||
ttyprintf(tp, "?.??u ?.??s ");
|
||||
|
||||
/* Print percentage cpu, resident set size. */
|
||||
tmp = (pick->p_pctcpu * 10000 + FSCALE / 2) >> FSHIFT;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
* @(#)procfs_status.c 8.4 (Berkeley) 6/15/94
|
||||
*
|
||||
* From:
|
||||
* $Id: procfs_status.c,v 1.12 1999/01/05 03:53:06 peter Exp $
|
||||
* $Id: procfs_status.c,v 1.13 1999/04/28 11:37:20 phk Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
|
@ -102,23 +102,17 @@ procfs_dostatus(curp, p, pfs, uio)
|
|||
if (*sep != ',')
|
||||
ps += sprintf(ps, "noflags");
|
||||
|
||||
if (p->p_flag & P_INMEM)
|
||||
ps += sprintf(ps, " %ld,%ld",
|
||||
p->p_stats->p_start.tv_sec,
|
||||
p->p_stats->p_start.tv_usec);
|
||||
else
|
||||
ps += sprintf(ps, " -1,-1");
|
||||
|
||||
{
|
||||
if (p->p_flag & P_INMEM) {
|
||||
struct timeval ut, st;
|
||||
|
||||
calcru(p, &ut, &st, (void *) 0);
|
||||
ps += sprintf(ps, " %ld,%ld %ld,%ld",
|
||||
ut.tv_sec,
|
||||
ut.tv_usec,
|
||||
st.tv_sec,
|
||||
st.tv_usec);
|
||||
}
|
||||
calcru(p, &ut, &st, (struct timeval *) NULL);
|
||||
ps += sprintf(ps, " %ld,%ld %ld,%ld %ld,%ld",
|
||||
p->p_stats->p_start.tv_sec,
|
||||
p->p_stats->p_start.tv_usec,
|
||||
ut.tv_sec, ut.tv_usec,
|
||||
st.tv_sec, st.tv_usec);
|
||||
} else
|
||||
ps += sprintf(ps, " -1,-1 -1,-1 -1,-1");
|
||||
|
||||
ps += sprintf(ps, " %s",
|
||||
(p->p_wchan && p->p_wmesg) ? p->p_wmesg : "nochan");
|
||||
|
|
|
|||
Loading…
Reference in a new issue