mirror of https://github.com/mkerrisk/man-pages
135 lines
3.9 KiB
Groff
135 lines
3.9 KiB
Groff
.\" 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.
|
|
.\"
|
|
.\" FIXME Something could be added to this page (or exit(2))
|
|
.\" about exit_robust_list processing
|
|
.\"
|
|
.TH GET_ROBUST_LIST 2 2012-07-13 Linux "Linux System Calls"
|
|
.SH NAME
|
|
get_robust_list, set_robust_list \- get/set list of robust futexes
|
|
.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
|
|
|
|
.IR Note :
|
|
There are no glibc wrappers for these system calls; see NOTES.
|
|
.SH DESCRIPTION
|
|
The robust futex implementation needs to maintain per-thread lists of robust
|
|
futexes which are unlocked when the thread exits.
|
|
These lists are managed in user space; the kernel is only notified about
|
|
the location of the head of the list.
|
|
|
|
The
|
|
.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 .
|
|
|
|
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
|
|
.I len
|
|
argument should be
|
|
.IR sizeof(*head) .
|
|
.SH "RETURN VALUE"
|
|
The
|
|
.BR set_robust_list ()
|
|
and
|
|
.BR get_robust_list ()
|
|
system calls return zero when the operation is successful,
|
|
an error code otherwise.
|
|
.SH ERRORS
|
|
The
|
|
.BR set_robust_list ()
|
|
system call can fail with the following error:
|
|
.TP
|
|
.B EINVAL
|
|
.I len
|
|
does not match the size of structure
|
|
.B struct robust_list_head
|
|
expected by kernel.
|
|
.PP
|
|
The
|
|
.BR get_robust_list ()
|
|
system call can fail with the following errors:
|
|
.TP
|
|
.B EPERM
|
|
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
|
|
.B ESRCH
|
|
No thread with the thread ID
|
|
.I pid
|
|
could be found.
|
|
.TP
|
|
.B EFAULT
|
|
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.
|
|
In the unlikely event that you want to call them directly, use
|
|
.BR syscall (2).
|
|
|
|
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.
|
|
.SH "SEE ALSO"
|
|
.BR futex (2)
|
|
.\" .BR pthread_mutexattr_setrobust_np (3)
|
|
|
|
.IR Documentation/robust-futexes.txt
|
|
and
|
|
.IR Documentation/robust-futex-ABI.txt
|
|
in the Linux kernel source tree
|
|
.\" http://lwn.net/Articles/172149/
|