diff options
Diffstat (limited to 'include/net/af_unix.h')
| -rw-r--r-- | include/net/af_unix.h | 38 | 
1 files changed, 23 insertions, 15 deletions
diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 90c9e2872f2..a175ba4a7ad 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -6,29 +6,36 @@  #include <linux/mutex.h>  #include <net/sock.h> -extern void unix_inflight(struct file *fp); -extern void unix_notinflight(struct file *fp); -extern void unix_gc(void); -extern void wait_for_unix_gc(void); +void unix_inflight(struct file *fp); +void unix_notinflight(struct file *fp); +void unix_gc(void); +void wait_for_unix_gc(void); +struct sock *unix_get_socket(struct file *filp); +struct sock *unix_peer_get(struct sock *);  #define UNIX_HASH_SIZE	256 +#define UNIX_HASH_BITS	8  extern unsigned int unix_tot_inflight; +extern spinlock_t unix_table_lock; +extern struct hlist_head unix_socket_table[2 * UNIX_HASH_SIZE];  struct unix_address {  	atomic_t	refcnt;  	int		len; -	unsigned	hash; +	unsigned int	hash;  	struct sockaddr_un name[0];  };  struct unix_skb_parms {  	struct pid		*pid;		/* Skb credentials	*/ -	const struct cred	*cred; +	kuid_t			uid; +	kgid_t			gid;  	struct scm_fp_list	*fp;		/* Passed files		*/  #ifdef CONFIG_SECURITY_NETWORK  	u32			secid;		/* Security ID		*/  #endif +	u32			consumed;  };  #define UNIXCB(skb) 	(*(struct unix_skb_parms *)&((skb)->cb)) @@ -40,34 +47,35 @@ struct unix_skb_parms {  				spin_lock_nested(&unix_sk(s)->lock, \  				SINGLE_DEPTH_NESTING) -#ifdef __KERNEL__  /* The AF_UNIX socket */  struct unix_sock {  	/* WARNING: sk has to be the first member */  	struct sock		sk;  	struct unix_address     *addr; -	struct dentry		*dentry; -	struct vfsmount		*mnt; +	struct path		path;  	struct mutex		readlock;  	struct sock		*peer; -	struct sock		*other;  	struct list_head	link;  	atomic_long_t		inflight;  	spinlock_t		lock; -	unsigned int		gc_candidate : 1; -	unsigned int		gc_maybe_cycle : 1; +	unsigned char		recursion_level; +	unsigned long		gc_flags; +#define UNIX_GC_CANDIDATE	0 +#define UNIX_GC_MAYBE_CYCLE	1  	struct socket_wq	peer_wq;  };  #define unix_sk(__sk) ((struct unix_sock *)__sk)  #define peer_wait peer_wq.wait +long unix_inq_len(struct sock *sk); +long unix_outq_len(struct sock *sk); +  #ifdef CONFIG_SYSCTL -extern int unix_sysctl_register(struct net *net); -extern void unix_sysctl_unregister(struct net *net); +int unix_sysctl_register(struct net *net); +void unix_sysctl_unregister(struct net *net);  #else  static inline int unix_sysctl_register(struct net *net) { return 0; }  static inline void unix_sysctl_unregister(struct net *net) {}  #endif  #endif -#endif  | 
