summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorrdivacky <rdivacky@FreeBSD.org>2008-05-13 20:01:27 +0000
committerrdivacky <rdivacky@FreeBSD.org>2008-05-13 20:01:27 +0000
commit13cbd9c97efdd801d6a355ae093c858dbcae9ea4 (patch)
treef230e0408b5364ef56a7bda21630cb827fe45bc8 /sys/i386
parent8f4fa78ec6a09ea5742e967e8b84878ce0f685f3 (diff)
downloadFreeBSD-src-13cbd9c97efdd801d6a355ae093c858dbcae9ea4.zip
FreeBSD-src-13cbd9c97efdd801d6a355ae093c858dbcae9ea4.tar.gz
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
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/linux/linux_dummy.c2
-rw-r--r--sys/i386/linux/syscalls.master6
2 files changed, 4 insertions, 4 deletions
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); }
OpenPOWER on IntegriCloud