linux/include
Arnaldo Carvalho de Melo 46ca5f5dc4 [XFRM]: Pack struct xfrm_policy
[acme@newtoy net-2.6.20]$ pahole net/ipv4/tcp.o xfrm_policy
/* /pub/scm/linux/kernel/git/acme/net-2.6.20/include/linux/security.h:67 */
struct xfrm_policy {
        struct xfrm_policy *       next;                 /*     0     4 */
        struct hlist_node          bydst;                /*     4     8 */
        struct hlist_node          byidx;                /*    12     8 */
        rwlock_t                   lock;                 /*    20    36 */
        atomic_t                   refcnt;               /*    56     4 */
        struct timer_list          timer;                /*    60    24 */
        u8                         type;                 /*    84     1 */

        /* XXX 3 bytes hole, try to pack */

        u32                        priority;             /*    88     4 */
        u32                        index;                /*    92     4 */
        struct xfrm_selector       selector;             /*    96    56 */
        struct xfrm_lifetime_cfg   lft;                  /*   152    64 */
        struct xfrm_lifetime_cur   curlft;               /*   216    32 */
        struct dst_entry *         bundles;              /*   248     4 */
        __u16                      family;               /*   252     2 */
        __u8                       action;               /*   254     1 */
        __u8                       flags;                /*   255     1 */
        __u8                       dead;                 /*   256     1 */
        __u8                       xfrm_nr;              /*   257     1 */

        /* XXX 2 bytes hole, try to pack */

        struct xfrm_sec_ctx *      security;             /*   260     4 */
        struct xfrm_tmpl           xfrm_vec[6];          /*   264   360 */
}; /* size: 624, sum members: 619, holes: 2, sum holes: 5 */

So lets have just one hole instead of two, by moving 'type' to just before 'action',
end result:

[acme@newtoy net-2.6.20]$ codiff -s /tmp/tcp.o.before net/ipv4/tcp.o
/pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv4/tcp.c:
  struct xfrm_policy |   -4
 1 struct changed
[acme@newtoy net-2.6.20]$

[acme@newtoy net-2.6.20]$ pahole -c 64 net/ipv4/tcp.o xfrm_policy
/* /pub/scm/linux/kernel/git/acme/net-2.6.20/include/linux/security.h:67 */
struct xfrm_policy {
        struct xfrm_policy *       next;                 /*     0     4 */
        struct hlist_node          bydst;                /*     4     8 */
        struct hlist_node          byidx;                /*    12     8 */
        rwlock_t                   lock;                 /*    20    36 */
        atomic_t                   refcnt;               /*    56     4 */
        struct timer_list          timer;                /*    60    24 */
        u32                        priority;             /*    84     4 */
        u32                        index;                /*    88     4 */
        struct xfrm_selector       selector;             /*    92    56 */
        struct xfrm_lifetime_cfg   lft;                  /*   148    64 */
        struct xfrm_lifetime_cur   curlft;               /*   212    32 */
        struct dst_entry *         bundles;              /*   244     4 */
        u16                        family;               /*   248     2 */
        u8                         type;                 /*   250     1 */
        u8                         action;               /*   251     1 */
        u8                         flags;                /*   252     1 */
        u8                         dead;                 /*   253     1 */
        u8                         xfrm_nr;              /*   254     1 */

        /* XXX 1 byte hole, try to pack */

        struct xfrm_sec_ctx *      security;             /*   256     4 */
        struct xfrm_tmpl           xfrm_vec[6];          /*   260   360 */
}; /* size: 620, sum members: 619, holes: 1, sum holes: 1 */

Are there any fugly data dependencies here? None that I know.

In the process changed the removed the __ prefixed types, that are just for
userspace visible headers.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-02 21:30:48 -08:00
..
acpi ACPI: Change ACPI to use dev_archdata instead of firmware_data 2006-12-01 14:52:01 -08:00
asm-alpha [NET]: Alpha checksum annotations and cleanups. 2006-12-02 21:23:01 -08:00
asm-arm [NET]: ARM checksum annotations and cleanups. 2006-12-02 21:23:15 -08:00
asm-arm26 [NET]: ARM26 checksum annotations and cleanups. 2006-12-02 21:23:16 -08:00
asm-avr32 [NET]: AVR32 checksum annotations and cleanups. 2006-12-02 21:23:18 -08:00
asm-cris [NET]: Cris checksum annotations and cleanups. 2006-12-02 21:23:02 -08:00
asm-frv [NET]: FRV checksum annotations. 2006-12-02 21:23:03 -08:00
asm-generic Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
asm-h8300 [NET]: H8300 checksum annotations and cleanups. 2006-12-02 21:23:04 -08:00
asm-i386 [NET]: I386 checksum annotations and cleanups. 2006-12-02 21:23:19 -08:00
asm-ia64 [NET]: IA64 checksum annotations and cleanups. 2006-12-02 21:23:05 -08:00
asm-m32r [NET]: M32R checksum annotations and cleanups. 2006-12-02 21:23:06 -08:00
asm-m68k [NET]: M68K checksum annotations and cleanups. 2006-12-02 21:23:07 -08:00
asm-m68knommu [NET]: M68Knommu checksum annotations and cleanups. 2006-12-02 21:23:08 -08:00
asm-mips [NET]: MIPS checksum annotations and cleanups. 2006-12-02 21:23:09 -08:00
asm-parisc [NET]: PARISC checksum annotations and cleanups. 2006-12-02 21:23:10 -08:00
asm-powerpc [NET]: POWERPC checksum annotations and cleanups. 2006-12-02 21:23:20 -08:00
asm-ppc Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
asm-s390 [NET]: S390 checksum annotations and cleanups. 2006-12-02 21:23:21 -08:00
asm-sh [NET]: SH checksum annotations and cleanups. 2006-12-02 21:23:22 -08:00
asm-sh64 [NET]: SH64 checksum annotations and cleanups. 2006-12-02 21:23:11 -08:00
asm-sparc [NET]: SPARC checksum annotations and cleanups. 2006-12-02 21:23:22 -08:00
asm-sparc64 [NET]: SPARC64 checksum annotations and cleanups. 2006-12-02 21:23:23 -08:00
asm-um Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
asm-v850 [NET]: V850 checksum annotations and cleanups. 2006-12-02 21:23:13 -08:00
asm-x86_64 [NET]: X86_64 checksum annotations and cleanups. 2006-12-02 21:23:14 -08:00
asm-xtensa [NET]: XTENSA checksum annotations and cleanups. 2006-12-02 21:23:24 -08:00
crypto
keys
linux [NET]: Pack struct hh_cache 2006-12-02 21:30:47 -08:00
math-emu
media
mtd
net [XFRM]: Pack struct xfrm_policy 2006-12-02 21:30:48 -08:00
pcmcia
rdma IB/cm: Fix automatic path migration support 2006-11-29 15:33:10 -08:00
rxrpc
scsi [PATCH] add missing libsas include to fix s390 compilation. 2006-11-28 17:26:50 -08:00
sound Driver core: convert sound core to use struct device 2006-12-01 14:52:01 -08:00
video
Kbuild