inetd: move struct fields around -> save .25 k of code
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 26 Sep 2007 10:46:18 +0000 (10:46 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 26 Sep 2007 10:46:18 +0000 (10:46 -0000)
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

networking/inetd.c

index b3a00cfa52816142129499cd81f15132b59a524b..b164278820a09b044ef9438e0eac78943bb312ee 100644 (file)
@@ -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