diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-03-27 04:16:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-27 11:44:49 -0500 |
commit | 34f192c6527f20c47ccec239e7d51a27691b93fc (patch) | |
tree | 6c80416cf6a170a193f829e414051cc618b15ee3 /include/linux | |
parent | 2eec9ad91f71a3dbacece5c4fb5adc09fad53a96 (diff) |
[PATCH] lightweight robust futexes: compat
32-bit syscall compatibility support. (This patch also moves all futex
related compat functionality into kernel/futex_compat.c.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Arjan van de Ven <arjan@infradead.org>
Acked-by: Ulrich Drepper <drepper@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/compat.h | 18 | ||||
-rw-r--r-- | include/linux/sched.h | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/compat.h b/include/linux/compat.h index 24d659cdbafe..6d3a654be1ae 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -147,6 +147,24 @@ typedef struct compat_sigevent { | |||
147 | } _sigev_un; | 147 | } _sigev_un; |
148 | } compat_sigevent_t; | 148 | } compat_sigevent_t; |
149 | 149 | ||
150 | struct compat_robust_list { | ||
151 | compat_uptr_t next; | ||
152 | }; | ||
153 | |||
154 | struct compat_robust_list_head { | ||
155 | struct compat_robust_list list; | ||
156 | compat_long_t futex_offset; | ||
157 | compat_uptr_t list_op_pending; | ||
158 | }; | ||
159 | |||
160 | extern void compat_exit_robust_list(struct task_struct *curr); | ||
161 | |||
162 | asmlinkage long | ||
163 | compat_sys_set_robust_list(struct compat_robust_list_head __user *head, | ||
164 | compat_size_t len); | ||
165 | asmlinkage long | ||
166 | compat_sys_get_robust_list(int pid, compat_uptr_t *head_ptr, | ||
167 | compat_size_t __user *len_ptr); | ||
150 | 168 | ||
151 | long compat_sys_semctl(int first, int second, int third, void __user *uptr); | 169 | long compat_sys_semctl(int first, int second, int third, void __user *uptr); |
152 | long compat_sys_msgsnd(int first, int second, int third, void __user *uptr); | 170 | long compat_sys_msgsnd(int first, int second, int third, void __user *uptr); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index fd4848f2d750..20b4f0372e44 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -874,6 +874,9 @@ struct task_struct { | |||
874 | int cpuset_mem_spread_rotor; | 874 | int cpuset_mem_spread_rotor; |
875 | #endif | 875 | #endif |
876 | struct robust_list_head __user *robust_list; | 876 | struct robust_list_head __user *robust_list; |
877 | #ifdef CONFIG_COMPAT | ||
878 | struct compat_robust_list_head __user *compat_robust_list; | ||
879 | #endif | ||
877 | 880 | ||
878 | atomic_t fs_excl; /* holding fs exclusive resources */ | 881 | atomic_t fs_excl; /* holding fs exclusive resources */ |
879 | struct rcu_head rcu; | 882 | struct rcu_head rcu; |