[BugFix]Command "critmon" error
Command "critmon" has some format errors and information errors, such as: PRE-EMPTION CALLER CSECTION CALLER RUN TIME PID DESCRIPTION 1.679000000 3.704000000 None None 0 CPU0 IDLE 0.002000000 0.003000000 None None 1 CPU1 IDLE 0.000000000 0.000000000 None None 2 CPU2 IDLE 0.000000000 0.000000000 None None 3 CPU3 IDLE 0.001000000 0.001000000 None None 4 hpwork 0.002000000 0.006000000 None None 5 nsh_main 0.000000000 0.000000000 None None 6 critmon After bug fix: PRE-EMPTION CALLER CSECTION CALLER RUN TIME PID DESCRIPTION None None ---------------- ---------------- ---- CPU 0 None None ---------------- ---------------- ---- CPU 1 None None ---------------- ---------------- ---- CPU 2 None None ---------------- ---------------- ---- CPU 3 None None 0.238000000 6.982000000 0 CPU0 IDLE None None 0.461000000 13.089000000 1 CPU1 IDLE None None 0.000000000 0.000000000 2 CPU2 IDLE None None 0.000000000 0.000000000 3 CPU3 IDLE None None 0.000000000 0.001000000 4 hpwork None None 0.000000000 0.010000000 5 nsh_main None None 0.000000000 0.000000000 46 critmon Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
This commit is contained in:
parent
c2d478a93a
commit
f638a21f89
@ -120,7 +120,7 @@ static int critmon_process_directory(FAR struct dirent *entryp)
|
|||||||
FAR char *maxcrit;
|
FAR char *maxcrit;
|
||||||
FAR char *maxrun;
|
FAR char *maxrun;
|
||||||
FAR char *runtime;
|
FAR char *runtime;
|
||||||
FAR char *endptr;
|
FAR char *pos;
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
int len;
|
int len;
|
||||||
int ret;
|
int ret;
|
||||||
@ -218,53 +218,56 @@ static int critmon_process_directory(FAR struct dirent *entryp)
|
|||||||
* Output Format: X.XXXXXXXXX X.XXXXXXXXX X.XXXXXXXXX NNNNN <name>
|
* Output Format: X.XXXXXXXXX X.XXXXXXXXX X.XXXXXXXXX NNNNN <name>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
maxpreemp = g_critmon.line;
|
pos = critmon_isolate_value(g_critmon.line);
|
||||||
maxcrit = strchr(g_critmon.line, ',');
|
|
||||||
|
|
||||||
if (maxcrit != NULL)
|
#if CONFIG_SCHED_CRITMONITOR_MAXTIME_PREEMPTION >= 0
|
||||||
|
maxpreemp = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
*maxcrit++ = '\0';
|
*pos++ = '\0';
|
||||||
|
|
||||||
maxrun = strchr(maxcrit, ',');
|
|
||||||
if (maxrun != NULL)
|
|
||||||
{
|
|
||||||
*maxrun++ = '\0';
|
|
||||||
|
|
||||||
runtime = strchr(maxrun, ',');
|
|
||||||
if (runtime != NULL)
|
|
||||||
{
|
|
||||||
*runtime++ = '\0';
|
|
||||||
endptr = strchr(runtime, '\n');
|
|
||||||
if (endptr != NULL)
|
|
||||||
{
|
|
||||||
*endptr = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
runtime = "None";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
maxrun = "None";
|
|
||||||
runtime = "None";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
#else
|
||||||
|
maxpreemp = "None";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_SCHED_CRITMONITOR_MAXTIME_CSECTION >= 0
|
||||||
|
maxcrit = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
maxcrit = "None";
|
*pos++ = '\0';
|
||||||
maxrun = "None";
|
|
||||||
runtime = "None";
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
maxcrit = "None";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_SCHED_CRITMONITOR_MAXTIME_THREAD >= 0
|
||||||
|
maxrun = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
|
{
|
||||||
|
*pos++ = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
runtime = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
|
{
|
||||||
|
*pos++ = '\0';
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
maxrun = "None";
|
||||||
|
runtime = "None";
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Finally, output the stack info that we gleaned from the procfs */
|
/* Finally, output the stack info that we gleaned from the procfs */
|
||||||
|
|
||||||
#if CONFIG_TASK_NAME_SIZE > 0
|
#if CONFIG_TASK_NAME_SIZE > 0
|
||||||
printf("%11s %11s %11s %-16s %-5s %s\n",
|
printf("%-29s %-29s %-16s %-16s %-5s %s\n",
|
||||||
maxpreemp, maxcrit, maxrun, runtime, entryp->d_name, name);
|
maxpreemp, maxcrit, maxrun, runtime, entryp->d_name, name);
|
||||||
#else
|
#else
|
||||||
printf("%11s %11s %11s %16s %5s\n",
|
printf("%-29s %-29s %16s %16s %5s\n",
|
||||||
maxpreemp, maxcrit, maxrun, runtime, entryp->d_name);
|
maxpreemp, maxcrit, maxrun, runtime, entryp->d_name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -320,7 +323,7 @@ static void critmon_global_crit(void)
|
|||||||
FAR char *cpu;
|
FAR char *cpu;
|
||||||
FAR char *maxpreemp;
|
FAR char *maxpreemp;
|
||||||
FAR char *maxcrit;
|
FAR char *maxcrit;
|
||||||
FAR char *endptr;
|
FAR char *pos;
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
int errcode;
|
int errcode;
|
||||||
int ret;
|
int ret;
|
||||||
@ -357,36 +360,40 @@ static void critmon_global_crit(void)
|
|||||||
* Output Format: X.XXXXXXXXX X.XXXXXXXXX CPU X
|
* Output Format: X.XXXXXXXXX X.XXXXXXXXX CPU X
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cpu = g_critmon.line;
|
pos = critmon_isolate_value(g_critmon.line);
|
||||||
maxpreemp = strchr(g_critmon.line, ',');
|
cpu = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
|
{
|
||||||
|
*pos++ = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
if (maxpreemp != NULL)
|
#if CONFIG_SCHED_CRITMONITOR_MAXTIME_PREEMPTION >= 0
|
||||||
|
maxpreemp = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
*maxpreemp++ = '\0';
|
*pos++ = '\0';
|
||||||
maxcrit = strchr(maxpreemp, ',');
|
|
||||||
if (maxcrit != NULL)
|
|
||||||
{
|
|
||||||
*maxcrit++ = '\0';
|
|
||||||
endptr = strchr(maxcrit, '\n');
|
|
||||||
if (endptr != NULL)
|
|
||||||
{
|
|
||||||
*endptr = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
maxcrit = "None";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
#else
|
||||||
|
maxpreemp = "None";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_SCHED_CRITMONITOR_MAXTIME_CSECTION >= 0
|
||||||
|
maxcrit = pos;
|
||||||
|
pos = strchr(pos, ',');
|
||||||
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
maxpreemp = "None";
|
*pos++ = '\0';
|
||||||
maxcrit = "None";
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
maxcrit = "None";
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Finally, output the stack info that we gleaned from the procfs */
|
/* Finally, output the stack info that we gleaned from the procfs */
|
||||||
|
|
||||||
printf("%11s %11s ----------- ---------------- ---- CPU %s\n",
|
printf("%-29s %-29s ---------------- ---------------- ---- "
|
||||||
|
"CPU %s\n",
|
||||||
maxpreemp, maxcrit, cpu);
|
maxpreemp, maxcrit, cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,10 +417,11 @@ static int critmon_list_once(void)
|
|||||||
/* Output a Header */
|
/* Output a Header */
|
||||||
|
|
||||||
#if CONFIG_TASK_NAME_SIZE > 0
|
#if CONFIG_TASK_NAME_SIZE > 0
|
||||||
printf("PRE-EMPTION CSECTION RUN TIME "
|
printf("PRE-EMPTION CALLER CSECTION CALLER "
|
||||||
"PID DESCRIPTION\n");
|
"RUN TIME PID DESCRIPTION\n");
|
||||||
#else
|
#else
|
||||||
printf("PRE-EMPTION CSECTION RUN TIME PID\n");
|
printf("PRE-EMPTION CALLER CSECTION CALLER "
|
||||||
|
"RUN TIME PID\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Should global usage first */
|
/* Should global usage first */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user