[MINOR] show sess: report number of calls to each task
For debugging purposes, it can be useful to know how many times each
task has been called.
diff --git a/include/proto/task.h b/include/proto/task.h
index 19aab61..62f83e3 100644
--- a/include/proto/task.h
+++ b/include/proto/task.h
@@ -173,6 +173,7 @@
t->rq.node.leaf_p = NULL;
t->state = TASK_SLEEPING;
t->nice = 0;
+ t->calls = 0;
return t;
}
diff --git a/include/types/task.h b/include/types/task.h
index 13e2aac..641cb17 100644
--- a/include/types/task.h
+++ b/include/types/task.h
@@ -50,6 +50,7 @@
struct eb32_node rq; /* ebtree node used to hold the task in the run queue */
int state; /* task state : bit field of TASK_* */
int expire; /* next expiration date for this task, in ticks */
+ unsigned int calls; /* number of times ->process() was called */
struct task * (*process)(struct task *t); /* the function which processes the task */
void *context; /* the task's context */
int nice; /* the task's current nice value from -1024 to +1024 */
diff --git a/src/dumpstats.c b/src/dumpstats.c
index fd38f95..2178f79 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -1209,10 +1209,11 @@
}
chunk_printf(&msg, sizeof(trash),
- " si=(%d,%d) as=%d ts=%02x age=%s",
+ " si=(%d,%d) as=%d ts=%02x age=%s calls=%d",
curr_sess->si[0].state, curr_sess->si[1].state,
curr_sess->ana_state, curr_sess->task->state,
- human_time(now.tv_sec - curr_sess->logs.tv_accept.tv_sec, 1));
+ human_time(now.tv_sec - curr_sess->logs.tv_accept.tv_sec, 1),
+ curr_sess->task->calls);
if (task_in_rq(curr_sess->task))
chunk_printf(&msg, sizeof(trash), " run(nice=%d)\n", curr_sess->task->nice);
diff --git a/src/task.c b/src/task.c
index 95a00fa..5336c20 100644
--- a/src/task.c
+++ b/src/task.c
@@ -219,6 +219,7 @@
/* This is an optimisation to help the processor's branch
* predictor take this most common call.
*/
+ t->calls++;
if (likely(t->process == process_session))
t = process_session(t);
else