aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeisuke Yasui <keisuke.yasui@toshiba.co.jp>2010-06-28 16:04:00 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-06-28 16:05:54 +0200
commitc03fb3cd7d6b41706a4ade372c5df9c6b951a51c (patch)
tree21124b2ec0addd7b64ea9319fd3bb6fca2fb787f
parentff37799dfe0e6e8fb9b971a2aeb4076d8a3784ec (diff)
downloadbusybox-w32-c03fb3cd7d6b41706a4ade372c5df9c6b951a51c.tar.gz
busybox-w32-c03fb3cd7d6b41706a4ade372c5df9c6b951a51c.tar.bz2
busybox-w32-c03fb3cd7d6b41706a4ade372c5df9c6b951a51c.zip
bootchartd: fix sample period calculations
Signed-off-by: Keisuke Yasui <keisuke.yasui@toshiba.co.jp> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--init/bootchartd.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/init/bootchartd.c b/init/bootchartd.c
index 4e15da4e8..42b98c827 100644
--- a/init/bootchartd.c
+++ b/init/bootchartd.c
@@ -197,7 +197,7 @@ static char *make_tempdir(void)
197 return tempdir; 197 return tempdir;
198} 198}
199 199
200static void do_logging(int sample_period_us) 200static void do_logging(unsigned sample_period_us)
201{ 201{
202 //# Enable process accounting if configured 202 //# Enable process accounting if configured
203 //if [ "$PROCESS_ACCOUNTING" = "yes" ]; then 203 //if [ "$PROCESS_ACCOUNTING" = "yes" ]; then
@@ -210,7 +210,7 @@ static void do_logging(int sample_period_us)
210 //FILE *proc_netdev = xfopen("proc_netdev.log", "w"); 210 //FILE *proc_netdev = xfopen("proc_netdev.log", "w");
211 FILE *proc_ps = xfopen("proc_ps.log", "w"); 211 FILE *proc_ps = xfopen("proc_ps.log", "w");
212 int look_for_login_process = (getppid() == 1); 212 int look_for_login_process = (getppid() == 1);
213 unsigned count = 60*1000*1000 / (200*1000); /* ~1 minute */ 213 unsigned count = 60*1000*1000 / sample_period_us; /* ~1 minute */
214 214
215 while (--count && !bb_got_signal) { 215 while (--count && !bb_got_signal) {
216 char *p; 216 char *p;
@@ -235,8 +235,8 @@ static void do_logging(int sample_period_us)
235 /* dump_procs saw a getty or {g,k,x}dm 235 /* dump_procs saw a getty or {g,k,x}dm
236 * stop logging in 2 seconds: 236 * stop logging in 2 seconds:
237 */ 237 */
238 if (count > 2*1000*1000 / (200*1000)) 238 if (count > 2*1000*1000 / sample_period_us)
239 count = 2*1000*1000 / (200*1000); 239 count = 2*1000*1000 / sample_period_us;
240 } 240 }
241 fflush_all(); 241 fflush_all();
242 wait_more: 242 wait_more:
@@ -325,7 +325,7 @@ static void finalize(char *tempdir, const char *prog)
325int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 325int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
326int bootchartd_main(int argc UNUSED_PARAM, char **argv) 326int bootchartd_main(int argc UNUSED_PARAM, char **argv)
327{ 327{
328 int sample_period_us; 328 unsigned sample_period_us;
329 pid_t parent_pid, logger_pid; 329 pid_t parent_pid, logger_pid;
330 smallint cmd; 330 smallint cmd;
331 enum { 331 enum {
@@ -372,6 +372,8 @@ int bootchartd_main(int argc UNUSED_PARAM, char **argv)
372 } 372 }
373 config_close(parser); 373 config_close(parser);
374 } 374 }
375 if ((int)sample_period_us <= 0)
376 sample_period_us = 1; /* prevent division by 0 */
375 377
376 /* Create logger child: */ 378 /* Create logger child: */
377 logger_pid = fork_or_rexec(argv); 379 logger_pid = fork_or_rexec(argv);