diff options
author | Keisuke Yasui <keisuke.yasui@toshiba.co.jp> | 2010-06-28 16:04:00 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-28 16:05:54 +0200 |
commit | c03fb3cd7d6b41706a4ade372c5df9c6b951a51c (patch) | |
tree | 21124b2ec0addd7b64ea9319fd3bb6fca2fb787f | |
parent | ff37799dfe0e6e8fb9b971a2aeb4076d8a3784ec (diff) | |
download | busybox-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.c | 12 |
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 | ||
200 | static void do_logging(int sample_period_us) | 200 | static 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) | |||
325 | int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 325 | int bootchartd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
326 | int bootchartd_main(int argc UNUSED_PARAM, char **argv) | 326 | int 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); |