1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_FUTEX_H_
6#define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_FUTEX_H_
7
8#if !defined(__native_client_nonsfi__)
9#include <linux/futex.h>
10#endif  // !defined(__native_client_nonsfi__)
11
12#if !defined(FUTEX_WAIT)
13#define FUTEX_WAIT 0
14#endif
15
16#if !defined(FUTEX_WAKE)
17#define FUTEX_WAKE 1
18#endif
19
20#if !defined(FUTEX_FD)
21#define FUTEX_FD 2
22#endif
23
24#if !defined(FUTEX_REQUEUE)
25#define FUTEX_REQUEUE 3
26#endif
27
28#if !defined(FUTEX_CMP_REQUEUE)
29#define FUTEX_CMP_REQUEUE 4
30#endif
31
32#if !defined(FUTEX_WAKE_OP)
33#define FUTEX_WAKE_OP 5
34#endif
35
36#if !defined(FUTEX_LOCK_PI)
37#define FUTEX_LOCK_PI 6
38#endif
39
40#if !defined(FUTEX_UNLOCK_PI)
41#define FUTEX_UNLOCK_PI 7
42#endif
43
44#if !defined(FUTEX_TRYLOCK_PI)
45#define FUTEX_TRYLOCK_PI 8
46#endif
47
48#if !defined(FUTEX_WAIT_BITSET)
49#define FUTEX_WAIT_BITSET 9
50#endif
51
52#if !defined(FUTEX_WAKE_BITSET)
53#define FUTEX_WAKE_BITSET 10
54#endif
55
56#if !defined(FUTEX_WAIT_REQUEUE_PI)
57#define FUTEX_WAIT_REQUEUE_PI 11
58#endif
59
60#if !defined(FUTEX_CMP_REQUEUE_PI)
61#define FUTEX_CMP_REQUEUE_PI 12
62#endif
63
64#if !defined(FUTEX_PRIVATE_FLAG)
65#define FUTEX_PRIVATE_FLAG 128
66#endif
67
68#if !defined FUTEX_CLOCK_REALTIME
69#define FUTEX_CLOCK_REALTIME 256
70#endif
71
72#if !defined(FUTEX_CMD_MASK)
73#define FUTEX_CMD_MASK ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
74#endif
75
76#if !defined(FUTEX_CMP_REQUEUE_PI_PRIVATE)
77#define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
78#endif
79
80#if !defined(FUTEX_UNLOCK_PI_PRIVATE)
81#define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG)
82#endif
83
84#endif  // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_FUTEX_H_
85