From 60cd1fa57deeb80b7a564fd81194797b503d4846 Mon Sep 17 00:00:00 2001
From: "Kevin P. Fleming" <kpfleming@digium.com>
Date: Fri, 15 Jul 2005 22:21:31 +0000
Subject: [PATCH] clean up scheduler debugging and expose defines in the
 Makefile (bug #4703)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 Makefile |  2 +-
 sched.c  | 26 ++++++++++++++++----------
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/Makefile b/Makefile
index ba0912feb5..c4c1510c10 100755
--- a/Makefile
+++ b/Makefile
@@ -52,7 +52,7 @@ DEBUG=-g #-pg
 #endif
 
 # Optional debugging parameters
-DEBUG_THREADS = #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
+DEBUG_THREADS = #-DDUMP_SCHEDULER #-DDEBUG_SCHEDULER #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
 
 # Uncomment next one to enable ast_frame tracing (for debugging)
 TRACE_FRAMES = #-DTRACE_FRAMES
diff --git a/sched.c b/sched.c
index 9b4dc4d2a6..160637e883 100755
--- a/sched.c
+++ b/sched.c
@@ -260,6 +260,10 @@ int ast_sched_add(struct sched_context *con, int when, ast_sched_cb callback, vo
 			res = tmp->id;
 		}
 	}
+#ifdef DUMP_SCHEDULER
+	/* Dump contents of the context while we have the lock so nothing gets screwed up by accident. */
+	ast_sched_dump(con);
+#endif
 	ast_mutex_unlock(&con->lock);
 	return res;
 }
@@ -289,6 +293,10 @@ int ast_sched_del(struct sched_context *con, int id)
 		last = s;
 		s = s->next;
 	}
+#ifdef DUMP_SCHEDULER
+	/* Dump contents of the context while we have the lock so nothing gets screwed up by accident. */
+	ast_sched_dump(con);
+#endif
 	ast_mutex_unlock(&con->lock);
 	if (!s) {
 		ast_log(LOG_NOTICE, "Attempted to delete nonexistent schedule entry %d!\n", id);
@@ -300,7 +308,7 @@ int ast_sched_del(struct sched_context *con, int id)
 		return 0;
 }
 
-void ast_sched_dump(struct sched_context *con)
+void ast_sched_dump(const struct sched_context *con)
 {
 	/*
 	 * Dump the contents of the scheduler to
@@ -311,16 +319,14 @@ void ast_sched_dump(struct sched_context *con)
 	time_t s, ms;
 	gettimeofday(&tv, NULL);
 #ifdef SCHED_MAX_CACHE
-	ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%d in Q, %d Total, %d Cache)\n", 
-							con-> schedcnt, con->eventcnt - 1, con->schedccnt);
+	ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%d in Q, %d Total, %d Cache)\n", con->schedcnt, con->eventcnt - 1, con->schedccnt);
 #else
-	ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%d in Q, %d Total)\n",
-							con-> schedcnt, con->eventcnt - 1);
+	ast_log(LOG_DEBUG, "Asterisk Schedule Dump (%d in Q, %d Total)\n", con->schedcnt, con->eventcnt - 1);
 #endif
 
-	ast_log(LOG_DEBUG, "=================================================\n");
-	ast_log(LOG_DEBUG, "|ID    Callback    Data        Time  (sec:ms)   |\n");
-	ast_log(LOG_DEBUG, "+-----+-----------+-----------+-----------------+\n");
+	ast_log(LOG_DEBUG, "=============================================================\n");
+	ast_log(LOG_DEBUG, "|ID    Callback          Data              Time  (sec:ms)   |\n");
+	ast_log(LOG_DEBUG, "+-----+-----------------+-----------------+-----------------+\n");
 	q = con->schedq;
 	while(q) {
 		s =  q->when.tv_sec - tv.tv_sec;
@@ -329,7 +335,7 @@ void ast_sched_dump(struct sched_context *con)
 			ms += 1000000;
 			s--;
 		}
-		ast_log(LOG_DEBUG, "|%.4d | %p | %p | %.6ld : %.6ld |\n", 
+		ast_log(LOG_DEBUG, "|%.4d | %-15p | %-15p | %.6ld : %.6ld |\n", 
 				q->id,
 				q->callback,
 				q->data,
@@ -337,7 +343,7 @@ void ast_sched_dump(struct sched_context *con)
 				(long)ms);
 		q=q->next;
 	}
-	ast_log(LOG_DEBUG, "=================================================\n");
+	ast_log(LOG_DEBUG, "=============================================================\n");
 	
 }
 
-- 
GitLab