Home
last modified time | relevance | path

Searched refs:futex (Results 1 – 48 of 48) sorted by relevance

/linux-4.4.14/Documentation/DocBook/
Dkernel-locking.xml.db9 API-struct-futex-q
10 API-get-futex-key
12 API-futex-top-waiter
13 API-futex-lock-pi-atomic
14 API---unqueue-futex
15 API-requeue-futex
16 API-requeue-pi-wake-futex
17 API-futex-proxy-trylock-atomic
18 API-futex-requeue
22 API-futex-wait-queue-me
[all …]
D.kernel-locking.xml.cmd2 …cumentation/DocBook/kernel-locking.tmpl include/linux/mutex.h kernel/locking/mutex.c kernel/futex.c
/linux-4.4.14/tools/testing/selftests/futex/include/
Dfutextest.h74 #define futex(uaddr, op, val, timeout, uaddr2, val3, opflags) \ macro
84 return futex(uaddr, FUTEX_WAIT, val, timeout, NULL, 0, opflags); in futex_wait()
94 return futex(uaddr, FUTEX_WAKE, nr_wake, NULL, NULL, 0, opflags); in futex_wake()
105 return futex(uaddr, FUTEX_WAIT_BITSET, val, timeout, NULL, bitset, in futex_wait_bitset()
116 return futex(uaddr, FUTEX_WAKE_BITSET, nr_wake, NULL, NULL, bitset, in futex_wake_bitset()
128 return futex(uaddr, FUTEX_LOCK_PI, detect, timeout, NULL, 0, opflags); in futex_lock_pi()
137 return futex(uaddr, FUTEX_UNLOCK_PI, 0, NULL, NULL, 0, opflags); in futex_unlock_pi()
147 return futex(uaddr, FUTEX_WAKE_OP, nr_wake, nr_wake2, uaddr2, wake_op, in futex_wake_op()
163 return futex(uaddr, FUTEX_REQUEUE, nr_wake, nr_requeue, uaddr2, 0, in futex_requeue()
176 return futex(uaddr, FUTEX_CMP_REQUEUE, nr_wake, nr_requeue, uaddr2, in futex_cmp_requeue()
[all …]
/linux-4.4.14/tools/perf/bench/
Dfutex.h35 #define futex(uaddr, op, val, timeout, uaddr2, val3, opflags) \ macro
45 return futex(uaddr, FUTEX_WAIT, val, timeout, NULL, 0, opflags); in futex_wait()
55 return futex(uaddr, FUTEX_WAKE, nr_wake, NULL, NULL, 0, opflags); in futex_wake()
66 return futex(uaddr, FUTEX_LOCK_PI, detect, timeout, NULL, 0, opflags); in futex_lock_pi()
75 return futex(uaddr, FUTEX_UNLOCK_PI, 0, NULL, NULL, 0, opflags); in futex_unlock_pi()
87 return futex(uaddr, FUTEX_CMP_REQUEUE, nr_wake, nr_requeue, uaddr2, in futex_cmp_requeue()
Dfutex-lock-pi.c20 u_int32_t *futex; member
86 ret = futex_lock_pi(w->futex, NULL, 0, futex_flag); in workerfn()
91 w->tid, w->futex, ret); in workerfn()
99 ret = futex_unlock_pi(w->futex, futex_flag); in workerfn()
102 w->tid, w->futex, ret); in workerfn()
120 worker[i].futex = calloc(1, sizeof(u_int32_t)); in create_threads()
121 if (!worker[i].futex) in create_threads()
124 worker[i].futex = &global_futex; in create_threads()
206 worker[i].tid, worker[i].futex, t); in bench_futex_lock_pi()
209 free(worker[i].futex); in bench_futex_lock_pi()
DBuild4 perf-y += futex-hash.o
5 perf-y += futex-wake.o
6 perf-y += futex-wake-parallel.o
7 perf-y += futex-requeue.o
8 perf-y += futex-lock-pi.o
Dfutex-hash.c39 u_int32_t *futex; member
79 ret = futex_wait(&w->futex[i], 1234, NULL, futex_flag); in workerfn()
154 worker[i].futex = calloc(nfutexes, sizeof(*worker[i].futex)); in bench_futex_hash()
155 if (!worker[i].futex) in bench_futex_hash()
199 worker[i].tid, &worker[i].futex[0], t); in bench_futex_hash()
202 worker[i].tid, &worker[i].futex[0], in bench_futex_hash()
203 &worker[i].futex[nfutexes-1], t); in bench_futex_hash()
206 free(worker[i].futex); in bench_futex_hash()
Dfutex-wake-parallel.c32 static u_int32_t futex = 0; variable
63 waker->nwoken = futex_wake(&futex, nwakes, futex_flag); in waking_workerfn()
108 if (futex_wait(&futex, 0, NULL, futex_flag) != EINTR) in blocked_workerfn()
241 &futex, nwaking_threads, nwakes); in bench_futex_wake_parallel()
/linux-4.4.14/Documentation/
Dpi-futex.txt6 - in the user-space fastpath a PI-enabled futex involves no kernel work
63 locks (such as futex-based pthread mutexes) is priority inheritance:
79 normal futex-based locks: a 0 value means unlocked, and a value==TID
84 To handle the slowpath, we have added two new futex ops:
91 remaining work: if there is no futex-queue attached to the futex address
92 yet then the code looks up the task that owns the futex [it has put its
93 own TID into the futex value], and attaches a 'PI state' structure to
94 the futex-queue. The pi_state includes an rt-mutex, which is a PI-aware,
97 futex value. Then this task tries to lock the rt-mutex, on which it
99 futex value to its own TID and returns. Userspace has no other work to
[all …]
Drobust-futexes.txt11 A futex is in essence a user-space address, e.g. a 32-bit lock variable
16 creates a 'futex queue' internally, so that it can later on match up the
18 When the owner thread releases the futex, it notices (via the variable
21 taken and released the lock, the futex is again back to 'uncontended'
23 completely forgets that there ever was a futex at that address. This
38 There is a big conceptual problem with futex based mutexes though: it is
40 the kernel cannot help with the cleanup: if there is no 'futex queue'
47 is needed to release that futex based lock. This is one of the leading
72 are to be cleaned up, because a robust futex might have been registered
73 in another task, and the futex variable might have been simply mmap()-ed
[all …]
Drobust-futex-ABI.txt3 The robust futex ABI
24 waiting on a particular futex, and waking up the next waiter on a
25 particular futex.
78 lock variable used by the futex mechanism, in conjunction with
80 waiting for a lock on a threads exit if that next thread used the futex
83 For each futex lock currently held by a thread, if it wants this
89 that lock using the futex mechanism.
116 existing futex mechanism to wait for, and wakeup, locks. The kernels
121 There may exist thousands of futex lock structures in a threads shared
126 A given futex lock structure in a user shared memory region may be held
[all …]
Dfutex-requeue-pi.txt4 Requeueing of tasks from a non-PI futex to a PI futex requires
55 user space already holding the PI futex. The glibc implementation
104 and pthread_cond_timedwait()) to block on the initial futex and wait
105 to be requeued to a PI-aware futex. The implementation is the
115 PI futex on behalf of the top waiter. If it can, this waiter is
117 nr_wake+nr_requeue tasks to the PI futex, calling
D00-INDEX198 futex-requeue-pi.txt
199 - info on requeueing of tasks from a non-PI futex to a PI futex
358 pi-futex.txt
390 robust-futex-ABI.txt
391 - documentation of the robust futex ABI.
Dunshare.txt279 4) Concurrent execution: Use shared memory segments and futex on
Dnommu-mmap.txt178 be given if an address passed to the futex system call lies outside the
/linux-4.4.14/tools/testing/selftests/futex/
DREADME3 Futex Test is intended to thoroughly test the Linux kernel futex system call
6 Functional tests shall test the documented behavior of the futex operation
54 based on the primary futex operation they test. Eventually this will become a
/linux-4.4.14/tools/perf/scripts/python/bin/
Dfutex-contention-report4 perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/futex-contention.py
/linux-4.4.14/tools/perf/Documentation/
Dperf-bench.txt58 'futex'::
189 SUITES FOR 'futex'
204 Suite for evaluating futex lock_pi calls.
/linux-4.4.14/kernel/
Dfutex.c2337 restart->futex.uaddr = uaddr; in futex_wait()
2338 restart->futex.val = val; in futex_wait()
2339 restart->futex.time = abs_time->tv64; in futex_wait()
2340 restart->futex.bitset = bitset; in futex_wait()
2341 restart->futex.flags = flags | FLAGS_HAS_TIMEOUT; in futex_wait()
2356 u32 __user *uaddr = restart->futex.uaddr; in futex_wait_restart()
2359 if (restart->futex.flags & FLAGS_HAS_TIMEOUT) { in futex_wait_restart()
2360 t.tv64 = restart->futex.time; in futex_wait_restart()
2365 return (long)futex_wait(uaddr, restart->futex.flags, in futex_wait_restart()
2366 restart->futex.val, tp, restart->futex.bitset); in futex_wait_restart()
[all …]
Dfutex_compat.c174 COMPAT_SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, in COMPAT_SYSCALL_DEFINE6() argument
DMakefile38 obj-$(CONFIG_FUTEX) += futex.o
/linux-4.4.14/arch/frv/kernel/
DMakefile22 obj-$(CONFIG_FUTEX) += futex.o
/linux-4.4.14/arch/avr32/include/asm/
DKbuild9 generic-y += futex.h
/linux-4.4.14/arch/um/include/asm/
DKbuild11 generic-y += futex.h
/linux-4.4.14/include/linux/
Dthread_info.h30 } futex; member
/linux-4.4.14/tools/testing/selftests/
DMakefile7 TARGETS += futex
/linux-4.4.14/arch/m68k/include/asm/
DKbuild9 generic-y += futex.h
/linux-4.4.14/arch/cris/include/asm/
DKbuild14 generic-y += futex.h
/linux-4.4.14/arch/blackfin/include/asm/
DKbuild12 generic-y += futex.h
/linux-4.4.14/arch/metag/include/asm/
DKbuild14 generic-y += futex.h
/linux-4.4.14/arch/c6x/include/asm/
DKbuild17 generic-y += futex.h
/linux-4.4.14/arch/unicore32/include/asm/
DKbuild17 generic-y += futex.h
/linux-4.4.14/arch/nios2/include/asm/
DKbuild20 generic-y += futex.h
/linux-4.4.14/arch/openrisc/include/asm/
DKbuild26 generic-y += futex.h
/linux-4.4.14/arch/h8300/include/asm/
DKbuild20 generic-y += futex.h
/linux-4.4.14/Documentation/locking/
Drt-mutex.txt6 (PTHREAD_PRIO_INHERIT). [See Documentation/pi-futex.txt for more details
/linux-4.4.14/arch/parisc/kernel/
Dsyscall_table.S308 ENTRY_COMP(futex) /* 210 */
/linux-4.4.14/arch/powerpc/include/asm/
Dsystbl.h228 COMPAT_SYS_SPU(futex)
/linux-4.4.14/arch/x86/entry/syscalls/
Dsyscall_64.tbl211 202 common futex sys_futex
Dsyscall_32.tbl249 240 i386 futex sys_futex compat_sys_futex
/linux-4.4.14/Documentation/fault-injection/
Dfault-injection.txt20 injects futex deadlock and uaddr fault errors.
/linux-4.4.14/Documentation/vm/
Dtranshuge.txt279 under it, see the futex code to see an example of that, hugetlbfs also
280 needed special handling in futex code for similar reasons).
/linux-4.4.14/include/uapi/linux/
DKbuild135 header-y += futex.h
/linux-4.4.14/arch/arm64/
DKconfig614 In some older versions of glibc [<=2.8] SWP is used during futex
/linux-4.4.14/arch/arm/mm/
DKconfig700 In some older versions of glibc [<=2.8] SWP is used during futex
/linux-4.4.14/Documentation/s390/
DDebugging390.txt271 the mvcos instruction is not available or if a compare-and-swap (futex)
294 - secondary space mode in case of futex atomic operations, so that the
/linux-4.4.14/init/
DKconfig1495 bool "Enable futex support" if EXPERT
/linux-4.4.14/
DCREDITS2188 D: Parport fixes, futex improvements