mmc: core: SDXC speed class support
[linux-2.6.git] / include / linux / net.h
index 4157b5d..b299230 100644 (file)
@@ -42,6 +42,7 @@
 #define SYS_RECVMSG    17              /* sys_recvmsg(2)               */
 #define SYS_ACCEPT4    18              /* sys_accept4(2)               */
 #define SYS_RECVMMSG   19              /* sys_recvmmsg(2)              */
+#define SYS_SENDMMSG   20              /* sys_sendmmsg(2)              */
 
 typedef enum {
        SS_FREE = 0,                    /* not allocated                */
@@ -59,6 +60,7 @@ typedef enum {
 #include <linux/wait.h>
 #include <linux/fcntl.h>       /* For O_CLOEXEC and O_NONBLOCK */
 #include <linux/kmemcheck.h>
+#include <linux/rcupdate.h>
 
 struct poll_table_struct;
 struct pipe_inode_info;
@@ -116,16 +118,22 @@ enum sock_shutdown_cmd {
        SHUT_RDWR       = 2,
 };
 
+struct socket_wq {
+       /* Note: wait MUST be first field of socket_wq */
+       wait_queue_head_t       wait;
+       struct fasync_struct    *fasync_list;
+       struct rcu_head         rcu;
+} ____cacheline_aligned_in_smp;
+
 /**
  *  struct socket - general BSD socket
  *  @state: socket state (%SS_CONNECTED, etc)
  *  @type: socket type (%SOCK_STREAM, etc)
  *  @flags: socket flags (%SOCK_ASYNC_NOSPACE, etc)
  *  @ops: protocol specific socket operations
- *  @fasync_list: Asynchronous wake up list
  *  @file: File back pointer for gc
  *  @sk: internal networking protocol agnostic socket representation
- *  @wait: wait queue for several uses
+ *  @wq: wait queue for several uses
  */
 struct socket {
        socket_state            state;
@@ -135,11 +143,8 @@ struct socket {
        kmemcheck_bitfield_end(type);
 
        unsigned long           flags;
-       /*
-        * Please keep fasync_list & wait fields in the same cache line
-        */
-       struct fasync_struct    *fasync_list;
-       wait_queue_head_t       wait;
+
+       struct socket_wq __rcu  *wq;
 
        struct file             *file;
        struct sock             *sk;
@@ -226,6 +231,8 @@ enum {
 extern int          sock_wake_async(struct socket *sk, int how, int band);
 extern int          sock_register(const struct net_proto_family *fam);
 extern void         sock_unregister(int family);
+extern int          __sock_create(struct net *net, int family, int type, int proto,
+                                struct socket **res, int kern);
 extern int          sock_create(int family, int type, int proto,
                                 struct socket **res);
 extern int          sock_create_kern(int family, int type, int proto,
@@ -282,11 +289,5 @@ extern int kernel_sock_shutdown(struct socket *sock,
        MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto) \
                     "-type-" __stringify(type))
 
-#ifdef CONFIG_SYSCTL
-#include <linux/sysctl.h>
-#include <linux/ratelimit.h>
-extern struct ratelimit_state net_ratelimit_state;
-#endif
-
 #endif /* __KERNEL__ */
 #endif /* _LINUX_NET_H */