From 13cbd9c97efdd801d6a355ae093c858dbcae9ea4 Mon Sep 17 00:00:00 2001 From: rdivacky Date: Tue, 13 May 2008 20:01:27 +0000 Subject: Implement robust futexes. Most of the code is modelled after what Linux does. This is because robust futexes are mostly userspace thing which we cannot alter. Two syscalls maintain pointer to userspace list and when process exits a routine walks this list waking up processes sleeping on futexes from that list. Reviewed by: kib (mentor) MFC after: 1 month --- sys/i386/linux/linux_dummy.c | 2 -- sys/i386/linux/syscalls.master | 6 ++++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'sys/i386') diff --git a/sys/i386/linux/linux_dummy.c b/sys/i386/linux/linux_dummy.c index 99a9d3d..f047361 100644 --- a/sys/i386/linux/linux_dummy.c +++ b/sys/i386/linux/linux_dummy.c @@ -89,8 +89,6 @@ DUMMY(migrate_pages); DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); -DUMMY(set_robust_list); -DUMMY(get_robust_list); DUMMY(splice); DUMMY(sync_file_range); DUMMY(tee); diff --git a/sys/i386/linux/syscalls.master b/sys/i386/linux/syscalls.master index 313be8a..f13741c 100644 --- a/sys/i386/linux/syscalls.master +++ b/sys/i386/linux/syscalls.master @@ -503,8 +503,10 @@ 308 AUE_NULL STD { int linux_pselect6(void); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } -311 AUE_NULL STD { int linux_set_robust_list(void); } -312 AUE_NULL STD { int linux_get_robust_list(void); } +311 AUE_NULL STD { int linux_set_robust_list(struct linux_robust_list_head *head, \ + l_size_t len); } +312 AUE_NULL STD { int linux_get_robust_list(l_int pid, struct linux_robust_list_head **head, \ + l_size_t *len); } 313 AUE_NULL STD { int linux_splice(void); } 314 AUE_NULL STD { int linux_sync_file_range(void); } 315 AUE_NULL STD { int linux_tee(void); } -- cgit v1.1