diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-06-30 18:47:41 +0400 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-06-30 18:47:41 +0400 |
commit | 98ebab8b768d4651d8db2f46a0cd6bd53012c8e6 (patch) | |
tree | 2f491e67f1f49a31b0cfeeaabb032b646b8d808c /include | |
parent | 8b1409896d3224fec477bc372c4dceaebe6d6351 (diff) |
top,ps: improve /proc/PID/cmdinfo reading code
function old new delta
display_status - 1231 +1231
read_cmdline - 101 +101
parse_conf 1284 1303 +19
arith 2033 2042 +9
collect_blk 467 474 +7
fsck_main 1909 1911 +2
dhcprelay_main 1125 1122 -3
singlemount 4555 4547 -8
read_close 50 36 -14
get_lcm 123 105 -18
ed_main 3111 3084 -27
func_args 73 28 -45
procps_scan 732 658 -74
top_main 2187 899 -1288
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 4/8 up/down: 1369/-1477) Total: -108 bytes
text data bss dec hex filename
676048 2744 13968 692760 a9218 busybox_old
675940 2744 13968 692652 a91ac busybox_unstripped
Diffstat (limited to 'include')
-rw-r--r-- | include/libbb.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/libbb.h b/include/libbb.h index 6a699a7e6..a95de848b 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -836,7 +836,7 @@ enum { COMM_LEN = 16 }; typedef struct { DIR *dir; /* Fields are set to 0/NULL if failed to determine (or not requested) */ - char *cmd; + /*char *cmd;*/ char *argv0; /*char *exe;*/ USE_SELINUX(char *context;) @@ -852,7 +852,9 @@ typedef struct { unsigned gid; unsigned tty_major,tty_minor; char state[4]; - /* basename of executable in exec(2), read from /proc/N/stat */ + /* basename of executable in exec(2), read from /proc/N/stat + * (if executable is symlink or script, it is NOT replaced + * by link target or interpreter name) */ char comm[COMM_LEN]; /* user/group? - use passwd/group parsing functions */ } procps_status_t; @@ -863,9 +865,9 @@ enum { PSSCAN_SID = 1 << 3, PSSCAN_UIDGID = 1 << 4, PSSCAN_COMM = 1 << 5, - PSSCAN_CMD = 1 << 6, + /* PSSCAN_CMD = 1 << 6, - use read_cmdline instead */ PSSCAN_ARGV0 = 1 << 7, - PSSCAN_EXE = 1 << 8, /* not implemented yet */ + /* PSSCAN_EXE = 1 << 8, - not implemented */ PSSCAN_STATE = 1 << 9, PSSCAN_VSZ = 1 << 10, PSSCAN_RSS = 1 << 11, @@ -883,6 +885,9 @@ enum { procps_status_t* alloc_procps_scan(int flags); void free_procps_scan(procps_status_t* sp); procps_status_t* procps_scan(procps_status_t* sp, int flags); +/* Format cmdline (up to col chars) into char buf[col+1] */ +/* Puts [comm] if cmdline is empty (-> process is a kernel thread) */ +void read_cmdline(char *buf, int col, unsigned pid, const char *comm); pid_t *find_pid_by_name(const char* procName); pid_t *pidlist_reverse(pid_t *pidList); |