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
This commit is contained in:
Denis Vlasenko 2007-11-23 03:39:45 +00:00
parent 6884f665bd
commit ff2b6d2185
3 changed files with 31 additions and 12 deletions

View File

@ -134,13 +134,15 @@ static char *get_var(const char *id, size_t idlen, struct interface_defn_t *ifd)
int i; int i;
if (strncmpz(id, "iface", idlen) == 0) { if (strncmpz(id, "iface", idlen) == 0) {
char *result; static char *label_buf;
static char label_buf[20]; //char *result;
safe_strncpy(label_buf, ifd->iface, sizeof(label_buf));
result = strchr(label_buf, ':'); free(label_buf);
if (result) { label_buf = xstrdup(ifd->iface);
*result = '\0'; // Remove virtual iface suffix - why?
} // ubuntu's ifup doesn't do this
//result = strchrnul(label_buf, ':');
//*result = '\0';
return label_buf; return label_buf;
} }
if (strncmpz(id, "label", idlen) == 0) { if (strncmpz(id, "label", idlen) == 0) {

View File

@ -11,7 +11,10 @@
#if !defined CONFIG_SYSLOGD #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
#define SYSLOG_NAMES_CONST /* uclibc is saner :) */
#include <sys/syslog.h> #include <sys/syslog.h>
#else #else

View File

@ -18,16 +18,30 @@
enum { KEY_ID = 0x414e4547 }; /* "GENA" */ enum { KEY_ID = 0x414e4547 }; /* "GENA" */
static struct shbuf_ds { struct shbuf_ds {
int32_t size; // size of data - 1 int32_t size; // size of data - 1
int32_t tail; // end of message list int32_t tail; // end of message list
char data[1]; // messages char data[1]; // messages
} *shbuf; };
// Semaphore operation structures static const struct sembuf init_sem[3] = {
static struct sembuf SMrup[1] = {{0, -1, IPC_NOWAIT | SEM_UNDO}}; // set SMrup {0, -1, IPC_NOWAIT | SEM_UNDO},
static struct sembuf SMrdn[2] = {{1, 0}, {0, +1, SEM_UNDO}}; // set SMrdn {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) ATTRIBUTE_NORETURN;
static void error_exit(const char *str) static void error_exit(const char *str)