PERFORCE change 164729 for review

Gabor Pali pgj at FreeBSD.org
Fri Jun 19 18:55:25 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=164729

Change 164729 by pgj at petymeg-current on 2009/06/19 18:54:42

	nettop:
	  - Fix a memory leak
	  - Ask netstat info only once per second

Affected files ...

.. //depot/projects/soc2009/pgj_libstat/src/usr.bin/nettop/main.c#2 edit

Differences ...

==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/nettop/main.c#2 (text+ko) ====

@@ -15,7 +15,7 @@
 	char ch;
 	char running = 1;
 	struct socket_type_list *local, *inet;
-	int st_flags;
+	int st_flags, refresh = 0;
 
 	initscr();
 	clear();
@@ -30,18 +30,23 @@
 			running = 0;
 			break;
 		}
-		/* Get data. */
-		local = netstat_stl_alloc();
-		inet = netstat_stl_alloc();
-		st_flags = NETSTAT_SOCKET_ALL;
-		netstat_socket(PF_LOCAL, 0, 0, local, st_flags, NULL);
-		netstat_socket(PF_INET, 0, 0, inet, st_flags, NULL);
-		netstat_socket(PF_INET6, 0, 0, inet, st_flags, NULL);
-		/* Render screen. */
-		clear();
-		screen(local, inet);
-		refresh();
-		
+		if (refresh == 0) {
+			/* Get data. */
+			local = netstat_stl_alloc();
+			inet = netstat_stl_alloc();
+			st_flags = NETSTAT_SOCKET_ALL;
+			netstat_socket(PF_LOCAL, 0, 0, local, st_flags, NULL);
+			netstat_socket(PF_INET, 0, 0, inet, st_flags, NULL);
+			netstat_socket(PF_INET6, 0, 0, inet, st_flags, NULL);
+			/* Render screen. */
+			clear();
+			screen(local, inet);
+			refresh();
+			netstat_stl_free(local);
+			netstat_stl_free(inet);
+			refresh = 3; /* Refresh it only in every 4th cycle */
+		}
+		refresh--;
 		usleep(250);
 	}
 	endwin();


More information about the p4-projects mailing list