summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2018-02-02 18:10:45 +0000
committermav <mav@FreeBSD.org>2018-02-02 18:10:45 +0000
commit9fe2e9be39c90da96e7160119c9e641f079824d9 (patch)
tree5b7f8fcd78b69ae3755c6f7e708c8d87fbc0489c
parent3806fc30e4d00ce85f6786a5a9b3ea7f2ed15d07 (diff)
downloadFreeBSD-src-9fe2e9be39c90da96e7160119c9e641f079824d9.zip
FreeBSD-src-9fe2e9be39c90da96e7160119c9e641f079824d9.tar.gz
Partial MFC of r311039 (by sbruno):
- add INVARIANTS debugging hooks to gtaskqueue enqueue (mmacy)
-rw-r--r--sys/kern/subr_gtaskqueue.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/kern/subr_gtaskqueue.c b/sys/kern/subr_gtaskqueue.c
index ab452e4..c5d6e28 100644
--- a/sys/kern/subr_gtaskqueue.c
+++ b/sys/kern/subr_gtaskqueue.c
@@ -101,6 +101,15 @@ struct gtaskqueue {
} while (0)
#define TQ_ASSERT_UNLOCKED(tq) mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED)
+#ifdef INVARIANTS
+static void
+gtask_dump(struct gtask *gtask)
+{
+ printf("gtask: %p ta_flags=%x ta_priority=%d ta_func=%p ta_context=%p\n",
+ gtask, gtask->ta_flags, gtask->ta_priority, gtask->ta_func, gtask->ta_context);
+}
+#endif
+
static __inline int
TQ_SLEEP(struct gtaskqueue *tq, void *p, struct mtx *m, int pri, const char *wm,
int t)
@@ -174,6 +183,12 @@ gtaskqueue_free(struct gtaskqueue *queue)
int
grouptaskqueue_enqueue(struct gtaskqueue *queue, struct gtask *gtask)
{
+#ifdef INVARIANTS
+ if (queue == NULL) {
+ gtask_dump(gtask);
+ panic("queue == NULL");
+ }
+#endif
TQ_LOCK(queue);
if (gtask->ta_flags & TASK_ENQUEUED) {
TQ_UNLOCK(queue);
OpenPOWER on IntegriCloud