fix top for 2.5.xx
This commit is contained in:
parent
67a4d8eb24
commit
2de91e85be
1
NEWS
1
NEWS
@ -5,6 +5,7 @@ Linux 2.2.xx ELF note warning removed
|
|||||||
only show IO-wait on recent kernels
|
only show IO-wait on recent kernels
|
||||||
fix top's SMP stats
|
fix top's SMP stats
|
||||||
fix top for "dumb" and "vt510" terminals
|
fix top for "dumb" and "vt510" terminals
|
||||||
|
in top, limit the priority values to -99 ... 99
|
||||||
|
|
||||||
procps-3.0.2 --> procps-3.0.3
|
procps-3.0.2 --> procps-3.0.3
|
||||||
|
|
||||||
|
14
top.c
14
top.c
@ -871,6 +871,9 @@ static proc_t **refreshprocs (proc_t **table, int flags)
|
|||||||
{
|
{
|
||||||
#define PTRsz sizeof(proc_t *) /* eyeball candy */
|
#define PTRsz sizeof(proc_t *) /* eyeball candy */
|
||||||
#define ENTsz sizeof(proc_t)
|
#define ENTsz sizeof(proc_t)
|
||||||
|
/* quick & dirty response to 2.5.xx RT */
|
||||||
|
#define RTx(p) { if (-99 > p->priority) p->priority = -99; \
|
||||||
|
if (+99 < p->priority) p->priority = +99; }
|
||||||
static unsigned savmax = 0; /* first time, Bypass: (i) */
|
static unsigned savmax = 0; /* first time, Bypass: (i) */
|
||||||
proc_t *ptsk = (proc_t *)-1; /* first time, Force: (ii) */
|
proc_t *ptsk = (proc_t *)-1; /* first time, Force: (ii) */
|
||||||
unsigned curmax = 0; /* every time (jeeze) */
|
unsigned curmax = 0; /* every time (jeeze) */
|
||||||
@ -890,6 +893,7 @@ static proc_t **refreshprocs (proc_t **table, int flags)
|
|||||||
table[curmax]->cmdline = NULL;
|
table[curmax]->cmdline = NULL;
|
||||||
}
|
}
|
||||||
if (!(ptsk = readproc(PT, table[curmax]))) break;
|
if (!(ptsk = readproc(PT, table[curmax]))) break;
|
||||||
|
RTx(ptsk)
|
||||||
++curmax;
|
++curmax;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -898,9 +902,11 @@ static proc_t **refreshprocs (proc_t **table, int flags)
|
|||||||
/* realloc as we go, keeping 'table' ahead of 'currmax++' */
|
/* realloc as we go, keeping 'table' ahead of 'currmax++' */
|
||||||
table = alloc_r(table, (curmax + 1) * PTRsz);
|
table = alloc_r(table, (curmax + 1) * PTRsz);
|
||||||
/* here, readproc will allocate the underlying proc_t stg */
|
/* here, readproc will allocate the underlying proc_t stg */
|
||||||
if ((ptsk = readproc(PT, NULL)))
|
if ((ptsk = readproc(PT, NULL))) {
|
||||||
|
RTx(ptsk)
|
||||||
table[curmax++] = ptsk;
|
table[curmax++] = ptsk;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
closeproc(PT);
|
closeproc(PT);
|
||||||
|
|
||||||
/* iii) Chunkless: make 'eot' entry, after possible extension */
|
/* iii) Chunkless: make 'eot' entry, after possible extension */
|
||||||
@ -916,6 +922,7 @@ static proc_t **refreshprocs (proc_t **table, int flags)
|
|||||||
|
|
||||||
#undef PTRsz
|
#undef PTRsz
|
||||||
#undef ENTsz
|
#undef ENTsz
|
||||||
|
#undef RTx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1931,10 +1938,11 @@ static void show_a_task (WIN_t *q, proc_t *task)
|
|||||||
{
|
{
|
||||||
/* the following macro is our means to 'inline' emitting a column -- that's
|
/* the following macro is our means to 'inline' emitting a column -- that's
|
||||||
far and away the most frequent and costly part of top's entire job! */
|
far and away the most frequent and costly part of top's entire job! */
|
||||||
#define MKCOL(q,idx,sta,pad,buf,arg...) \
|
#define MKCOL(q,idx,sta,pad,buf,arg...) do{ \
|
||||||
if (!b) \
|
if (!b) \
|
||||||
snprintf(buf, sizeof(buf), f, ## arg); \
|
snprintf(buf, sizeof(buf), f, ## arg); \
|
||||||
else mkcol(q, idx, sta, pad, buf, ## arg);
|
else mkcol(q, idx, sta, pad, buf, ## arg); }while(0)
|
||||||
|
|
||||||
char rbuf[ROWBUFSIZ];
|
char rbuf[ROWBUFSIZ];
|
||||||
int j, x, pad;
|
int j, x, pad;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user