summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_taskqueue.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-10-24 15:57:27 +0000
committerjhb <jhb@FreeBSD.org>2005-10-24 15:57:27 +0000
commit14d19bb6947ed5e8b51de47f9a047bbb00a514ba (patch)
tree53bbda7a5ef7664791d92bea4da1982dedf711b3 /sys/kern/subr_taskqueue.c
parent3f6e2e8e0bd6fc55341232e15875b18071c1d023 (diff)
downloadFreeBSD-src-14d19bb6947ed5e8b51de47f9a047bbb00a514ba.zip
FreeBSD-src-14d19bb6947ed5e8b51de47f9a047bbb00a514ba.tar.gz
Spell hierarchy correctly in comments.
Submitted by: Wojciech A. Koszek dunstan at freebsd dot czest dot pl
Diffstat (limited to 'sys/kern/subr_taskqueue.c')
-rw-r--r--sys/kern/subr_taskqueue.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c
index 9622098..4ae91e7 100644
--- a/sys/kern/subr_taskqueue.c
+++ b/sys/kern/subr_taskqueue.c
@@ -37,9 +37,16 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/proc.h>
+#include <sys/sysctl.h>
#include <sys/taskqueue.h>
+#include <sys/time.h>
#include <sys/unistd.h>
+int tq_in;
+SYSCTL_INT(_kern, OID_AUTO, tq_in, CTLFLAG_RD, &tq_in, 0, "");
+int tq_out;
+SYSCTL_INT(_kern, OID_AUTO, tq_out, CTLFLAG_RD, &tq_out, 0, "");
+
static MALLOC_DEFINE(M_TASKQUEUE, "taskqueue", "Task Queues");
static void *taskqueue_giant_ih;
static void *taskqueue_ih;
@@ -166,6 +173,9 @@ taskqueue_enqueue(struct taskqueue *queue, struct task *task)
return 0;
}
+ getnanotime(&task->ta_queuetime);
+ tq_in++;
+
/*
* Optimise the case when all tasks have the same priority.
*/
@@ -197,6 +207,7 @@ void
taskqueue_run(struct taskqueue *queue)
{
struct task *task;
+ struct timespec tv;
int owned, pending;
owned = mtx_owned(&queue->tq_mutex);
@@ -212,8 +223,16 @@ taskqueue_run(struct taskqueue *queue)
pending = task->ta_pending;
task->ta_pending = 0;
queue->tq_running = task;
+ tq_out++;
mtx_unlock(&queue->tq_mutex);
+ getnanotime(&tv);
+ timespecsub(&tv, &task->ta_queuetime);
+ if (tv.tv_nsec >= 0500000000) {
+ printf("taskqueue_run: warning, queue time of %d.%09ld "
+ "for context %p\n", tv.tv_sec, tv.tv_nsec,
+ task->ta_func);
+ }
task->ta_func(task->ta_context, pending);
mtx_lock(&queue->tq_mutex);
OpenPOWER on IntegriCloud