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:
Keisuke Yasui 2010-06-28 16:04:00 +02:00 committed by Denys Vlasenko
parent ff37799dfe
commit c03fb3cd7d

View File

@ -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);