summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko2007-09-26 10:46:18 +0000
committerDenis Vlasenko2007-09-26 10:46:18 +0000
commit3982407ba4bb39f09a0eb5873003130245ad5512 (patch)
tree53305ad44bfe47d05d944e893e0277dad624111b
parent4dd4e6d6b98001d164cddbdfa8fe90460257884a (diff)
downloadbusybox-3982407ba4bb39f09a0eb5873003130245ad5512.zip
busybox-3982407ba4bb39f09a0eb5873003130245ad5512.tar.gz
inetd: move struct fields around -> save .25 k of code
function old new delta freeconfig 75 76 +1 register_rpc 200 196 -4 dupconfig 165 159 -6 reapchild 173 166 -7 retry 93 82 -11 goaway 112 101 -11 getconfigent 1241 1222 -19 setup 645 592 -53 inetd_main 2160 2107 -53 config 1602 1518 -84 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/9 up/down: 1/-248) Total: -247 bytes text data bss dec hex filename 773951 1038 10332 785321 bfba9 busybox_old 773703 1038 10332 785073 bfab1 busybox_unstripped
-rw-r--r--networking/inetd.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/networking/inetd.c b/networking/inetd.c
index b3a00cf..b164278 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -222,6 +222,9 @@ struct BUG_too_small {
};
typedef struct servtab_t {
+ /* The most frequently referenced one: */
+ int se_fd; /* open descriptor */
+ /* NB: 'biggest fields last' saves on code size (~250 bytes) */
char *se_hostaddr; /* host address to listen on */
char *se_service; /* name of service */
char *se_proto; /* protocol used */
@@ -242,10 +245,14 @@ typedef struct servtab_t {
#ifdef INETD_FEATURE_ENABLED
const struct builtin *se_bi; /* if built-in, description */
#endif
+ int se_ctrladdr_size;
+ int se_max; /* max # of instances of this service */
+ int se_count; /* number started since se_time */
+ struct servtab_t *se_next;
+ struct timeval se_time; /* start of se_count */
char *se_server; /* server program */
#define MAXARGV 20
char *se_argv[MAXARGV + 1]; /* program arguments */
- int se_fd; /* open descriptor */
union {
struct sockaddr se_un_ctrladdr;
struct sockaddr_in se_un_ctrladdr_in;
@@ -258,11 +265,6 @@ typedef struct servtab_t {
#define se_ctrladdr_in se_un.se_un_ctrladdr_in
#define se_ctrladdr_in6 se_un.se_un_ctrladdr_in6
#define se_ctrladdr_un se_un.se_un_ctrladdr_un
- int se_ctrladdr_size;
- int se_max; /* max # of instances of this service */
- int se_count; /* number started since se_time */
- struct timeval se_time; /* start of se_count */
- struct servtab_t *se_next;
} servtab_t;
#ifdef INETD_FEATURE_ENABLED