Arnaldo Carvalho de Melo
850db6b8c5
[INET_CONNECTION_SOCK]: Pack struct inet_connection_sock_af_ops
We have a hole in:
[acme@newtoy net-2.6.20]$ pahole net/ipv6/tcp_ipv6.o inet_connection_sock_af_ops
/* /pub/scm/linux/kernel/git/acme/net-2.6.20/include/net/inet_connection_sock.h:38 */
struct inet_connection_sock_af_ops {
int (*queue_xmit)(); /* 0 4 */
void (*send_check)(); /* 4 4 */
int (*rebuild_header)(); /* 8 4 */
int (*conn_request)(); /* 12 4 */
struct sock * (*syn_recv_sock)(); /* 16 4 */
int (*remember_stamp)(); /* 20 4 */
__u16 net_header_len; /* 24 2 */
/* XXX 2 bytes hole, try to pack */
int (*setsockopt)(); /* 28 4 */
int (*getsockopt)(); /* 32 4 */
int (*compat_setsockopt)(); /* 36 4 */
int (*compat_getsockopt)(); /* 40 4 */
void (*addr2sockaddr)(); /* 44 4 */
int sockaddr_len; /* 48 4 */
}; /* size: 52, sum members: 50, holes: 1, sum holes: 2 */
But we don't need sockaddr_len to be an int:
[acme@newtoy net-2.6.20]$ find net -name "*.[ch]" | xargs grep '\.sockaddr_len.\+=' | sort -u
net/dccp/ipv4.c: .sockaddr_len = sizeof(struct sockaddr_in),
net/dccp/ipv6.c: .sockaddr_len = sizeof(struct sockaddr_in6),
net/ipv4/tcp_ipv4.c: .sockaddr_len = sizeof(struct sockaddr_in),
net/ipv6/tcp_ipv6.c: .sockaddr_len = sizeof(struct sockaddr_in6),
net/sctp/ipv6.c: .sockaddr_len = sizeof(struct sockaddr_in6),
net/sctp/protocol.c: .sockaddr_len = sizeof(struct sockaddr_in),
[acme@newtoy net-2.6.20]$ pahole --sizes net/ipv6/tcp_ipv6.o | grep sockaddr_in
struct sockaddr_in: 16 0
struct sockaddr_in6: 28 0
[acme@newtoy net-2.6.20]$
So I turned sockaddr_len a 'u16', and now:
[acme@newtoy net-2.6.20]$ pahole net/ipv6/tcp_ipv6.o inet_connection_sock_af_ops
/* /pub/scm/linux/kernel/git/acme/net-2.6.20/include/net/inet_connection_sock.h:38 */
struct inet_connection_sock_af_ops {
int (*queue_xmit)(); /* 0 4 */
void (*send_check)(); /* 4 4 */
int (*rebuild_header)(); /* 8 4 */
int (*conn_request)(); /* 12 4 */
struct sock * (*syn_recv_sock)(); /* 16 4 */
int (*remember_stamp)(); /* 20 4 */
u16 net_header_len; /* 24 2 */
u16 sockaddr_len; /* 26 2 */
int (*setsockopt)(); /* 28 4 */
int (*getsockopt)(); /* 32 4 */
int (*compat_setsockopt)(); /* 36 4 */
int (*compat_getsockopt)(); /* 40 4 */
void (*addr2sockaddr)(); /* 44 4 */
}; /* size: 48 */
So we've saved 4 bytes:
[acme@newtoy net-2.6.20]$ codiff -sV /tmp/tcp_ipv6.o.before net/ipv6/tcp_ipv6.o
/pub/scm/linux/kernel/git/acme/net-2.6.20/net/ipv6/tcp_ipv6.c:
struct inet_connection_sock_af_ops | -4
net_header_len;
from: __u16 /* 24(0) 2(0) */
to: u16 /* 24(0) 2(0) */
sockaddr_len;
from: int /* 48(0) 4(0) */
to: u16 /* 26(0) 2(0) */
1 struct changed
[acme@newtoy net-2.6.20]$
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
|
2006-12-02 21:30:46 -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
|
[CRYPTO] digest: Added user API for new hash type
|
2006-09-21 11:46:17 +10:00 |
|
keys
|
|
|
|
linux
|
[RTNETLINK]: Add rtnl_put_cacheinfo() to unify some code
|
2006-12-02 21:30:44 -08:00 |
|
math-emu
|
|
|
|
media
|
V4L/DVB (4666): Ensure the WM8775 driver is loaded generically for any board.
|
2006-10-03 15:13:48 -03:00 |
|
mtd
|
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
|
2006-10-01 17:55:53 +01:00 |
|
net
|
[INET_CONNECTION_SOCK]: Pack struct inet_connection_sock_af_ops
|
2006-12-02 21:30:46 -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
|
fix file specification in comments
|
2006-10-03 23:01:26 +02:00 |
|
Kbuild
|
[HEADERS] One line per header in Kbuild files to reduce conflicts
|
2006-09-19 12:43:58 +01:00 |