Signed-off-by: Ildar Muslukhov <[email protected]>
---
include/shm.h | 1 +
log.c | 16 +++++++++++++---
seed.c | 4 +++-
syscall.c | 1 +
watchdog.c | 12 +++++++++++-
5 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/include/shm.h b/include/shm.h
index 0493eb0..5e7f2e8 100644
--- a/include/shm.h
+++ b/include/shm.h
@@ -16,6 +16,7 @@ struct shm_s {
unsigned long failures;
unsigned long previous_count;
unsigned long child_syscall_count[MAX_NR_CHILDREN];
+ unsigned long child_syscall_count_after_reseed[MAX_NR_CHILDREN];
unsigned long regenerate;
unsigned int seed;
diff --git a/log.c b/log.c
index 705153c..84743c5 100644
--- a/log.c
+++ b/log.c
@@ -17,6 +17,7 @@
FILE *mainlogfile;
bool logfiles_opened = FALSE;
+bool log_no_prefix = FALSE; /* Controls prefix output in output function per
process */
void open_logfiles(void)
{
@@ -271,7 +272,10 @@ void output(unsigned char level, const char *fmt, ...)
/* stdout output if needed */
if (quiet_level > level) {
- printf("%s %s", prefix, outputbuf);
+ if (!log_no_prefix)
+ printf("%s %s", prefix, outputbuf);
+ else
+ printf("%s", outputbuf);
(void)fflush(stdout);
}
@@ -301,9 +305,15 @@ void output(unsigned char level, const char *fmt, ...)
}
}
monobuf[j] = '\0';
- fprintf(handle, "%s %s", prefix, monobuf);
+ if (!log_no_prefix)
+ fprintf(handle, "%s %s", prefix, monobuf);
+ else
+ fprintf(handle, "%s", monobuf);
} else {
- fprintf(handle, "%s %s", prefix, outputbuf);
+ if (!log_no_prefix)
+ fprintf(handle, "%s %s", prefix, outputbuf);
+ else
+ fprintf(handle, "%s", outputbuf);
}
(void)fflush(handle);
diff --git a/seed.c b/seed.c
index a9c6f6a..fd8e939 100644
--- a/seed.c
+++ b/seed.c
@@ -70,8 +70,10 @@ unsigned int init_seed(unsigned int seedparam)
void set_seed(unsigned int pidslot)
{
pid_t pid = getpid();
- if ((pid != watchdog_pid) && (pid != initpid) && (pid != mainpid))
+ if ((pid != watchdog_pid) && (pid != initpid) && (pid != mainpid)) {
output(0, "Setting seed: %u\n", shm->seed + (pidslot + 1));
+ shm->child_syscall_count_after_reseed[pidslot] = 0;
+ }
srand(shm->seed + (pidslot + 1));
shm->seeds[pidslot] = shm->seed;
}
diff --git a/syscall.c b/syscall.c
index cb2defd..6d0dc35 100644
--- a/syscall.c
+++ b/syscall.c
@@ -142,6 +142,7 @@ static unsigned long do_syscall(int childno, int
*errno_saved)
if (pidslot != PIDSLOT_NOT_FOUND) {
shm->total_syscalls_done++;
shm->child_syscall_count[pidslot]++;
+ shm->child_syscall_count_after_reseed[pidslot]++;
(void)gettimeofday(&shm->tv[pidslot], NULL);
}
diff --git a/watchdog.c b/watchdog.c
index 268c401..4c2bb3b 100644
--- a/watchdog.c
+++ b/watchdog.c
@@ -21,6 +21,7 @@
#include "child.h"
pid_t watchdog_pid;
+extern bool log_no_prefix;
static int check_shm_sanity(void)
{
@@ -274,6 +275,7 @@ static void watchdog(void)
static unsigned long lastcount = 0;
bool watchdog_exit = FALSE;
int ret = 0;
+ unsigned int j;
output(0, "Watchdog is alive. (pid:%d)\n", watchdog_pid);
@@ -305,9 +307,17 @@ static void watchdog(void)
if (shm->total_syscalls_done > 1) {
if (shm->total_syscalls_done - lastcount >
10000) {
- output(0, "%ld iterations. [F:%ld
S:%ld]\n",
+ output(0, "%ld iterations. [F:%ld
S:%ld] ",
shm->total_syscalls_done,
shm->failures, shm->successes);
lastcount = shm->total_syscalls_done;
+ /* output syscall per child after
reseed */
+ log_no_prefix = TRUE;
+ output(0, "{");
+ for_each_pidslot(j) {
+ output(0, "C%d:%d;", j,
shm->child_syscall_count_after_reseed[j]);
+ }
+ output(0, "}\n");
+ log_no_prefix = FALSE;
}
}
}
--
1.8.4
--
To unsubscribe from this list: send the line "unsubscribe trinity" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html