#ifndef __LINUX_NET_AFUNIX_H #define __LINUX_NET_AFUNIX_H #include <linux/socket.h> #include <linux/un.h> #include <linux/mutex.h> #include <net/sock.h> void unix_inflight(struct user_struct *user, struct file *fp); void unix_notinflight(struct user_struct *user, 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 int hash; struct sockaddr_un name[0]; }; struct unix_skb_parms { struct pid *pid; /* Skb credentials */ 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)) #define unix_state_lock(s) spin_lock(&unix_sk(s)->lock) #define unix_state_unlock(s) spin_unlock(&unix_sk(s)->lock) #define unix_state_lock_nested(s) \ spin_lock_nested(&unix_sk(s)->lock, \ SINGLE_DEPTH_NESTING) /* The AF_UNIX socket */ struct unix_sock { /* WARNING: sk has to be the first member */ struct sock sk; struct unix_address *addr; struct path path; struct mutex iolock, bindlock; struct sock *peer; struct list_head link; atomic_long_t inflight; spinlock_t lock; unsigned char recursion_level; unsigned long gc_flags; #define UNIX_GC_CANDIDATE 0 #define UNIX_GC_MAYBE_CYCLE 1 struct socket_wq peer_wq; wait_queue_t peer_wake; };
static inline struct unix_sock *unix_sk(const struct sock *sk) { return (struct unix_sock *)sk; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Aaron Conole | 19 | 82.61% | 1 | 33.33% |
David S. Miller | 3 | 13.04% | 1 | 33.33% |
Paul Moore | 1 | 4.35% | 1 | 33.33% |
Total | 23 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Pavel Emelyanov | 10 | 66.67% | 1 | 50.00% |
Arnaldo Carvalho de Melo | 5 | 33.33% | 1 | 50.00% |
Total | 15 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Arnaldo Carvalho de Melo | 7 | 63.64% | 1 | 50.00% |
Pavel Emelyanov | 4 | 36.36% | 1 | 50.00% |
Total | 11 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Linus Torvalds (pre-git) | 90 | 25.42% | 7 | 18.92% |
Pavel Emelyanov | 65 | 18.36% | 4 | 10.81% |
Eric Dumazet | 45 | 12.71% | 6 | 16.22% |
Arnaldo Carvalho de Melo | 42 | 11.86% | 2 | 5.41% |
David S. Miller | 35 | 9.89% | 2 | 5.41% |
Aaron Conole | 19 | 5.37% | 1 | 2.70% |
Hannes Frederic Sowa | 10 | 2.82% | 1 | 2.70% |
Eric W. Biedermann | 9 | 2.54% | 2 | 5.41% |
Ingo Molnar | 9 | 2.54% | 2 | 5.41% |
Catherine Zhang | 9 | 2.54% | 2 | 5.41% |
dann frazier | 6 | 1.69% | 1 | 2.70% |
Linus Torvalds | 3 | 0.85% | 1 | 2.70% |
Rainer Weikusat | 3 | 0.85% | 1 | 2.70% |
Benjamin LaHaise | 3 | 0.85% | 1 | 2.70% |
Al Viro | 3 | 0.85% | 2 | 5.41% |
Miklos Szeredi | 2 | 0.56% | 1 | 2.70% |
Paul Moore | 1 | 0.28% | 1 | 2.70% |
Total | 354 | 100.00% | 37 | 100.00% |