[asterisk-commits] russell: trunk r124023 - in /trunk: main/timing.c res/res_timing_pthread.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 19 13:30:50 CDT 2008


Author: russell
Date: Thu Jun 19 13:30:49 2008
New Revision: 124023

URL: http://svn.digium.com/view/asterisk?view=rev&rev=124023
Log:
- Make res_timing_pthread allow a max rate of 100/sec instead of 50/sec
- change the "timing test" CLI command to let you specify a timing rate to test

Modified:
    trunk/main/timing.c
    trunk/res/res_timing_pthread.c

Modified: trunk/main/timing.c
URL: http://svn.digium.com/view/asterisk/trunk/main/timing.c?view=diff&rev=124023&r1=124022&r2=124023
==============================================================================
--- trunk/main/timing.c (original)
+++ trunk/main/timing.c Thu Jun 19 13:30:49 2008
@@ -202,17 +202,33 @@
 {
 	int fd, count = 0;
 	struct timeval start, end;
+	unsigned int test_rate = 50;
 
 	switch (cmd) {
 	case CLI_INIT:
 		e->command = "timing test";
-		e->usage = "Usage: timing test\n";
+		e->usage = "Usage: timing test <rate>\n"
+		           "   Test a timer with a specified rate, 100/sec by default.\n"
+		           "";
 		return NULL;
 	case CLI_GENERATE:
 		return NULL;
 	}
 
-	ast_cli(a->fd, "Attempting to test a timer with 50 ticks per second ...\n");
+	if (a->argc != 2 && a->argc != 3) {
+		return CLI_SHOWUSAGE;
+	}
+
+	if (a->argc == 3) {
+		unsigned int rate;
+		if (sscanf(a->argv[2], "%u", &rate) == 1) {
+			test_rate = rate;
+		} else {
+			ast_cli(a->fd, "Invalid rate '%s', using default of %u\n", a->argv[2], test_rate);	
+		}
+	}
+
+	ast_cli(a->fd, "Attempting to test a timer with %u ticks per second ...\n", test_rate);
 
 	if ((fd = ast_timer_open()) == -1) {
 		ast_cli(a->fd, "Failed to open timing fd\n");
@@ -221,7 +237,7 @@
 
 	start = ast_tvnow();
 
-	ast_timer_set_rate(fd, 50);
+	ast_timer_set_rate(fd, test_rate);
 
 	while (ast_tvdiff_ms((end = ast_tvnow()), start) < 1000) {
 		int res;

Modified: trunk/res/res_timing_pthread.c
URL: http://svn.digium.com/view/asterisk/trunk/res/res_timing_pthread.c?view=diff&rev=124023&r1=124022&r2=124023
==============================================================================
--- trunk/res/res_timing_pthread.c (original)
+++ trunk/res/res_timing_pthread.c Thu Jun 19 13:30:49 2008
@@ -57,9 +57,8 @@
 	.timer_get_event = pthread_timer_get_event,
 };
 
-/* 1 tick / 20 ms */
-#define TIMING_INTERVAL 20
-#define MAX_RATE 50
+/* 1 tick / 10 ms */
+#define MAX_RATE 100
 
 static struct ao2_container *pthread_timers;
 #define PTHREAD_TIMER_BUCKETS 563
@@ -412,9 +411,9 @@
 	while (!timing_thread.stop) {
 		struct timespec ts = { 0, };
 
-		ao2_callback(pthread_timers, 0, run_timer, NULL);
-
-		next_wakeup = ast_tvadd(next_wakeup, ast_tv(0, 10000));
+		ao2_callback(pthread_timers, OBJ_NODATA, run_timer, NULL);
+
+		next_wakeup = ast_tvadd(next_wakeup, ast_tv(0, 5000));
 
 		ts.tv_sec = next_wakeup.tv_sec;
 		ts.tv_nsec = next_wakeup.tv_usec * 1000;




More information about the asterisk-commits mailing list