2012-05-02 22:17:23 +00:00
|
|
|
.\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
|
|
|
|
.\" Written by Ivana Varekova <varekova@redhat.com>
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
|
|
|
.\"
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
|
|
|
.\"
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
2012-05-02 23:00:32 +00:00
|
|
|
.\" FIXME Something could be added to this page (or exit(2))
|
|
|
|
.\" about exit_robust_list processing
|
2012-05-02 22:17:23 +00:00
|
|
|
.\"
|
get_robust_list.2, get_thread_area.2, getcpu.2, getdents.2, gettid.2, io_cancel.2, io_destroy.2, io_getevents.2, io_setup.2, io_submit.2, ioprio_set.2, kexec_load.2, llseek.2, modify_ldt.2, mq_getsetattr.2, pivot_root.2, readdir.2, rt_sigqueueinfo.2, set_thread_area.2, sgetmask.2, spu_create.2, spu_run.2, subpage_prot.2, sysctl.2, tkill.2: Add note to SYNOPSIS that there is no glibc wrapper for system call
Reduce the chance that the reader may be misled into thinking
that there is a wrapper function for this system call by noting
explicitly in the SYNOPSIS that there is no glibc wrapper and
pointing the reader to NOTES for further details.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-07-13 06:48:20 +00:00
|
|
|
.TH GET_ROBUST_LIST 2 2012-07-13 Linux "Linux System Calls"
|
2012-05-02 22:17:23 +00:00
|
|
|
.SH NAME
|
2012-05-02 23:00:32 +00:00
|
|
|
get_robust_list, set_robust_list \- get/set list of robust futexes
|
2012-05-02 22:17:23 +00:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.nf
|
|
|
|
.B #include <linux/futex.h>
|
|
|
|
.B #include <syscall.h>
|
|
|
|
.sp
|
|
|
|
.BI "long get_robust_list(int " pid ", struct robust_list_head **" head_ptr ,
|
|
|
|
.BI " size_t *" len_ptr );
|
|
|
|
.BI "long set_robust_list(struct robust_list_head *" head ", size_t " len );
|
|
|
|
.fi
|
get_robust_list.2, get_thread_area.2, getcpu.2, getdents.2, gettid.2, io_cancel.2, io_destroy.2, io_getevents.2, io_setup.2, io_submit.2, ioprio_set.2, kexec_load.2, llseek.2, modify_ldt.2, mq_getsetattr.2, pivot_root.2, readdir.2, rt_sigqueueinfo.2, set_thread_area.2, sgetmask.2, spu_create.2, spu_run.2, subpage_prot.2, sysctl.2, tkill.2: Add note to SYNOPSIS that there is no glibc wrapper for system call
Reduce the chance that the reader may be misled into thinking
that there is a wrapper function for this system call by noting
explicitly in the SYNOPSIS that there is no glibc wrapper and
pointing the reader to NOTES for further details.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-07-13 06:48:20 +00:00
|
|
|
|
|
|
|
.IR Note :
|
|
|
|
There are no glibc wrappers for these system calls; see NOTES.
|
2012-05-02 22:17:23 +00:00
|
|
|
.SH DESCRIPTION
|
|
|
|
The robust futex implementation needs to maintain per-thread lists of robust
|
|
|
|
futexes which are unlocked when the thread exits.
|
2012-05-02 23:00:32 +00:00
|
|
|
These lists are managed in user space; the kernel is only notified about
|
2012-05-02 22:17:23 +00:00
|
|
|
the location of the head of the list.
|
|
|
|
|
|
|
|
The
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR get_robust_list ()
|
|
|
|
system call returns the head of the robust futex list of the thread
|
|
|
|
whose thread ID is specified in
|
|
|
|
.IR pid .
|
|
|
|
If
|
|
|
|
.I pid
|
|
|
|
is 0,
|
|
|
|
the head of the list for the calling thread is returned.
|
|
|
|
The list head is stored in the location pointed to by
|
|
|
|
.IR head_ptr .
|
|
|
|
The size of the object pointed to by
|
|
|
|
.I **head_ptr
|
|
|
|
is stored in
|
|
|
|
.IR len_ptr .
|
2012-05-02 22:17:23 +00:00
|
|
|
|
2012-05-02 23:00:32 +00:00
|
|
|
The
|
|
|
|
.BR set_robust_list ()
|
|
|
|
system call requests the kernel to record the head of the list of
|
|
|
|
robust futexes owned by the calling thread.
|
|
|
|
The
|
|
|
|
.I head
|
|
|
|
argument is the list head to record.
|
|
|
|
The
|
2012-05-02 22:17:23 +00:00
|
|
|
.I len
|
2012-05-02 23:00:32 +00:00
|
|
|
argument should be
|
|
|
|
.IR sizeof(*head) .
|
2012-05-02 22:17:23 +00:00
|
|
|
.SH "RETURN VALUE"
|
|
|
|
The
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR set_robust_list ()
|
2012-05-10 20:13:04 +00:00
|
|
|
and
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR get_robust_list ()
|
|
|
|
system calls return zero when the operation is successful,
|
2012-05-02 22:17:23 +00:00
|
|
|
an error code otherwise.
|
|
|
|
.SH ERRORS
|
|
|
|
The
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR set_robust_list ()
|
2012-05-09 05:13:29 +00:00
|
|
|
system call can fail with the following error:
|
2012-05-02 23:00:32 +00:00
|
|
|
.TP
|
2012-05-10 20:13:04 +00:00
|
|
|
.B EINVAL
|
2012-05-02 22:17:23 +00:00
|
|
|
.I len
|
2012-05-02 23:00:32 +00:00
|
|
|
does not match the size of structure
|
2012-05-10 20:13:04 +00:00
|
|
|
.B struct robust_list_head
|
2012-05-02 22:17:23 +00:00
|
|
|
expected by kernel.
|
2012-05-02 23:00:32 +00:00
|
|
|
.PP
|
2012-05-02 22:17:23 +00:00
|
|
|
The
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR get_robust_list ()
|
|
|
|
system call can fail with the following errors:
|
|
|
|
.TP
|
2012-05-10 20:13:04 +00:00
|
|
|
.B EPERM
|
2012-05-02 23:00:32 +00:00
|
|
|
The calling process does not have permission to see the robust futex list of
|
|
|
|
the thread with the thread ID
|
|
|
|
.IR pid ,
|
|
|
|
and does not have the
|
|
|
|
.BR CAP_SYS_PTRACE
|
|
|
|
capability.
|
|
|
|
.TP
|
2012-05-10 20:13:04 +00:00
|
|
|
.B ESRCH
|
2012-05-02 23:00:32 +00:00
|
|
|
No thread with the thread ID
|
2012-05-02 22:17:23 +00:00
|
|
|
.I pid
|
2012-05-02 23:00:32 +00:00
|
|
|
could be found.
|
|
|
|
.TP
|
2012-05-02 22:17:23 +00:00
|
|
|
.B EFAULT
|
2012-05-02 23:00:32 +00:00
|
|
|
The head of the robust futex list can't be stored at the location
|
|
|
|
.IR head .
|
|
|
|
.SH VERSIONS
|
|
|
|
These system calls were added in Linux 2.6.17.
|
|
|
|
No library support is provided; use
|
|
|
|
.BR syscall (2).
|
|
|
|
.SH NOTES
|
|
|
|
These system calls are not needed by normal applications.
|
|
|
|
No support for them is provided in glibc.
|
get_robust_list.2, get_thread_area.2, getcpu.2, getdents.2, gettid.2, io_cancel.2, io_destroy.2, io_getevents.2, io_setup.2, io_submit.2, ioprio_set.2, kexec_load.2, llseek.2, modify_ldt.2, mq_getsetattr.2, pivot_root.2, readdir.2, rt_sigqueueinfo.2, set_thread_area.2, sgetmask.2, spu_create.2, spu_run.2, subpage_prot.2, sysctl.2, tkill.2: Add note to SYNOPSIS that there is no glibc wrapper for system call
Reduce the chance that the reader may be misled into thinking
that there is a wrapper function for this system call by noting
explicitly in the SYNOPSIS that there is no glibc wrapper and
pointing the reader to NOTES for further details.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-07-13 06:48:20 +00:00
|
|
|
In the unlikely event that you want to call them directly, use
|
|
|
|
.BR syscall (2).
|
2012-05-02 22:17:23 +00:00
|
|
|
|
2012-05-02 23:00:32 +00:00
|
|
|
A thread can have only one robust futex list;
|
|
|
|
therefore applications that wish
|
|
|
|
to use this functionality should use the robust mutexes provided by glibc.
|
2012-05-02 22:17:23 +00:00
|
|
|
.SH "SEE ALSO"
|
2012-05-02 23:00:32 +00:00
|
|
|
.BR futex (2)
|
|
|
|
.\" .BR pthread_mutexattr_setrobust_np (3)
|
arch_prctl.2, fcntl.2, flock.2, get_robust_list.2, getpriority.2, ioprio_set.2, migrate_pages.2, mmap.2, mremap.2, msync.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, select.2, socket.2, subpage_prot.2, unshare.2, btree.3, dbopen.3, dl_iterate_phdr.3, dlopen.3, getnameinfo.3, hash.3, lockf.3, netlink.3, recno.3, rpc.3, xdr.3, cciss.4, console_ioctl.4, hpsa.4, initrd.4, msr.4, rtc.4, st.4, hosts.5, services.5, tzfile.5, aio.7, arp.7, capabilities.7, cpuset.7, feature_test_macros.7, futex.7, inotify.7, ip.7, ipv6.7, iso_8859-16.7, iso_8859-2.7, koi8-r.7, math_error.7, netlink.7, packet.7, pthreads.7, raw.7, spufs.7, udplite.7, uri.7, x25.7: Global fix: Various consistency fixes for SEE ALSO
Coauthored-by: Michael Kerrisk <mtk.manpages@gmail.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-09-24 07:53:22 +00:00
|
|
|
|
2012-05-02 23:00:32 +00:00
|
|
|
.IR Documentation/robust-futexes.txt
|
|
|
|
and
|
arch_prctl.2, fcntl.2, flock.2, get_robust_list.2, getpriority.2, ioprio_set.2, migrate_pages.2, mmap.2, mremap.2, msync.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, select.2, socket.2, subpage_prot.2, unshare.2, btree.3, dbopen.3, dl_iterate_phdr.3, dlopen.3, getnameinfo.3, hash.3, lockf.3, netlink.3, recno.3, rpc.3, xdr.3, cciss.4, console_ioctl.4, hpsa.4, initrd.4, msr.4, rtc.4, st.4, hosts.5, services.5, tzfile.5, aio.7, arp.7, capabilities.7, cpuset.7, feature_test_macros.7, futex.7, inotify.7, ip.7, ipv6.7, iso_8859-16.7, iso_8859-2.7, koi8-r.7, math_error.7, netlink.7, packet.7, pthreads.7, raw.7, spufs.7, udplite.7, uri.7, x25.7: Global fix: Various consistency fixes for SEE ALSO
Coauthored-by: Michael Kerrisk <mtk.manpages@gmail.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-09-24 07:53:22 +00:00
|
|
|
.IR Documentation/robust-futex-ABI.txt
|
|
|
|
in the kernel source tree
|
2012-05-02 23:00:32 +00:00
|
|
|
.\" http://lwn.net/Articles/172149/
|