mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
tools/vm/page_owner: support debug log to avoid huge log print
As normal usage, tool will print huge parser log and spend a lot of time printing, so it would be preferable add "-d" debug control to avoid this problem. Link: https://lkml.kernel.org/r/1649672446-5685-1-git-send-email-baihaowen@meizu.com Signed-off-by: Haowen Bai <baihaowen@meizu.com> Cc: Chongxi Zhao <zhaochongxi2019@email.szu.edu.cn> Cc: Jiajian Ye <yejiajian2018@email.szu.edu.cn> Cc: Shenghong Han <hanshenghong2019@email.szu.edu.cn> Cc: Yinan Zhang <zhangyinan2019@email.szu.edu.cn> Cc: Yixuan Cao <caoyixuan2019@email.szu.edu.cn> Cc: Yongqiang Liu <liuyongqiang13@huawei.com> Cc: Yuhong Feng <yuhongf@szu.edu.cn> Cc: Sean Anderson <seanga2@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
ebbeae3638
commit
a72469aa59
1 changed files with 20 additions and 8 deletions
|
@ -87,6 +87,7 @@ static int list_size;
|
|||
static int max_size;
|
||||
static int cull;
|
||||
static int filter;
|
||||
static bool debug_on;
|
||||
|
||||
int read_block(char *buf, int buf_size, FILE *fin)
|
||||
{
|
||||
|
@ -211,7 +212,8 @@ static int search_pattern(regex_t *pattern, char *pattern_str, char *buf)
|
|||
|
||||
err = regexec(pattern, buf, 2, pmatch, REG_NOTBOL);
|
||||
if (err != 0 || pmatch[1].rm_so == -1) {
|
||||
fprintf(stderr, "no matching pattern in %s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "no matching pattern in %s\n", buf);
|
||||
return -1;
|
||||
}
|
||||
val_len = pmatch[1].rm_eo - pmatch[1].rm_so;
|
||||
|
@ -276,7 +278,8 @@ static int get_page_num(char *buf)
|
|||
errno = 0;
|
||||
order_val = strtol(order_str, &endptr, 10);
|
||||
if (order_val > 64 || errno != 0 || endptr == order_str || *endptr != '\0') {
|
||||
fprintf(stderr, "wrong order in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong order in follow buf:\n%s\n", buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -293,7 +296,8 @@ static pid_t get_pid(char *buf)
|
|||
errno = 0;
|
||||
pid = strtol(pid_str, &endptr, 10);
|
||||
if (errno != 0 || endptr == pid_str || *endptr != '\0') {
|
||||
fprintf(stderr, "wrong/invalid pid in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong/invalid pid in follow buf:\n%s\n", buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -311,7 +315,8 @@ static pid_t get_tgid(char *buf)
|
|||
errno = 0;
|
||||
tgid = strtol(tgid_str, &endptr, 10);
|
||||
if (errno != 0 || endptr == tgid_str || *endptr != '\0') {
|
||||
fprintf(stderr, "wrong/invalid tgid in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong/invalid tgid in follow buf:\n%s\n", buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -329,7 +334,8 @@ static __u64 get_ts_nsec(char *buf)
|
|||
errno = 0;
|
||||
ts_nsec = strtoull(ts_nsec_str, &endptr, 10);
|
||||
if (errno != 0 || endptr == ts_nsec_str || *endptr != '\0') {
|
||||
fprintf(stderr, "wrong ts_nsec in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong ts_nsec in follow buf:\n%s\n", buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -346,7 +352,8 @@ static __u64 get_free_ts_nsec(char *buf)
|
|||
errno = 0;
|
||||
free_ts_nsec = strtoull(free_ts_nsec_str, &endptr, 10);
|
||||
if (errno != 0 || endptr == free_ts_nsec_str || *endptr != '\0') {
|
||||
fprintf(stderr, "wrong free_ts_nsec in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong free_ts_nsec in follow buf:\n%s\n", buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -362,7 +369,8 @@ static char *get_comm(char *buf)
|
|||
search_pattern(&comm_pattern, comm_str, buf);
|
||||
errno = 0;
|
||||
if (errno != 0) {
|
||||
fprintf(stderr, "wrong comm in follow buf:\n%s\n", buf);
|
||||
if (debug_on)
|
||||
fprintf(stderr, "wrong comm in follow buf:\n%s\n", buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -594,6 +602,7 @@ static void usage(void)
|
|||
"-a\t\tSort by memory allocate time.\n"
|
||||
"-r\t\tSort by memory release time.\n"
|
||||
"-f\t\tFilter out the information of blocks whose memory has been released.\n"
|
||||
"-d\t\tPrint debug information.\n"
|
||||
"--pid <pidlist>\tSelect by pid. This selects the information of blocks whose process ID numbers appear in <pidlist>.\n"
|
||||
"--tgid <tgidlist>\tSelect by tgid. This selects the information of blocks whose Thread Group ID numbers appear in <tgidlist>.\n"
|
||||
"--name <cmdlist>\n\t\tSelect by command name. This selects the information of blocks whose command name appears in <cmdlist>.\n"
|
||||
|
@ -618,11 +627,14 @@ int main(int argc, char **argv)
|
|||
{ 0, 0, 0, 0},
|
||||
};
|
||||
|
||||
while ((opt = getopt_long(argc, argv, "afmnprstP", longopts, NULL)) != -1)
|
||||
while ((opt = getopt_long(argc, argv, "adfmnprstP", longopts, NULL)) != -1)
|
||||
switch (opt) {
|
||||
case 'a':
|
||||
set_single_cmp(compare_ts, SORT_ASC);
|
||||
break;
|
||||
case 'd':
|
||||
debug_on = true;
|
||||
break;
|
||||
case 'f':
|
||||
filter = filter | FILTER_UNRELEASE;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue