svn commit: trunk/busybox/procps

vodz at busybox.net vodz at busybox.net
Tue Feb 14 10:36:40 UTC 2006


Author: vodz
Date: 2006-02-14 02:36:38 -0800 (Tue, 14 Feb 2006)
New Revision: 14011

Log:
restore change by Denis Vlasenko: file_to_buf must vary fast, best if inline

Modified:
   trunk/busybox/procps/top.c


Changeset:
Modified: trunk/busybox/procps/top.c
===================================================================
--- trunk/busybox/procps/top.c	2006-02-14 10:17:09 UTC (rev 14010)
+++ trunk/busybox/procps/top.c	2006-02-14 10:36:38 UTC (rev 14011)
@@ -130,9 +130,9 @@
  *
  */
 
-static int file_to_buf(char *buf, int bufsize, char *filename, int *d)
+#define file_to_buf_bufsize 80
+static inline int file_to_buf(char *buf, const char *filename, int fd)
 {
-	int fd = *d;
 	int sz;
 
 	if (fd == -1) {
@@ -142,13 +142,12 @@
 	} else {
 		lseek(fd, 0L, SEEK_SET);
 	}
-	sz = read(fd, buf, bufsize - 1);
+	sz = read(fd, buf, file_to_buf_bufsize - 1);
 	if (sz < 0) {
 		bb_perror_msg_and_die("%s", filename);
 	}
 	buf[sz] = '\0';
-	*d = fd;
-	return sz;
+	return fd;
 }
 
 static void init_Hertz_value(void)
@@ -165,11 +164,11 @@
 	if(smp_num_cpus<1) smp_num_cpus=1;
 
 	do {
-		file_to_buf(buf, sizeof(buf), "uptime", &uptime_fd);
+		uptime_fd = file_to_buf(buf, "uptime", uptime_fd);
 		up_1 = strtod(buf, 0);
-		file_to_buf(buf, sizeof(buf), "stat", &stat_fd);
+		stat_fd = file_to_buf(buf, "stat", stat_fd);
 		sscanf(buf, "cpu %lu %lu %lu %lu", &user_j, &nice_j, &sys_j, &other_j);
-		file_to_buf(buf, sizeof(buf), "uptime", &uptime_fd);
+		uptime_fd = file_to_buf(buf, "uptime", uptime_fd);
 		up_2 = strtod(buf, 0);
 	} while((long)( (up_2-up_1)*1000.0/up_1 )); /* want under 0.1% error */
 	close(uptime_fd);




More information about the busybox-cvs mailing list