GPLONLY_ and PID-related stuff
This commit is contained in:
parent
edcc923657
commit
0db94e6a1a
2
NEWS
2
NEWS
@ -1,7 +1,9 @@
|
|||||||
procps-3.1.9 --> procps-3.1.10
|
procps-3.1.9 --> procps-3.1.10
|
||||||
|
|
||||||
|
handle GPLONLY_ symbols #143549 #188374
|
||||||
kill: better man page
|
kill: better man page
|
||||||
skill: better man page
|
skill: better man page
|
||||||
|
ps: PID-like columns change width as needed
|
||||||
top: COMMAND instead of Command
|
top: COMMAND instead of Command
|
||||||
vmstat: -m displays slabinfo
|
vmstat: -m displays slabinfo
|
||||||
vmstat: -d displays disk stats
|
vmstat: -d displays disk stats
|
||||||
|
2
pmap.c
2
pmap.c
@ -93,7 +93,7 @@ static int one_proc(unsigned pid){
|
|||||||
char *tmp; // to clean up unprintables
|
char *tmp; // to clean up unprintables
|
||||||
unsigned long start, end, diff;
|
unsigned long start, end, diff;
|
||||||
unsigned long long pgoff;
|
unsigned long long pgoff;
|
||||||
sscanf(mapbuf,"%lx-%lx %s %Lx", &start, &end, flags, &pgoff);
|
sscanf(mapbuf,"%lx-%lx %31s %Lx", &start, &end, flags, &pgoff);
|
||||||
tmp = strchr(mapbuf,'\n');
|
tmp = strchr(mapbuf,'\n');
|
||||||
if(tmp) *tmp='\0';
|
if(tmp) *tmp='\0';
|
||||||
tmp = mapbuf;
|
tmp = mapbuf;
|
||||||
|
30
proc/ksym.c
30
proc/ksym.c
@ -140,7 +140,7 @@ static unsigned idx_room;
|
|||||||
* /proc/ksyms and System.map data files.
|
* /proc/ksyms and System.map data files.
|
||||||
*/
|
*/
|
||||||
#if 0
|
#if 0
|
||||||
static void chop_version(char *arg){
|
static char *chop_version(char *arg){
|
||||||
char *cp;
|
char *cp;
|
||||||
cp = strchr(arg,'\t');
|
cp = strchr(arg,'\t');
|
||||||
if(cp) *cp = '\0'; /* kill trailing module name first */
|
if(cp) *cp = '\0'; /* kill trailing module name first */
|
||||||
@ -152,7 +152,7 @@ static void chop_version(char *arg){
|
|||||||
for(p=cp; *++p; ){
|
for(p=cp; *++p; ){
|
||||||
switch(*p){
|
switch(*p){
|
||||||
default:
|
default:
|
||||||
return;
|
goto out;
|
||||||
case '0' ... '9':
|
case '0' ... '9':
|
||||||
case 'a' ... 'f':
|
case 'a' ... 'f':
|
||||||
len++;
|
len++;
|
||||||
@ -166,9 +166,18 @@ static void chop_version(char *arg){
|
|||||||
if(len<8) break;
|
if(len<8) break;
|
||||||
cp[-1] = '\0';
|
cp[-1] = '\0';
|
||||||
}
|
}
|
||||||
|
out:
|
||||||
|
if(*arg=='G'){
|
||||||
|
int len = strlen(arg);
|
||||||
|
while( len>8 && !memcmp(arg,"GPLONLY_",8) ){
|
||||||
|
arg += 8;
|
||||||
|
len -= 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arg;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
static void chop_version(char *arg){
|
static char *chop_version(char *arg){
|
||||||
char *cp;
|
char *cp;
|
||||||
cp = strchr(arg,'\t');
|
cp = strchr(arg,'\t');
|
||||||
if(cp) *cp = '\0'; /* kill trailing module name first */
|
if(cp) *cp = '\0'; /* kill trailing module name first */
|
||||||
@ -182,6 +191,14 @@ static void chop_version(char *arg){
|
|||||||
if(strspn(cp+len-8,"0123456789abcdef")!=8) break;
|
if(strspn(cp+len-8,"0123456789abcdef")!=8) break;
|
||||||
cp[-1] = '\0';
|
cp[-1] = '\0';
|
||||||
}
|
}
|
||||||
|
if(*arg=='G'){
|
||||||
|
int len = strlen(arg);
|
||||||
|
while( len>8 && !memcmp(arg,"GPLONLY_",8) ){
|
||||||
|
arg += 8;
|
||||||
|
len -= 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************/
|
/***********************************/
|
||||||
@ -293,12 +310,11 @@ bypass:
|
|||||||
ksyms_index[ksyms_count].addr = STRTOUKL(endp, &endp, 16);
|
ksyms_index[ksyms_count].addr = STRTOUKL(endp, &endp, 16);
|
||||||
if(endp==saved || *endp != ' ') goto bad_parse;
|
if(endp==saved || *endp != ' ') goto bad_parse;
|
||||||
endp++;
|
endp++;
|
||||||
ksyms_index[ksyms_count].name = endp;
|
|
||||||
saved = endp;
|
saved = endp;
|
||||||
endp = strchr(endp,'\n');
|
endp = strchr(endp,'\n');
|
||||||
if(!endp) goto bad_parse; /* no newline */
|
if(!endp) goto bad_parse; /* no newline */
|
||||||
*endp = '\0';
|
*endp = '\0';
|
||||||
chop_version(saved);
|
ksyms_index[ksyms_count].name = chop_version(saved);
|
||||||
++endp;
|
++endp;
|
||||||
if(++ksyms_count >= idx_room) break; /* need more space */
|
if(++ksyms_count >= idx_room) break; /* need more space */
|
||||||
}
|
}
|
||||||
@ -400,13 +416,13 @@ good_match:;
|
|||||||
endp++;
|
endp++;
|
||||||
if(*endp != ' ') goto bad_parse;
|
if(*endp != ' ') goto bad_parse;
|
||||||
endp++;
|
endp++;
|
||||||
sysmap_index[sysmap_count].name = endp;
|
|
||||||
vstart = endp;
|
vstart = endp;
|
||||||
endp = strchr(endp,'\n');
|
endp = strchr(endp,'\n');
|
||||||
if(!endp) goto bad_parse; /* no newline */
|
if(!endp) goto bad_parse; /* no newline */
|
||||||
*endp = '\0';
|
*endp = '\0';
|
||||||
++endp;
|
++endp;
|
||||||
chop_version(vstart);
|
vstart = chop_version(vstart);
|
||||||
|
sysmap_index[sysmap_count].name = vstart;
|
||||||
if(*vstart=='V' && *Version && !strcmp(Version,vstart)) *Version='\0';
|
if(*vstart=='V' && *Version && !strcmp(Version,vstart)) *Version='\0';
|
||||||
if(++sysmap_count >= sysmap_room) break; /* need more space */
|
if(++sysmap_count >= sysmap_room) break; /* need more space */
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ global:
|
|||||||
Hertz; smp_num_cpus;
|
Hertz; smp_num_cpus;
|
||||||
sprint_uptime; uptime; user_from_uid; print_uptime; loadavg;
|
sprint_uptime; uptime; user_from_uid; print_uptime; loadavg;
|
||||||
pretty_print_signals; print_given_signals; unix_print_signals; signal_name_to_number; signal_number_to_name;
|
pretty_print_signals; print_given_signals; unix_print_signals; signal_name_to_number; signal_number_to_name;
|
||||||
meminfo; vminfo; getstat; getdiskstat; getslabinfo;
|
meminfo; vminfo; getstat; getdiskstat; getslabinfo; get_pid_digits;
|
||||||
kb_active; kb_inactive; kb_main_buffers; kb_main_cached;
|
kb_active; kb_inactive; kb_main_buffers; kb_main_cached;
|
||||||
kb_main_free; kb_main_total; kb_main_used; kb_swap_free;
|
kb_main_free; kb_main_total; kb_main_used; kb_swap_free;
|
||||||
kb_swap_total; kb_swap_used; kb_main_shared;
|
kb_swap_total; kb_swap_used; kb_main_shared;
|
||||||
|
@ -734,8 +734,8 @@ HIDDEN_ALIAS(readproc);
|
|||||||
|
|
||||||
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
||||||
* table subset satisfying the constraints of flags and the optional PID list.
|
* table subset satisfying the constraints of flags and the optional PID list.
|
||||||
* Free allocated memory with freeproctab(). Access via tab[N]->member. The
|
* Free allocated memory with exit(). Access via tab[N]->member. The pointer
|
||||||
* pointer list is NULL terminated.
|
* list is NULL terminated.
|
||||||
*/
|
*/
|
||||||
proc_t** readproctab(int flags, ...) {
|
proc_t** readproctab(int flags, ...) {
|
||||||
PROCTAB* PT = NULL;
|
PROCTAB* PT = NULL;
|
||||||
|
@ -166,8 +166,8 @@ extern PROCTAB* openproc(int flags, ... /* pid_t*|uid_t*|dev_t*|char* [, int n]
|
|||||||
|
|
||||||
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
/* Convenient wrapper around openproc and readproc to slurp in the whole process
|
||||||
* table subset satisfying the constraints of flags and the optional PID list.
|
* table subset satisfying the constraints of flags and the optional PID list.
|
||||||
* Free allocated memory with freeproctab(). Access via tab[N]->member. The
|
* Free allocated memory with exit(). Access via tab[N]->member. The pointer
|
||||||
* pointer list is NULL terminated.
|
* list is NULL terminated.
|
||||||
*/
|
*/
|
||||||
extern proc_t** readproctab(int flags, ... /* same as openproc */ );
|
extern proc_t** readproctab(int flags, ... /* same as openproc */ );
|
||||||
|
|
||||||
|
@ -757,3 +757,32 @@ unsigned int getslabinfo (struct slab_cache **slab){
|
|||||||
return cSlab;
|
return cSlab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
unsigned get_pid_digits(void){
|
||||||
|
char buf[24];
|
||||||
|
char *endp;
|
||||||
|
long rc;
|
||||||
|
int fd;
|
||||||
|
static unsigned ret;
|
||||||
|
|
||||||
|
if(ret) goto out;
|
||||||
|
ret = 5;
|
||||||
|
fd = open("/proc/sys/kernel/pid_max", O_RDONLY);
|
||||||
|
if(fd==-1) goto out;
|
||||||
|
rc = read(fd, buf, sizeof buf);
|
||||||
|
close(fd);
|
||||||
|
if(rc<3) goto out;
|
||||||
|
buf[rc] = '\0';
|
||||||
|
rc = strtol(buf,&endp,10);
|
||||||
|
if(rc<42) goto out;
|
||||||
|
if(*endp && *endp!='\n') goto out;
|
||||||
|
rc--; // the pid_max value is really the max PID plus 1
|
||||||
|
ret = 0;
|
||||||
|
while(rc){
|
||||||
|
rc /= 10;
|
||||||
|
ret++;
|
||||||
|
}
|
||||||
|
out:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -127,5 +127,7 @@ typedef struct slab_cache{
|
|||||||
|
|
||||||
extern unsigned int getslabinfo (struct slab_cache**);
|
extern unsigned int getslabinfo (struct slab_cache**);
|
||||||
|
|
||||||
|
extern unsigned get_pid_digits(void) FUNCTION;
|
||||||
|
|
||||||
EXTERN_C_END
|
EXTERN_C_END
|
||||||
#endif /* SYSINFO_H */
|
#endif /* SYSINFO_H */
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "../proc/version.h"
|
#include "../proc/version.h"
|
||||||
#include "../proc/readproc.h"
|
#include "../proc/readproc.h"
|
||||||
#include "../proc/sysinfo.h"
|
#include "../proc/sysinfo.h"
|
||||||
|
#include "../proc/sig.h"
|
||||||
|
|
||||||
#ifndef SIGCHLD
|
#ifndef SIGCHLD
|
||||||
#define SIGCHLD SIGCLD
|
#define SIGCHLD SIGCLD
|
||||||
|
51
ps/output.c
51
ps/output.c
@ -85,17 +85,20 @@
|
|||||||
static unsigned max_rightward = 0x12345678; /* space for RIGHT stuff */
|
static unsigned max_rightward = 0x12345678; /* space for RIGHT stuff */
|
||||||
static unsigned max_leftward = 0x12345678; /* space for LEFT stuff */
|
static unsigned max_leftward = 0x12345678; /* space for LEFT stuff */
|
||||||
|
|
||||||
/* Justification control for flags field. */
|
|
||||||
#define JUST_MASK 0x0f
|
|
||||||
/* AIXHACK 0 */
|
|
||||||
#define USER 1 /* left if text, right if numeric */
|
|
||||||
#define LEFT 2
|
|
||||||
#define RIGHT 3
|
|
||||||
#define UNLIMITED 4
|
|
||||||
#define WCHAN 5 /* left if text, right if numeric */
|
|
||||||
#define SIGNAL 6 /* right in 9, or 16 if screen_cols>107 */
|
|
||||||
|
|
||||||
#define CUMUL 16 /* mark cumulative (Summed) headers with 'C' */
|
/* Justification control for flags field. */
|
||||||
|
#define JUST_MASK 0x0f
|
||||||
|
// AIXHACK 0
|
||||||
|
#define USER 1 // left if text, right if numeric
|
||||||
|
#define LEFT 2
|
||||||
|
#define RIGHT 3
|
||||||
|
#define UNLIMITED 4
|
||||||
|
#define WCHAN 5 // left if text, right if numeric
|
||||||
|
#define SIGNAL 6 // right in 9, or 16 if screen_cols>107
|
||||||
|
|
||||||
|
#define CUMUL 0x10 // mark cumulative (Summed) headers with 'C' */
|
||||||
|
#define PIDMAX 0x20 // react to pid_max
|
||||||
|
|
||||||
|
|
||||||
static int wide_signals; /* true if we have room */
|
static int wide_signals; /* true if we have room */
|
||||||
|
|
||||||
@ -1212,7 +1215,7 @@ static const format_struct format_array[] = {
|
|||||||
{"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, RIGHT},
|
{"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, RIGHT},
|
||||||
{"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, RIGHT}, /* login ID */
|
{"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, RIGHT}, /* login ID */
|
||||||
{"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, USER}, /* login USER */
|
{"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, USER}, /* login USER */
|
||||||
{"lwp", "LWP", pr_thread, sr_nop, 5, 0, SUN, RIGHT},
|
{"lwp", "LWP", pr_thread, sr_nop, 5, 0, SUN, PIDMAX|RIGHT},
|
||||||
{"m_drs", "DRS", pr_drs, sr_drs, 5, MEM, LNx, RIGHT},
|
{"m_drs", "DRS", pr_drs, sr_drs, 5, MEM, LNx, RIGHT},
|
||||||
{"m_dt", "DT", pr_nop, sr_dt, 4, MEM, LNx, RIGHT},
|
{"m_dt", "DT", pr_nop, sr_dt, 4, MEM, LNx, RIGHT},
|
||||||
{"m_lrs", "LRS", pr_nop, sr_lrs, 5, MEM, LNx, RIGHT},
|
{"m_lrs", "LRS", pr_nop, sr_lrs, 5, MEM, LNx, RIGHT},
|
||||||
@ -1245,13 +1248,13 @@ static const format_struct format_array[] = {
|
|||||||
{"pagein", "PAGEIN", pr_majflt, sr_nop, 6, 0, XXX, RIGHT},
|
{"pagein", "PAGEIN", pr_majflt, sr_nop, 6, 0, XXX, RIGHT},
|
||||||
{"pcpu", "%CPU", pr_pcpu, sr_pcpu, 4, 0, U98, RIGHT}, /*%cpu*/
|
{"pcpu", "%CPU", pr_pcpu, sr_pcpu, 4, 0, U98, RIGHT}, /*%cpu*/
|
||||||
{"pending", "PENDING", pr_sig, sr_nop, 9, 0, BSD, SIGNAL}, /*sig*/
|
{"pending", "PENDING", pr_sig, sr_nop, 9, 0, BSD, SIGNAL}, /*sig*/
|
||||||
{"pgid", "PGID", pr_pgid, sr_pgrp, 5, 0, U98, RIGHT},
|
{"pgid", "PGID", pr_pgid, sr_pgrp, 5, 0, U98, PIDMAX|RIGHT},
|
||||||
{"pgrp", "PGRP", pr_pgid, sr_pgrp, 5, 0, LNX, RIGHT},
|
{"pgrp", "PGRP", pr_pgid, sr_pgrp, 5, 0, LNX, PIDMAX|RIGHT},
|
||||||
{"pid", "PID", pr_pid, sr_pid, 5, 0, U98, RIGHT},
|
{"pid", "PID", pr_pid, sr_pid, 5, 0, U98, PIDMAX|RIGHT},
|
||||||
{"pmem", "%MEM", pr_pmem, sr_nop, 4, 0, XXX, RIGHT}, /*%mem*/
|
{"pmem", "%MEM", pr_pmem, sr_nop, 4, 0, XXX, RIGHT}, /*%mem*/
|
||||||
{"poip", "-", pr_nop, sr_nop, 1, 0, BSD, RIGHT},
|
{"poip", "-", pr_nop, sr_nop, 1, 0, BSD, RIGHT},
|
||||||
{"policy", "POL", pr_class, sr_sched, 3, 0, DEC, LEFT},
|
{"policy", "POL", pr_class, sr_sched, 3, 0, DEC, LEFT},
|
||||||
{"ppid", "PPID", pr_ppid, sr_ppid, 5, 0, U98, RIGHT},
|
{"ppid", "PPID", pr_ppid, sr_ppid, 5, 0, U98, PIDMAX|RIGHT},
|
||||||
{"pri", "PRI", pr_pri, sr_nop, 3, 0, XXX, RIGHT},
|
{"pri", "PRI", pr_pri, sr_nop, 3, 0, XXX, RIGHT},
|
||||||
{"priority", "PRI", pr_priority, sr_priority, 3, 0, LNX, RIGHT}, /*ni,nice*/ /* from Linux sorting names */
|
{"priority", "PRI", pr_priority, sr_priority, 3, 0, LNX, RIGHT}, /*ni,nice*/ /* from Linux sorting names */
|
||||||
{"prmgrp", "-", pr_nop, sr_nop, 1, 0, HPU, RIGHT},
|
{"prmgrp", "-", pr_nop, sr_nop, 1, 0, HPU, RIGHT},
|
||||||
@ -1275,14 +1278,14 @@ static const format_struct format_array[] = {
|
|||||||
{"scnt", "SCNT", pr_nop, sr_nop, 4, 0, DEC, RIGHT}, /* man page misspelling of scount? */
|
{"scnt", "SCNT", pr_nop, sr_nop, 4, 0, DEC, RIGHT}, /* man page misspelling of scount? */
|
||||||
{"scount", "SC", pr_nop, sr_nop, 4, 0, AIX, RIGHT}, /* scnt==scount, DEC claims both */
|
{"scount", "SC", pr_nop, sr_nop, 4, 0, AIX, RIGHT}, /* scnt==scount, DEC claims both */
|
||||||
{"secsid", "SID", pr_secsid, sr_secsid, 6, 0, LNX, RIGHT}, /* Flask Linux */
|
{"secsid", "SID", pr_secsid, sr_secsid, 6, 0, LNX, RIGHT}, /* Flask Linux */
|
||||||
{"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, RIGHT},
|
{"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PIDMAX|RIGHT},
|
||||||
{"session", "SESS", pr_sess, sr_session, 5, 0, LNX, RIGHT},
|
{"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PIDMAX|RIGHT},
|
||||||
{"sgi_p", "P", pr_sgi_p, sr_nop, 1, 0, LNX, RIGHT}, /* "cpu" number */
|
{"sgi_p", "P", pr_sgi_p, sr_nop, 1, 0, LNX, RIGHT}, /* "cpu" number */
|
||||||
{"sgi_rss", "RSS", pr_rss, sr_nop, 4, 0, LNX, LEFT}, /* SZ:RSS */
|
{"sgi_rss", "RSS", pr_rss, sr_nop, 4, 0, LNX, LEFT}, /* SZ:RSS */
|
||||||
{"sgid", "SGID", pr_sgid, sr_sgid, 5, 0, LNX, RIGHT},
|
{"sgid", "SGID", pr_sgid, sr_sgid, 5, 0, LNX, RIGHT},
|
||||||
{"sgroup", "SGROUP", pr_sgroup, sr_sgroup, 8, GRP, LNX, USER},
|
{"sgroup", "SGROUP", pr_sgroup, sr_sgroup, 8, GRP, LNX, USER},
|
||||||
{"share", "-", pr_nop, sr_share, 1, MEM, LNX, RIGHT},
|
{"share", "-", pr_nop, sr_share, 1, MEM, LNX, RIGHT},
|
||||||
{"sid", "SID", pr_sess, sr_session, 5, 0, XXX, RIGHT}, /* Sun & HP */
|
{"sid", "SID", pr_sess, sr_session, 5, 0, XXX, PIDMAX|RIGHT}, /* Sun & HP */
|
||||||
{"sig", "PENDING", pr_sig, sr_nop, 9, 0, XXX, SIGNAL}, /*pending*/
|
{"sig", "PENDING", pr_sig, sr_nop, 9, 0, XXX, SIGNAL}, /*pending*/
|
||||||
{"sig_block", "BLOCKED", pr_sigmask, sr_nop, 9, 0, LNX, SIGNAL},
|
{"sig_block", "BLOCKED", pr_sigmask, sr_nop, 9, 0, LNX, SIGNAL},
|
||||||
{"sig_catch", "CATCHED", pr_sigcatch, sr_nop, 9, 0, LNX, SIGNAL},
|
{"sig_catch", "CATCHED", pr_sigcatch, sr_nop, 9, 0, LNX, SIGNAL},
|
||||||
@ -1293,7 +1296,7 @@ static const format_struct format_array[] = {
|
|||||||
{"sigmask", "BLOCKED", pr_sigmask, sr_nop, 9, 0, XXX, SIGNAL}, /*blocked*/
|
{"sigmask", "BLOCKED", pr_sigmask, sr_nop, 9, 0, XXX, SIGNAL}, /*blocked*/
|
||||||
{"size", "SZ", pr_swapable, sr_swapable, 1, 0, SCO, RIGHT},
|
{"size", "SZ", pr_swapable, sr_swapable, 1, 0, SCO, RIGHT},
|
||||||
{"sl", "SL", pr_nop, sr_nop, 3, 0, XXX, RIGHT},
|
{"sl", "SL", pr_nop, sr_nop, 3, 0, XXX, RIGHT},
|
||||||
{"spid", "SPID", pr_thread, sr_nop, 5, 0, SGI, RIGHT},
|
{"spid", "SPID", pr_thread, sr_nop, 5, 0, SGI, PIDMAX|RIGHT},
|
||||||
{"stackp", "STACKP", pr_stackp, sr_nop, 8, 0, LNX, RIGHT}, /*start_stack*/
|
{"stackp", "STACKP", pr_stackp, sr_nop, 8, 0, LNX, RIGHT}, /*start_stack*/
|
||||||
{"start", "STARTED", pr_start, sr_nop, 8, 0, XXX, RIGHT},
|
{"start", "STARTED", pr_start, sr_nop, 8, 0, XXX, RIGHT},
|
||||||
{"start_code", "S_CODE", pr_nop, sr_start_code, 8, 0, LNx, RIGHT},
|
{"start_code", "S_CODE", pr_nop, sr_start_code, 8, 0, LNx, RIGHT},
|
||||||
@ -1313,16 +1316,16 @@ static const format_struct format_array[] = {
|
|||||||
{"sz", "SZ", pr_sz, sr_nop, 5, 0, HPU, RIGHT},
|
{"sz", "SZ", pr_sz, sr_nop, 5, 0, HPU, RIGHT},
|
||||||
{"tdev", "TDEV", pr_nop, sr_nop, 4, 0, XXX, RIGHT},
|
{"tdev", "TDEV", pr_nop, sr_nop, 4, 0, XXX, RIGHT},
|
||||||
{"thcount", "THCNT", pr_nlwp, sr_nop, 5, 0, AIX, RIGHT},
|
{"thcount", "THCNT", pr_nlwp, sr_nop, 5, 0, AIX, RIGHT},
|
||||||
{"tid", "TID", pr_thread, sr_nop, 5, 0, AIX, RIGHT},
|
{"tid", "TID", pr_thread, sr_nop, 5, 0, AIX, PIDMAX|RIGHT},
|
||||||
{"time", "TIME", pr_time, sr_nop, 8, 0, U98, CUMUL|RIGHT}, /*cputime*/ /* was 6 wide */
|
{"time", "TIME", pr_time, sr_nop, 8, 0, U98, CUMUL|RIGHT}, /*cputime*/ /* was 6 wide */
|
||||||
{"timeout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
|
{"timeout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
|
||||||
{"tmout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
|
{"tmout", "TMOUT", pr_timeout, sr_timeout, 5, 0, LNX, RIGHT},
|
||||||
{"tname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, LEFT},
|
{"tname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, LEFT},
|
||||||
{"tpgid", "TPGID", pr_tpgid, sr_tpgid, 5, 0, XXX, RIGHT},
|
{"tpgid", "TPGID", pr_tpgid, sr_tpgid, 5, 0, XXX, PIDMAX|RIGHT},
|
||||||
{"trs", "TRS", pr_trs, sr_trs, 4, MEM, AIX, RIGHT},
|
{"trs", "TRS", pr_trs, sr_trs, 4, MEM, AIX, RIGHT},
|
||||||
{"trss", "TRSS", pr_trs, sr_trs, 4, MEM, BSD, RIGHT}, /* 4.3BSD NET/2 */
|
{"trss", "TRSS", pr_trs, sr_trs, 4, MEM, BSD, RIGHT}, /* 4.3BSD NET/2 */
|
||||||
{"tsess", "TSESS", pr_nop, sr_nop, 5, 0, BSD, RIGHT},
|
{"tsess", "TSESS", pr_nop, sr_nop, 5, 0, BSD, PIDMAX|RIGHT},
|
||||||
{"tsession", "TSESS", pr_nop, sr_nop, 5, 0, DEC, RIGHT},
|
{"tsession", "TSESS", pr_nop, sr_nop, 5, 0, DEC, PIDMAX|RIGHT},
|
||||||
{"tsiz", "TSIZ", pr_tsiz, sr_nop, 4, 0, BSD, RIGHT},
|
{"tsiz", "TSIZ", pr_tsiz, sr_nop, 4, 0, BSD, RIGHT},
|
||||||
{"tt", "TT", pr_tty8, sr_tty, 8, 0, BSD, LEFT},
|
{"tt", "TT", pr_tty8, sr_tty, 8, 0, BSD, LEFT},
|
||||||
{"tty", "TT", pr_tty8, sr_tty, 8, 0, U98, LEFT}, /* Unix98 requires "TT" but has "TTY" too. :-( */ /* was 3 wide */
|
{"tty", "TT", pr_tty8, sr_tty, 8, 0, U98, LEFT}, /* Unix98 requires "TT" but has "TTY" too. :-( */ /* was 3 wide */
|
||||||
@ -1596,7 +1599,7 @@ static void check_header_width(void){
|
|||||||
/********** show one process (NULL proc prints header) **********/
|
/********** show one process (NULL proc prints header) **********/
|
||||||
|
|
||||||
//#define SPACE_AMOUNT page_size
|
//#define SPACE_AMOUNT page_size
|
||||||
#define SPACE_AMOUNT 128
|
#define SPACE_AMOUNT 144
|
||||||
|
|
||||||
static char *saved_outbuf;
|
static char *saved_outbuf;
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
|
||||||
#include "../proc/readproc.h"
|
#include "../proc/readproc.h"
|
||||||
|
#include "../proc/sysinfo.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
static sf_node *sf_list = NULL; /* deferred sorting and formatting */
|
static sf_node *sf_list = NULL; /* deferred sorting and formatting */
|
||||||
@ -34,6 +35,11 @@ static int already_parsed_format = 0;
|
|||||||
#define parse_sort_opt <-- arrgh! do not use this -->
|
#define parse_sort_opt <-- arrgh! do not use this -->
|
||||||
#define gnusort_parse <-- arrgh! do not use this -->
|
#define gnusort_parse <-- arrgh! do not use this -->
|
||||||
|
|
||||||
|
#ifndef COL_PIDMAX
|
||||||
|
#warning Ugly wart needs fixing, use common.h to sync w/ output.c
|
||||||
|
#define COL_PIDMAX 0x20
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**************** Parse single format specifier *******************/
|
/**************** Parse single format specifier *******************/
|
||||||
static format_node *do_one_spec(const char *spec, const char *override){
|
static format_node *do_one_spec(const char *spec, const char *override){
|
||||||
@ -45,7 +51,13 @@ static format_node *do_one_spec(const char *spec, const char *override){
|
|||||||
int w1, w2;
|
int w1, w2;
|
||||||
format_node *thisnode;
|
format_node *thisnode;
|
||||||
thisnode = malloc(sizeof(format_node));
|
thisnode = malloc(sizeof(format_node));
|
||||||
w1 = fs->width;
|
if(fs->flags & COL_PIDMAX){
|
||||||
|
w1 = (int)get_pid_digits();
|
||||||
|
w2 = strlen(fs->head);
|
||||||
|
if(w2>w1) w1=w2; // FIXME w/ separate header/body column sizing
|
||||||
|
}else{
|
||||||
|
w1 = fs->width;
|
||||||
|
}
|
||||||
if(override){
|
if(override){
|
||||||
w2 = strlen(override);
|
w2 = strlen(override);
|
||||||
thisnode->width = (w1>w2)?w1:w2;
|
thisnode->width = (w1>w2)?w1:w2;
|
||||||
|
Loading…
Reference in New Issue
Block a user