aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/futex.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/linux/futex.h b/include/linux/futex.h
index 3f153b4e156c..820125c628c1 100644
--- a/include/linux/futex.h
+++ b/include/linux/futex.h
@@ -100,6 +100,35 @@ long do_futex(u32 __user *uaddr, int op, u32 val, unsigned long timeout,
100extern int 100extern int
101handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi); 101handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi);
102 102
103/*
104 * Futexes are matched on equal values of this key.
105 * The key type depends on whether it's a shared or private mapping.
106 * Don't rearrange members without looking at hash_futex().
107 *
108 * offset is aligned to a multiple of sizeof(u32) (== 4) by definition.
109 * We set bit 0 to indicate if it's an inode-based key.
110 */
111union futex_key {
112 struct {
113 unsigned long pgoff;
114 struct inode *inode;
115 int offset;
116 } shared;
117 struct {
118 unsigned long address;
119 struct mm_struct *mm;
120 int offset;
121 } private;
122 struct {
123 unsigned long word;
124 void *ptr;
125 int offset;
126 } both;
127};
128int get_futex_key(u32 __user *uaddr, union futex_key *key);
129void get_futex_key_refs(union futex_key *key);
130void drop_futex_key_refs(union futex_key *key);
131
103#ifdef CONFIG_FUTEX 132#ifdef CONFIG_FUTEX
104extern void exit_robust_list(struct task_struct *curr); 133extern void exit_robust_list(struct task_struct *curr);
105extern void exit_pi_state_list(struct task_struct *curr); 134extern void exit_pi_state_list(struct task_struct *curr);