Merge "Remove the name filtering from toolbox ps."

am: 9d1636b193

* commit '9d1636b193adf9ba6cd598e3637bbebafcf4f9bf':
  Remove the name filtering from toolbox ps.
This commit is contained in:
Elliott Hughes 2015-10-30 22:25:31 +00:00 committed by android-build-merger
commit 888b517826
1 changed files with 58 additions and 55 deletions

View File

@ -41,14 +41,14 @@ static int ppid_filter = 0;
static void print_exe_abi(int pid);
static int ps_line(int pid, int tid, char *namefilter)
static int ps_line(int pid, int tid)
{
char statline[1024];
char cmdline[1024];
char macline[1024];
char user[32];
struct stat stats;
int fd, r;
int r;
char *ptr, *name, *state;
int ppid;
unsigned rss, vss;
@ -68,7 +68,7 @@ static int ps_line(int pid, int tid, char *namefilter)
sprintf(statline, "/proc/%d/stat", pid);
sprintf(cmdline, "/proc/%d/cmdline", pid);
snprintf(macline, sizeof(macline), "/proc/%d/attr/current", pid);
fd = open(cmdline, O_RDONLY);
int fd = open(cmdline, O_RDONLY);
if(fd == 0) {
r = 0;
} else {
@ -79,7 +79,7 @@ static int ps_line(int pid, int tid, char *namefilter)
cmdline[r] = 0;
}
fd = open(statline, O_RDONLY);
int fd = open(statline, O_RDONLY);
if(fd == 0) return -1;
r = read(fd, statline, 1023);
close(fd);
@ -158,51 +158,49 @@ static int ps_line(int pid, int tid, char *namefilter)
return 0;
}
if(!namefilter || !strncmp(cmdline[0] ? cmdline : name, namefilter, strlen(namefilter))) {
if (display_flags & SHOW_MACLABEL) {
fd = open(macline, O_RDONLY);
strcpy(macline, "-");
if (fd >= 0) {
r = read(fd, macline, sizeof(macline)-1);
close(fd);
if (r > 0)
macline[r] = 0;
}
printf("%-30s %-9s %-5d %-5d %s\n", macline, user, pid, ppid, cmdline[0] ? cmdline : name);
return 0;
if (display_flags & SHOW_MACLABEL) {
fd = open(macline, O_RDONLY);
strcpy(macline, "-");
if (fd >= 0) {
r = read(fd, macline, sizeof(macline)-1);
close(fd);
if (r > 0)
macline[r] = 0;
}
printf("%-9s %-5d %-5d %-6d %-5d", user, pid, ppid, vss / 1024, rss * 4);
if (display_flags & SHOW_CPU)
printf(" %-2d", psr);
if (display_flags & SHOW_PRIO)
printf(" %-5d %-5d %-5d %-5d", prio, nice, rtprio, sched);
if (display_flags & SHOW_POLICY) {
SchedPolicy p;
if (get_sched_policy(pid, &p) < 0)
printf(" un ");
else
printf(" %.2s ", get_sched_policy_name(p));
}
char path[PATH_MAX];
snprintf(path, sizeof(path), "/proc/%d/wchan", pid);
char wchan[10];
int fd = open(path, O_RDONLY);
ssize_t wchan_len = read(fd, wchan, sizeof(wchan));
if (wchan_len == -1) {
wchan[wchan_len = 0] = '\0';
}
close(fd);
printf(" %10.*s %0*" PRIxPTR " %s ", (int) wchan_len, wchan, (int) PC_WIDTH, eip, state);
if (display_flags & SHOW_ABI) {
print_exe_abi(pid);
}
printf("%s", cmdline[0] ? cmdline : name);
if(display_flags&SHOW_TIME)
printf(" (u:%d, s:%d)", utime, stime);
printf("\n");
printf("%-30s %-9s %-5d %-5d %s\n", macline, user, pid, ppid, cmdline[0] ? cmdline : name);
return 0;
}
printf("%-9s %-5d %-5d %-6d %-5d", user, pid, ppid, vss / 1024, rss * 4);
if (display_flags & SHOW_CPU)
printf(" %-2d", psr);
if (display_flags & SHOW_PRIO)
printf(" %-5d %-5d %-5d %-5d", prio, nice, rtprio, sched);
if (display_flags & SHOW_POLICY) {
SchedPolicy p;
if (get_sched_policy(pid, &p) < 0)
printf(" un ");
else
printf(" %.2s ", get_sched_policy_name(p));
}
char path[PATH_MAX];
snprintf(path, sizeof(path), "/proc/%d/wchan", pid);
char wchan[10];
fd = open(path, O_RDONLY);
ssize_t wchan_len = read(fd, wchan, sizeof(wchan));
if (wchan_len == -1) {
wchan[wchan_len = 0] = '\0';
}
close(fd);
printf(" %10.*s %0*" PRIxPTR " %s ", (int) wchan_len, wchan, (int) PC_WIDTH, eip, state);
if (display_flags & SHOW_ABI) {
print_exe_abi(pid);
}
printf("%s", cmdline[0] ? cmdline : name);
if(display_flags&SHOW_TIME)
printf(" (u:%d, s:%d)", utime, stime);
printf("\n");
return 0;
}
@ -240,7 +238,7 @@ static void print_exe_abi(int pid)
}
}
void ps_threads(int pid, char *namefilter)
void ps_threads(int pid)
{
char tmp[128];
DIR *d;
@ -254,7 +252,7 @@ void ps_threads(int pid, char *namefilter)
if(isdigit(de->d_name[0])){
int tid = atoi(de->d_name);
if(tid == pid) continue;
ps_line(pid, tid, namefilter);
ps_line(pid, tid);
}
}
closedir(d);
@ -264,7 +262,6 @@ int ps_main(int argc, char **argv)
{
DIR *d;
struct dirent *de;
char *namefilter = 0;
int pidfilter = 0;
int threads = 0;
@ -290,12 +287,18 @@ int ps_main(int argc, char **argv)
display_flags |= SHOW_ABI;
} else if(!strcmp(argv[1],"--ppid")) {
ppid_filter = atoi(argv[2]);
if (ppid_filter == 0) {
fprintf(stderr, "bad ppid '%s'\n", argv[2]);
return 1;
}
argc--;
argv++;
} else if(isdigit(argv[1][0])){
pidfilter = atoi(argv[1]);
} else {
namefilter = argv[1];
pidfilter = atoi(argv[1]);
if (pidfilter == 0) {
fprintf(stderr, "bad pid '%s'\n", argv[1]);
return 1;
}
}
argc--;
argv++;
@ -315,8 +318,8 @@ int ps_main(int argc, char **argv)
if(isdigit(de->d_name[0])){
int pid = atoi(de->d_name);
if(!pidfilter || (pidfilter == pid)) {
ps_line(pid, 0, namefilter);
if(threads) ps_threads(pid, namefilter);
ps_line(pid, 0);
if(threads) ps_threads(pid);
}
}
}