bootchartd: fix sample period calculations
Signed-off-by: Keisuke Yasui <keisuke.yasui@toshiba.co.jp> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ff37799dfe
commit
c03fb3cd7d
@ -197,7 +197,7 @@ static char *make_tempdir(void)
|
|||||||
return tempdir;
|
return tempdir;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_logging(int sample_period_us)
|
static void do_logging(unsigned sample_period_us)
|
||||||
{
|
{
|
||||||
//# Enable process accounting if configured
|
//# Enable process accounting if configured
|
||||||
//if [ "$PROCESS_ACCOUNTING" = "yes" ]; then
|
//if [ "$PROCESS_ACCOUNTING" = "yes" ]; then
|
||||||
@ -210,7 +210,7 @@ static void do_logging(int sample_period_us)
|
|||||||
//FILE *proc_netdev = xfopen("proc_netdev.log", "w");
|
//FILE *proc_netdev = xfopen("proc_netdev.log", "w");
|
||||||
FILE *proc_ps = xfopen("proc_ps.log", "w");
|
FILE *proc_ps = xfopen("proc_ps.log", "w");
|
||||||
int look_for_login_process = (getppid() == 1);
|
int look_for_login_process = (getppid() == 1);
|
||||||
unsigned count = 60*1000*1000 / (200*1000); /* ~1 minute */
|
unsigned count = 60*1000*1000 / sample_period_us; /* ~1 minute */
|
||||||
|
|
||||||
while (--count && !bb_got_signal) {
|
while (--count && !bb_got_signal) {
|
||||||
char *p;
|
char *p;
|
||||||
@ -235,8 +235,8 @@ static void do_logging(int sample_period_us)
|
|||||||
/* dump_procs saw a getty or {g,k,x}dm
|
/* dump_procs saw a getty or {g,k,x}dm
|
||||||
* stop logging in 2 seconds:
|
* stop logging in 2 seconds:
|
||||||
*/
|
*/
|
||||||
if (count > 2*1000*1000 / (200*1000))
|
if (count > 2*1000*1000 / sample_period_us)
|
||||||
count = 2*1000*1000 / (200*1000);
|
count = 2*1000*1000 / sample_period_us;
|
||||||
}
|
}
|
||||||
fflush_all();
|
fflush_all();
|
||||||
wait_more:
|
wait_more:
|
||||||
@ -325,7 +325,7 @@ static void finalize(char *tempdir, const char *prog)
|
|||||||
int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int bootchartd_main(int argc UNUSED_PARAM, char **argv)
|
int bootchartd_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
int sample_period_us;
|
unsigned sample_period_us;
|
||||||
pid_t parent_pid, logger_pid;
|
pid_t parent_pid, logger_pid;
|
||||||
smallint cmd;
|
smallint cmd;
|
||||||
enum {
|
enum {
|
||||||
@ -372,6 +372,8 @@ int bootchartd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
config_close(parser);
|
config_close(parser);
|
||||||
}
|
}
|
||||||
|
if ((int)sample_period_us <= 0)
|
||||||
|
sample_period_us = 1; /* prevent division by 0 */
|
||||||
|
|
||||||
/* Create logger child: */
|
/* Create logger child: */
|
||||||
logger_pid = fork_or_rexec(argv);
|
logger_pid = fork_or_rexec(argv);
|
||||||
|
Loading…
Reference in New Issue
Block a user