diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2005-12-22 15:49:22 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-01-03 16:11:15 -0500 |
commit | 90ddc4f0470427df306f308ad03db6b6b21644b8 (patch) | |
tree | f97c1d57b25585394ebbd4b42b8d42a339f98644 /net/ipv4 | |
parent | 77d76ea310b50a9c8ff15bd290fcb4ed4961adf2 (diff) |
[NET]: move struct proto_ops to const
I noticed that some of 'struct proto_ops' used in the kernel may share
a cache line used by locks or other heavily modified data. (default
linker alignement is 32 bytes, and L1_CACHE_LINE is 64 or 128 at
least)
This patch makes sure a 'struct proto_ops' can be declared as const,
so that all cpus can share all parts of it without false sharing.
This is not mandatory : a driver can still use a read/write structure
if it needs to (and eventually a __read_mostly)
I made a global stubstitute to change all existing occurences to make
them const.
This should reduce the possibility of false sharing on SMP, and
speedup some socket system calls.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/af_inet.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 617e858beff1..4ed8a814c6cb 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
@@ -785,7 +785,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) | |||
785 | return err; | 785 | return err; |
786 | } | 786 | } |
787 | 787 | ||
788 | struct proto_ops inet_stream_ops = { | 788 | const struct proto_ops inet_stream_ops = { |
789 | .family = PF_INET, | 789 | .family = PF_INET, |
790 | .owner = THIS_MODULE, | 790 | .owner = THIS_MODULE, |
791 | .release = inet_release, | 791 | .release = inet_release, |
@@ -806,7 +806,7 @@ struct proto_ops inet_stream_ops = { | |||
806 | .sendpage = tcp_sendpage | 806 | .sendpage = tcp_sendpage |
807 | }; | 807 | }; |
808 | 808 | ||
809 | struct proto_ops inet_dgram_ops = { | 809 | const struct proto_ops inet_dgram_ops = { |
810 | .family = PF_INET, | 810 | .family = PF_INET, |
811 | .owner = THIS_MODULE, | 811 | .owner = THIS_MODULE, |
812 | .release = inet_release, | 812 | .release = inet_release, |
@@ -831,7 +831,7 @@ struct proto_ops inet_dgram_ops = { | |||
831 | * For SOCK_RAW sockets; should be the same as inet_dgram_ops but without | 831 | * For SOCK_RAW sockets; should be the same as inet_dgram_ops but without |
832 | * udp_poll | 832 | * udp_poll |
833 | */ | 833 | */ |
834 | static struct proto_ops inet_sockraw_ops = { | 834 | static const struct proto_ops inet_sockraw_ops = { |
835 | .family = PF_INET, | 835 | .family = PF_INET, |
836 | .owner = THIS_MODULE, | 836 | .owner = THIS_MODULE, |
837 | .release = inet_release, | 837 | .release = inet_release, |