[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-netdev
Subject:    [PATCH] make lock/release_sock fast calls
From:       Stephen Hemminger <shemminger () osdl ! org>
Date:       2004-03-31 19:24:07
Message-ID: 20040331112407.66309027 () dell_ss3 ! pdx ! osdl ! net
[Download RAW message or body]

lock_sock and release_sock are no longer inline, but they are called in
the critical path of many operations, so it makes sense to use register based
fastcall.

diff -Nru a/include/net/sock.h b/include/net/sock.h
--- a/include/net/sock.h	Wed Mar 31 11:13:36 2004
+++ b/include/net/sock.h	Wed Mar 31 11:13:36 2004
@@ -561,8 +561,8 @@
 extern void __release_sock(struct sock *sk);
 #define sock_owned_by_user(sk)	((sk)->sk_lock.owner)
 
-extern void lock_sock(struct sock *sk);
-extern void release_sock(struct sock *sk);
+extern void FASTCALL(lock_sock(struct sock *sk));
+extern void FASTCALL(release_sock(struct sock *sk));
 
 /* BH context may only use the following locking interface. */
 #define bh_lock_sock(__sk)	spin_lock(&((__sk)->sk_lock.slock))
diff -Nru a/net/core/sock.c b/net/core/sock.c
--- a/net/core/sock.c	Wed Mar 31 11:13:36 2004
+++ b/net/core/sock.c	Wed Mar 31 11:13:36 2004
@@ -1151,7 +1151,7 @@
 	atomic_set(&sk->sk_refcnt, 1);
 }
 
-void lock_sock(struct sock *sk)
+void fastcall lock_sock(struct sock *sk)
 {
 	might_sleep();
 	spin_lock_bh(&(sk->sk_lock.slock));
@@ -1163,7 +1163,7 @@
 
 EXPORT_SYMBOL(lock_sock);
 
-void release_sock(struct sock *sk)
+void fastcall release_sock(struct sock *sk)
 {
 	spin_lock_bh(&(sk->sk_lock.slock));
 	if (sk->sk_backlog.tail)

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic