Blame view
include/linux/futex.h
1.85 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 |
#ifndef _LINUX_FUTEX_H #define _LINUX_FUTEX_H |
2456e8553 ktime: Get rid of... |
3 |
#include <linux/ktime.h> |
607ca46e9 UAPI: (Scripted) ... |
4 |
#include <uapi/linux/futex.h> |
0771dfefc [PATCH] lightweig... |
5 |
|
9064a6787 linux/futex.h: pl... |
6 7 8 |
struct inode; struct mm_struct; struct task_struct; |
9064a6787 linux/futex.h: pl... |
9 |
|
2456e8553 ktime: Get rid of... |
10 |
long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout, |
e2970f2fb [PATCH] pi-futex:... |
11 |
u32 __user *uaddr2, u32 val2, u32 val3); |
1da177e4c Linux-2.6.12-rc2 |
12 |
|
e3f2ddeac [PATCH] pi-futex:... |
13 14 |
extern int handle_futex_death(u32 __user *uaddr, struct task_struct *curr, int pi); |
0771dfefc [PATCH] lightweig... |
15 |
|
9adef58b1 futex: get_futex_... |
16 17 18 19 20 21 |
/* * 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. |
34f01cc1f FUTEX: new PRIVAT... |
22 23 24 25 26 27 28 29 30 31 32 |
* 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 */ |
9adef58b1 futex: get_futex_... |
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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; }; |
9adef58b1 futex: get_futex_... |
50 |
|
38d47c1b7 futex: rely on ge... |
51 |
#define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = NULL } } |
0771dfefc [PATCH] lightweig... |
52 53 |
#ifdef CONFIG_FUTEX extern void exit_robust_list(struct task_struct *curr); |
c87e2837b [PATCH] pi-futex:... |
54 |
extern void exit_pi_state_list(struct task_struct *curr); |
03b8c7b62 futex: Allow arch... |
55 56 57 |
#ifdef CONFIG_HAVE_FUTEX_CMPXCHG #define futex_cmpxchg_enabled 1 #else |
a0c1e9073 futex: runtime en... |
58 |
extern int futex_cmpxchg_enabled; |
03b8c7b62 futex: Allow arch... |
59 |
#endif |
0771dfefc [PATCH] lightweig... |
60 61 62 63 |
#else static inline void exit_robust_list(struct task_struct *curr) { } |
c87e2837b [PATCH] pi-futex:... |
64 65 66 |
static inline void exit_pi_state_list(struct task_struct *curr) { } |
0771dfefc [PATCH] lightweig... |
67 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
68 |
#endif |