/linux-4.4.14/Documentation/DocBook/ |
D | kernel-locking.xml.db | 9 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.cmd | 2 …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/ |
D | futextest.h | 74 #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/ |
D | futex.h | 35 #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()
|
D | futex-lock-pi.c | 20 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()
|
D | Build | 4 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
|
D | futex-hash.c | 39 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()
|
D | futex-wake-parallel.c | 32 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/ |
D | pi-futex.txt | 6 - 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 …]
|
D | robust-futexes.txt | 11 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 …]
|
D | robust-futex-ABI.txt | 3 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 …]
|
D | futex-requeue-pi.txt | 4 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
|
D | 00-INDEX | 198 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.
|
D | unshare.txt | 279 4) Concurrent execution: Use shared memory segments and futex on
|
D | nommu-mmap.txt | 178 be given if an address passed to the futex system call lies outside the
|
/linux-4.4.14/tools/testing/selftests/futex/ |
D | README | 3 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/ |
D | futex-contention-report | 4 perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/futex-contention.py
|
/linux-4.4.14/tools/perf/Documentation/ |
D | perf-bench.txt | 58 'futex':: 189 SUITES FOR 'futex' 204 Suite for evaluating futex lock_pi calls.
|
/linux-4.4.14/kernel/ |
D | futex.c | 2337 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 …]
|
D | futex_compat.c | 174 COMPAT_SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, in COMPAT_SYSCALL_DEFINE6() argument
|
D | Makefile | 38 obj-$(CONFIG_FUTEX) += futex.o
|
/linux-4.4.14/arch/frv/kernel/ |
D | Makefile | 22 obj-$(CONFIG_FUTEX) += futex.o
|
/linux-4.4.14/arch/avr32/include/asm/ |
D | Kbuild | 9 generic-y += futex.h
|
/linux-4.4.14/arch/um/include/asm/ |
D | Kbuild | 11 generic-y += futex.h
|
/linux-4.4.14/include/linux/ |
D | thread_info.h | 30 } futex; member
|
/linux-4.4.14/tools/testing/selftests/ |
D | Makefile | 7 TARGETS += futex
|
/linux-4.4.14/arch/m68k/include/asm/ |
D | Kbuild | 9 generic-y += futex.h
|
/linux-4.4.14/arch/cris/include/asm/ |
D | Kbuild | 14 generic-y += futex.h
|
/linux-4.4.14/arch/blackfin/include/asm/ |
D | Kbuild | 12 generic-y += futex.h
|
/linux-4.4.14/arch/metag/include/asm/ |
D | Kbuild | 14 generic-y += futex.h
|
/linux-4.4.14/arch/c6x/include/asm/ |
D | Kbuild | 17 generic-y += futex.h
|
/linux-4.4.14/arch/unicore32/include/asm/ |
D | Kbuild | 17 generic-y += futex.h
|
/linux-4.4.14/arch/nios2/include/asm/ |
D | Kbuild | 20 generic-y += futex.h
|
/linux-4.4.14/arch/openrisc/include/asm/ |
D | Kbuild | 26 generic-y += futex.h
|
/linux-4.4.14/arch/h8300/include/asm/ |
D | Kbuild | 20 generic-y += futex.h
|
/linux-4.4.14/Documentation/locking/ |
D | rt-mutex.txt | 6 (PTHREAD_PRIO_INHERIT). [See Documentation/pi-futex.txt for more details
|
/linux-4.4.14/arch/parisc/kernel/ |
D | syscall_table.S | 308 ENTRY_COMP(futex) /* 210 */
|
/linux-4.4.14/arch/powerpc/include/asm/ |
D | systbl.h | 228 COMPAT_SYS_SPU(futex)
|
/linux-4.4.14/arch/x86/entry/syscalls/ |
D | syscall_64.tbl | 211 202 common futex sys_futex
|
D | syscall_32.tbl | 249 240 i386 futex sys_futex compat_sys_futex
|
/linux-4.4.14/Documentation/fault-injection/ |
D | fault-injection.txt | 20 injects futex deadlock and uaddr fault errors.
|
/linux-4.4.14/Documentation/vm/ |
D | transhuge.txt | 279 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/ |
D | Kbuild | 135 header-y += futex.h
|
/linux-4.4.14/arch/arm64/ |
D | Kconfig | 614 In some older versions of glibc [<=2.8] SWP is used during futex
|
/linux-4.4.14/arch/arm/mm/ |
D | Kconfig | 700 In some older versions of glibc [<=2.8] SWP is used during futex
|
/linux-4.4.14/Documentation/s390/ |
D | Debugging390.txt | 271 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/ |
D | Kconfig | 1495 bool "Enable futex support" if EXPERT
|
/linux-4.4.14/ |
D | CREDITS | 2188 D: Parport fixes, futex improvements
|