svn commit: trunk/busybox: networking sysklogd

vda at busybox.net vda at busybox.net
Fri Nov 23 03:39:46 UTC 2007


Author: vda
Date: 2007-11-22 19:39:45 -0800 (Thu, 22 Nov 2007)
New Revision: 20484

Log:
logread: eliminate usage of data/bss
ifup: don't remove virtual iface prefixes (eth0:0)

function                                             old     new   delta
shbuf                                                  4       -      -4
SMrup                                                  6       -      -6
SMrdn                                                 12       -     -12
static.label_buf                                      20       4     -16
get_var                                              158     140     -18
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 0/2 up/down: 0/-56)             Total: -56 bytes
   text    data     bss     dec     hex filename
 783501     962    9260  793723   c1c7b busybox_old
 783483     942    9244  793669   c1c45 busybox_unstripped



Modified:
   trunk/busybox/networking/ifupdown.c
   trunk/busybox/sysklogd/logger.c
   trunk/busybox/sysklogd/logread.c


Changeset:
Modified: trunk/busybox/networking/ifupdown.c
===================================================================
--- trunk/busybox/networking/ifupdown.c	2007-11-23 00:08:54 UTC (rev 20483)
+++ trunk/busybox/networking/ifupdown.c	2007-11-23 03:39:45 UTC (rev 20484)
@@ -134,13 +134,15 @@
 	int i;
 
 	if (strncmpz(id, "iface", idlen) == 0) {
-		char *result;
-		static char label_buf[20];
-		safe_strncpy(label_buf, ifd->iface, sizeof(label_buf));
-		result = strchr(label_buf, ':');
-		if (result) {
-			*result = '\0';
-		}
+		static char *label_buf;
+		//char *result;
+
+		free(label_buf);
+		label_buf = xstrdup(ifd->iface);
+		// Remove virtual iface suffix - why?
+		// ubuntu's ifup doesn't do this
+		//result = strchrnul(label_buf, ':');
+		//*result = '\0';
 		return label_buf;
 	}
 	if (strncmpz(id, "label", idlen) == 0) {

Modified: trunk/busybox/sysklogd/logger.c
===================================================================
--- trunk/busybox/sysklogd/logger.c	2007-11-23 00:08:54 UTC (rev 20483)
+++ trunk/busybox/sysklogd/logger.c	2007-11-23 03:39:45 UTC (rev 20484)
@@ -11,7 +11,10 @@
 
 #if !defined CONFIG_SYSLOGD
 
+/* SYSLOG_NAMES defined to pull prioritynames[] and facilitynames[]
+ * from syslog.h. Grrrr - glibc puts those in _rwdata_! :( */
 #define SYSLOG_NAMES
+#define SYSLOG_NAMES_CONST /* uclibc is saner :) */
 #include <sys/syslog.h>
 
 #else

Modified: trunk/busybox/sysklogd/logread.c
===================================================================
--- trunk/busybox/sysklogd/logread.c	2007-11-23 00:08:54 UTC (rev 20483)
+++ trunk/busybox/sysklogd/logread.c	2007-11-23 03:39:45 UTC (rev 20484)
@@ -18,16 +18,30 @@
 
 enum { KEY_ID = 0x414e4547 }; /* "GENA" */
 
-static struct shbuf_ds {
+struct shbuf_ds {
 	int32_t size;           // size of data - 1
 	int32_t tail;           // end of message list
 	char data[1];           // messages
-} *shbuf;
+};
 
-// Semaphore operation structures
-static struct sembuf SMrup[1] = {{0, -1, IPC_NOWAIT | SEM_UNDO}}; // set SMrup
-static struct sembuf SMrdn[2] = {{1, 0}, {0, +1, SEM_UNDO}}; // set SMrdn
+static const struct sembuf init_sem[3] = {
+	{0, -1, IPC_NOWAIT | SEM_UNDO},
+	{1, 0}, {0, +1, SEM_UNDO}
+};
 
+struct globals {
+	struct sembuf SMrup[1]; // {0, -1, IPC_NOWAIT | SEM_UNDO},
+	struct sembuf SMrdn[2]; // {1, 0}, {0, +1, SEM_UNDO}
+	struct shbuf_ds *shbuf;
+};
+#define G (*(struct globals*)&bb_common_bufsiz1)
+#define SMrup (G.SMrup)
+#define SMrdn (G.SMrdn)
+#define shbuf (G.shbuf)
+#define INIT_G() \
+	do { \
+		memcpy(SMrup, init_sem, sizeof(init_sem)); \
+	} while (0)
 
 static void error_exit(const char *str) ATTRIBUTE_NORETURN;
 static void error_exit(const char *str)




More information about the busybox-cvs mailing list