Michael Kerrisk
6c38ce7f1f
futex.2: Note that at least one bit must be set in mask for BITSET operations
...
At least one bit must be set in the 'val3' mask supplied for the
FUTEX_WAIT_BITSET and FUTEX_WAKE_BITSET operations.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 09:42:15 +02:00
Michael Kerrisk
84abf4ba97
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 09:34:16 +02:00
Michael Kerrisk
b3d5bc4ca6
futex.2: ffix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 09:28:56 +02:00
Michael Kerrisk
ac991a11d7
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 08:55:17 +02:00
Michael Kerrisk
a6918f1d4b
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 08:54:03 +02:00
Michael Kerrisk
40d2dab928
futex.2: ffix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 08:53:09 +02:00
Michael Kerrisk
6f19879d52
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 08:53:09 +02:00
Michael Kerrisk
a01c3098e8
futex.2: Clarify clock default and choices for FUTEX_WAIT
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-24 08:53:09 +02:00
Michael Kerrisk
8064bfa536
futex.2: Fix descriptions of various timeouts
...
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-23 12:47:49 +02:00
Michael Kerrisk
017d194b0b
futex.2: Correct an ENOSYS error description
...
Since Linux 4.5, FUTEX_CLOCK_REALTIME is allowed with with FUTEX_WAIT.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-23 12:47:41 +02:00
Michael Kerrisk
0b97369dd8
futex.2: Remove crufty text about FUTEX_WAIT_BITSET interpretation of timeout
...
Since Linux 4.5, FUTEX_WAIT also understands
FUTEX_CLOCK_REALTIME.
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-06-23 10:19:39 +02:00
Michael Kerrisk
979867082b
locale.1, localedef.1, _exit.2, accept.2, access.2, acct.2, adjtimex.2, bdflush.2, bind.2, bpf.2, brk.2, chdir.2, chmod.2, chown.2, chroot.2, clock_nanosleep.2, clone.2, close.2, connect.2, copy_file_range.2, create_module.2, delete_module.2, dup.2, epoll_ctl.2, eventfd.2, execve.2, fallocate.2, fanotify_init.2, fcntl.2, flock.2, fork.2, fsync.2, futex.2, get_kernel_syms.2, getdomainname.2, getgroups.2, gethostname.2, getpagesize.2, getpeername.2, getsid.2, getsockname.2, getsockopt.2, gettimeofday.2, init_module.2, ioctl.2, ioctl_list.2, ioperm.2, iopl.2, kexec_load.2, kill.2, killpg.2, link.2, listen.2, llseek.2, lseek.2, madvise.2, memfd_create.2, mincore.2, mkdir.2, mknod.2, mmap.2, mount.2, nanosleep.2, nice.2, open.2, personality.2, pipe.2, poll.2, posix_fadvise.2, read.2, readahead.2, readlink.2, readv.2, recv.2, recvmmsg.2, rename.2, request_key.2, sched_setaffinity.2, sched_setattr.2, select.2, select_tut.2, semctl.2, semop.2, send.2, sendfile.2, sendmmsg.2, seteuid.2, setns.2, setpgid.2, setreuid.2, shutdown.2, sigaction.2, sigaltstack.2, signal.2, signalfd.2, sigpending.2, sigprocmask.2, sigsuspend.2, socketpair.2, splice.2, stat.2, statfs.2, stime.2, symlink.2, sync.2, syscall.2, syscalls.2, times.2, truncate.2, unlink.2, unshare.2, uselib.2, utimensat.2, vfork.2, vhangup.2, wait.2, wait4.2, write.2, a64l.3, abs.3, acos.3, acosh.3, addseverity.3, adjtime.3, aio_read.3, aio_write.3, asin.3, asinh.3, atan.3, atan2.3, atanh.3, atoi.3, backtrace.3, cbrt.3, ceil.3, cfree.3, clearenv.3, clock_getcpuclockid.3, clog10.3, cmsg.3, copysign.3, cos.3, cosh.3, ctermid.3, ctime.3, daemon.3, dirfd.3, div.3, dl_iterate_phdr.3, drand48.3, drand48_r.3, dysize.3, ecvt.3, ecvt_r.3, endian.3, erf.3, erfc.3, errno.3, exec.3, exp.3, exp2.3, expm1.3, fabs.3, fdim.3, ferror.3, fexecve.3, ffs.3, fgetgrent.3, fgetpwent.3, finite.3, flockfile.3, floor.3, fma.3, fmax.3, fmin.3, fmod.3, fopen.3, fpclassify.3, frexp.3, fseeko.3, fts.3, futimes.3, fwide.3, gamma.3, gcvt.3, getaddrinfo.3, getcwd.3, getdate.3, getdirentries.3, getdtablesize.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getline.3, getloadavg.3, getmntent.3, getnameinfo.3, getnetent_r.3, getpass.3, getprotoent_r.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent_r.3, getservent_r.3, getspnam.3, getsubopt.3, getusershell.3, getutent.3, getw.3, gsignal.3, hypot.3, ilogb.3, inet.3, initgroups.3, insque.3, isalpha.3, isgreater.3, iswblank.3, j0.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, lrint.3, lround.3, makedev.3, matherr.3, mbsnrtowcs.3, mkdtemp.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_receive.3, mq_send.3, nan.3, nextafter.3, on_exit.3, open_memstream.3, opendir.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, psignal.3, pthread_attr_setstack.3, pthread_setaffinity_np.3, putenv.3, putpwent.3, qecvt.3, rand.3, random.3, random_r.3, rcmd.3, readdir.3, realpath.3, remainder.3, remquo.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, scalb.3, scalbln.3, scandir.3, scanf.3, seekdir.3, sem_wait.3, setbuf.3, setenv.3, setjmp.3, setnetgrent.3, siginterrupt.3, signbit.3, significand.3, sigset.3, sigsetops.3, sigvec.3, sigwait.3, sin.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stpcpy.3, stpncpy.3, strdup.3, strerror.3, strftime.3, strlen.3, strnlen.3, strsep.3, strsignal.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timegm.3, timeradd.3, tmpfile.3, tmpnam.3, toascii.3, trunc.3, ttyslot.3, tzset.3, ualarm.3, unlocked_stdio.3, usleep.3, wcpcpy.3, wcpncpy.3, wcscasecmp.3, wcsdup.3, wcsncasecmp.3, wcsnlen.3, wcsnrtombs.3, wprintf.3, y0.3, pts.4, st.4, tty_ioctl.4, elf.5, gai.conf.5, group.5, locale.5, nsswitch.conf.5, proc.5, utmp.5, aio.7, capabilities.7, credentials.7, environ.7, epoll.7, fanotify.7, feature_test_macros.7, inotify.7, ip.7, mq_overview.7, namespaces.7, pipe.7, signal.7, socket.7, standards.7, svipc.7, symlink.7, time.7, unicode.7, unix.7: tstamp
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-03-15 17:30:43 +13:00
Michael Kerrisk
949ceae398
futex.2: FUTEX_CLOCK_REALTIME can now be used with FUTEX_WAIT
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-03-15 13:28:53 +13:00
Michael Kerrisk
def04e1ccf
chown.2, futex.2, membarrier.2, memfd_create.2, mount.2, msgop.2, open.2, open_by_handle_at.2, perf_event_open.2, readv.2, sched_setscheduler.2, syslog.2, basename.3: ffix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-02-03 08:46:16 +01:00
Jakub Wilk
ed1819cf3e
futex.2: tfix
...
Signed-off-by: Jakub Wilk <jwilk@jwilk.net>
2016-02-03 08:27:03 +01:00
Jakub Wilk
67c67ff26b
futex.2: tfix
...
Signed-off-by: Jakub Wilk <jwilk@jwilk.net>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-01-08 17:26:15 +01:00
Jakub Wilk
f6615c426b
futex.2: tfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-30 20:35:30 +01:00
Michael Kerrisk
cd175805de
futex.2: srcfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-30 13:57:02 +01:00
Michael Kerrisk
e24fbf1098
Removed trailing white space at end of lines
2015-12-29 13:51:32 +01:00
Michael Kerrisk
29b41e747f
accept.2, acct.2, bind.2, clock_getres.2, connect.2, dup.2, epoll_create.2, eventfd.2, execve.2, fanotify_init.2, fcntl.2, fork.2, futex.2, get_robust_list.2, getcpu.2, getpeername.2, getrlimit.2, getsockname.2, getsockopt.2, gettimeofday.2, inotify_init.2, listen.2, membarrier.2, memfd_create.2, mlock.2, mmap.2, personality.2, pipe.2, poll.2, recv.2, send.2, sendfile.2, shmget.2, shutdown.2, sigreturn.2, socket.2, socketcall.2, socketpair.2, spu_create.2, swapon.2, time.2, timerfd_create.2, uselib.2, dlerror.3, dlopen.3, drand48.3, errno.3, fnmatch.3, getgrent.3, getgrnam.3, getlogin.3, getpwent.3, getpwnam.3, iconv.3, mq_open.3, opendir.3, random_r.3, sem_open.3, shm_open.3, tmpfile.3, tzset.3, random.4, fanotify.7, futex.7, vdso.7, ld.so.8: tstamp
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-29 13:48:42 +01:00
Michael Kerrisk
e258766bf4
accept.2, acct.2, epoll_create.2, execve.2, futex.2, inotify_init.2, mmap.2, open.2, pipe.2, shmget.2, socket.2, socketpair.2, spu_create.2, swapon.2, uselib.2, getgrent.3, getgrnam.3, getlogin.3, getpwent.3, getpwnam.3, mq_open.3, opendir.3, sem_open.3, shm_open.3, tmpfile.3, fanotify.7: ERRORS: standardize text for ENFILE error
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-27 17:10:23 +01:00
Michael Kerrisk
8adaf0a794
futex.2: Minor wording tweaks after comments from Darren Hart
...
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-26 09:02:35 +01:00
Michael Kerrisk
2af84f99ad
futex.2: wfix
...
Reported-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-19 06:22:47 +01:00
Michael Kerrisk
bc54ed38c5
futex.2: Minor wording fixes
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-19 06:22:11 +01:00
Michael Kerrisk
5e1456d4c9
futex.2: Replace "bitset" by "bit mask"
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-19 06:22:02 +01:00
Michael Kerrisk
da894b18a8
futex.2: Fixes after comments from Darren Hart
...
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-17 06:43:53 +01:00
Michael Kerrisk
0fb87d16ac
futex.2: Clarify "total ordering" a little
...
Comments from Davidlohr:
So there are two things here regarding ordering. One is the
most obvious which is ordered due to the taking/dropping the
hb spinlock. Secondly, its the cases which Peter brought up
a while ago that involves atomic futex ops futex_atomic_*(),
which do not have clearly defined semantics, and you get
inconsistencies with certain archs (tile being the worst
iirc).
But anyway, the important thing users need to know about is
that the atomic futex operation must be totally ordered wrt
any other user tasks that are trying to access that address.
This is not necessarily the case for kernel ops. Peter
illustrates this nicely with lock stealing example; (see
https://lkml.org/lkml/2015/8/26/596 ).
Internally, I believe we decided that making it fully ordered
(as opposed to making use of implicit barriers for
ACQUIRE/RELEASE), so you'd end up having an MB ll/sc MB kind of
setup.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Reported-by: Davidlohr Bueso <dave@stgolabs.net>
2015-12-17 06:43:40 +01:00
Michael Kerrisk
3fbb1be115
futex.2: Minor fixes after comments from Torvald Riegel
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 17:00:04 +01:00
Michael Kerrisk
57f2d48bc1
futex.2: tfix
...
Reported-by: Alexander Monakov <amonakov@ispras.ru>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 16:47:52 +01:00
Michael Kerrisk
ee65b0e842
futex.2: srcfix (notes from conversation with tglx)
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
c3f4c0196a
futex.2: tfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
d0442d147d
futex.2: wfix
...
Reported-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
1d09c1500f
futex.2: Fixes after feedback from Thomas Gleixner
...
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
ca4e5b2b99
futex.2: Minor wording fixes
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
601399f31f
futex.2: Improvements after comments from Darren Hart
...
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
adc89a976e
futex.2: ffix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
41b6c6a080
futex.2: srcfix: FIXME
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
c3875d1d3a
futex.2: Fixes after review comments from Thomas Gleixner
...
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
30239c10a8
futex.2: Various fixes after comments from Thomas Gleixner
...
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
aab5ca4b64
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
f0a9e8f4ce
futex.2: tfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
39e9b2e1e4
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
9cee832c40
futex.2: wfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
ac89487996
futex.2: Fixes after review comments from Thomas Gleixner
...
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
dcb410c3c8
futex.2: tfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:49 +01:00
Michael Kerrisk
627b50ce7c
futex.2: Elaborate on why "requeue" operations can be preferable to FUTEX_WAKE
...
Cowritten-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:48 +01:00
Michael Kerrisk
8297383e9e
futex.2: Clean-ups and FIXME removeal after feedback from Thomas Gleixner
...
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:48 +01:00
Michael Kerrisk
27dd3a6e79
futex.2: Remove warning that FUTEX_REQUEUE is broken
...
Darren Hart pointed me to the comments from Rich Felker
that there are valid use cases for FUTEX_REQUEUE.
From: Rich Felker <dalias@libc.org>
Date: Wed, 29 Oct 2014 22:43:17 -0400
To: Darren Hart <dvhart@infradead.org>
Cc: GLIBC Devel <libc-alpha@sourceware.org>, ...
Subject: Re: Add futex wrapper to glibc?
On Wed, Oct 29, 2014 at 06:59:15PM -0700, Darren Hart wrote:
[...]
> I wonder though... can we not wrap FUTEX_REQUEUE? It's fundamentally
> broken. FUTEX_CMP_REQUEUE should *always* be used instead. The glibc
> wrapper is one way to encourage developers to do the right thing
> (don't expose the bad op in the header).
You're mistaken here. There are plenty of valid ways to use
FUTEX_REQUEUE - for example if the calling thread is requeuing the
target(s) to a lock that the calling thread owns. Just because it
doesn't meet the needs of the way glibc was using it internally
doesn't mean it's useless for other applications.
Reported-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:48 +01:00
Michael Kerrisk
da56650ae4
futex.2: srcfix
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:48 +01:00
Michael Kerrisk
fd1056148b
futex.2: Minor wording fixes
...
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-12-15 14:39:48 +01:00