/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_FUTEX_H #define _LINUX_FUTEX_H #include <linux/ktime.h> #include <uapi/linux/futex.h> struct inode; struct mm_struct; struct task_struct; long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout, u32 __user *uaddr2, u32 val2, u32 val3); extern int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi); /* * Futexes are matched on equal values of this key. * The key type depends on whether it's a shared or private mapping. * Don't rearrange members without looking at hash_futex(). * * offset is aligned to a multiple of sizeof(u32) (== 4) by definition. * We use the two low order bits of offset to tell what is the kind of key : * 00 : Private process futex (PTHREAD_PROCESS_PRIVATE) * (no reference on an inode or mm) * 01 : Shared futex (PTHREAD_PROCESS_SHARED) * mapped on a file (reference on the underlying inode) * 10 : Shared futex (PTHREAD_PROCESS_SHARED) * (but private mapping on an mm, and reference taken on it) */ #define FUT_OFF_INODE 1 /* We set bit 0 if key has a reference on inode */ #define FUT_OFF_MMSHARED 2 /* We set bit 1 if key has a reference on mm */ union futex_key { struct { unsigned long pgoff; struct inode *inode; int offset; } shared; struct { unsigned long address; struct mm_struct *mm; int offset; } private; struct { unsigned long word; void *ptr; int offset; } both; }; #define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = NULL } } #ifdef CONFIG_FUTEX extern void exit_robust_list(struct task_struct *curr); #ifdef CONFIG_HAVE_FUTEX_CMPXCHG #define futex_cmpxchg_enabled 1 #else extern int futex_cmpxchg_enabled; #endif #else
static inline void exit_robust_list(struct task_struct *curr) { }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Ingo Molnar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Ingo Molnar | 11 | 100.00% | 2 | 100.00% |
Total | 11 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Ingo Molnar | 68 | 31.92% | 5 | 25.00% |
Rusty Russell | 61 | 28.64% | 2 | 10.00% |
Andrew Morton | 19 | 8.92% | 2 | 10.00% |
Nico Pitre | 17 | 7.98% | 1 | 5.00% |
Eric Dumazet | 11 | 5.16% | 1 | 5.00% |
Heiko Carstens | 11 | 5.16% | 1 | 5.00% |
Mike Frysinger | 9 | 4.23% | 1 | 5.00% |
Thomas Gleixner | 8 | 3.76% | 2 | 10.00% |
Peter Zijlstra | 4 | 1.88% | 1 | 5.00% |
David Woodhouse | 2 | 0.94% | 1 | 5.00% |
Pierre Peiffer | 1 | 0.47% | 1 | 5.00% |
David Howells | 1 | 0.47% | 1 | 5.00% |
Greg Kroah-Hartman | 1 | 0.47% | 1 | 5.00% |
Total | 213 | 100.00% | 20 | 100.00% |