Deleted Added
full compact
umtx.h (296162) umtx.h (300043)
1/*-
2 * Copyright (c) 2002, Jeffrey Roberson <jeff@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2002, Jeffrey Roberson <jeff@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/sys/umtx.h 296162 2016-02-28 17:52:33Z kib $
26 * $FreeBSD: head/sys/sys/umtx.h 300043 2016-05-17 09:56:22Z kib $
27 *
28 */
29
30#ifndef _SYS_UMTX_H_
31#define _SYS_UMTX_H_
32
33#include <sys/_umtx.h>
34
27 *
28 */
29
30#ifndef _SYS_UMTX_H_
31#define _SYS_UMTX_H_
32
33#include <sys/_umtx.h>
34
35/* Common lock flags */
35#define USYNC_PROCESS_SHARED 0x0001 /* Process shared sync objs */
36
36#define USYNC_PROCESS_SHARED 0x0001 /* Process shared sync objs */
37
37#define UMUTEX_UNOWNED 0x0
38#define UMUTEX_CONTESTED 0x80000000U
39
38/* umutex flags */
40#define UMUTEX_PRIO_INHERIT 0x0004 /* Priority inherited mutex */
41#define UMUTEX_PRIO_PROTECT 0x0008 /* Priority protect mutex */
39#define UMUTEX_PRIO_INHERIT 0x0004 /* Priority inherited mutex */
40#define UMUTEX_PRIO_PROTECT 0x0008 /* Priority protect mutex */
41#define UMUTEX_ROBUST 0x0010 /* Robust mutex */
42#define UMUTEX_NONCONSISTENT 0x0020 /* Robust locked but not consistent */
42
43
44/*
45 * The umutex.m_lock values and bits. The m_owner is the word which
46 * serves as the lock. Its high bit is the contention indicator and
47 * rest of bits records the owner TID. TIDs values start with PID_MAX
48 * + 2 and end by INT32_MAX. The low range [1..PID_MAX] is guaranteed
49 * to be useable as the special markers.
50 */
51#define UMUTEX_UNOWNED 0x0
52#define UMUTEX_CONTESTED 0x80000000U
53#define UMUTEX_RB_OWNERDEAD (UMUTEX_CONTESTED | 0x10)
54#define UMUTEX_RB_NOTRECOV (UMUTEX_CONTESTED | 0x11)
55
43/* urwlock flags */
44#define URWLOCK_PREFER_READER 0x0002
45
46#define URWLOCK_WRITE_OWNER 0x80000000U
47#define URWLOCK_WRITE_WAITERS 0x40000000U
48#define URWLOCK_READ_WAITERS 0x20000000U
49#define URWLOCK_MAX_READERS 0x1fffffffU
50#define URWLOCK_READER_COUNT(c) ((c) & URWLOCK_MAX_READERS)

--- 28 unchanged lines hidden (view full) ---

79#define UMTX_OP_MUTEX_WAKE 18 /* deprecated */
80#define UMTX_OP_SEM_WAIT 19 /* deprecated */
81#define UMTX_OP_SEM_WAKE 20 /* deprecated */
82#define UMTX_OP_NWAKE_PRIVATE 21
83#define UMTX_OP_MUTEX_WAKE2 22
84#define UMTX_OP_SEM2_WAIT 23
85#define UMTX_OP_SEM2_WAKE 24
86#define UMTX_OP_SHM 25
56/* urwlock flags */
57#define URWLOCK_PREFER_READER 0x0002
58
59#define URWLOCK_WRITE_OWNER 0x80000000U
60#define URWLOCK_WRITE_WAITERS 0x40000000U
61#define URWLOCK_READ_WAITERS 0x20000000U
62#define URWLOCK_MAX_READERS 0x1fffffffU
63#define URWLOCK_READER_COUNT(c) ((c) & URWLOCK_MAX_READERS)

--- 28 unchanged lines hidden (view full) ---

92#define UMTX_OP_MUTEX_WAKE 18 /* deprecated */
93#define UMTX_OP_SEM_WAIT 19 /* deprecated */
94#define UMTX_OP_SEM_WAKE 20 /* deprecated */
95#define UMTX_OP_NWAKE_PRIVATE 21
96#define UMTX_OP_MUTEX_WAKE2 22
97#define UMTX_OP_SEM2_WAIT 23
98#define UMTX_OP_SEM2_WAKE 24
99#define UMTX_OP_SHM 25
100#define UMTX_OP_ROBUST_LISTS 26
87
88/* Flags for UMTX_OP_CV_WAIT */
89#define CVWAIT_CHECK_UNPARKING 0x01
90#define CVWAIT_ABSTIME 0x02
91#define CVWAIT_CLOCKID 0x04
92
93#define UMTX_ABSTIME 0x01
94
95#define UMTX_CHECK_UNPARKING CVWAIT_CHECK_UNPARKING
96
97/* Flags for UMTX_OP_SHM */
98#define UMTX_SHM_CREAT 0x0001
99#define UMTX_SHM_LOOKUP 0x0002
100#define UMTX_SHM_DESTROY 0x0004
101#define UMTX_SHM_ALIVE 0x0008
102
101
102/* Flags for UMTX_OP_CV_WAIT */
103#define CVWAIT_CHECK_UNPARKING 0x01
104#define CVWAIT_ABSTIME 0x02
105#define CVWAIT_CLOCKID 0x04
106
107#define UMTX_ABSTIME 0x01
108
109#define UMTX_CHECK_UNPARKING CVWAIT_CHECK_UNPARKING
110
111/* Flags for UMTX_OP_SHM */
112#define UMTX_SHM_CREAT 0x0001
113#define UMTX_SHM_LOOKUP 0x0002
114#define UMTX_SHM_DESTROY 0x0004
115#define UMTX_SHM_ALIVE 0x0008
116
117struct umtx_robust_lists_params {
118 uintptr_t robust_list_offset;
119 uintptr_t robust_priv_list_offset;
120 uintptr_t robust_inact_offset;
121};
122
103#ifndef _KERNEL
104
105int _umtx_op(void *obj, int op, u_long val, void *uaddr, void *uaddr2);
106
107#else
108
109/*
110 * The umtx_key structure is used by both the Linux futex code and the

--- 6 unchanged lines hidden (view full) ---

117 TYPE_SEM,
118 TYPE_SIMPLE_LOCK,
119 TYPE_NORMAL_UMUTEX,
120 TYPE_PI_UMUTEX,
121 TYPE_PP_UMUTEX,
122 TYPE_RWLOCK,
123 TYPE_FUTEX,
124 TYPE_SHM,
123#ifndef _KERNEL
124
125int _umtx_op(void *obj, int op, u_long val, void *uaddr, void *uaddr2);
126
127#else
128
129/*
130 * The umtx_key structure is used by both the Linux futex code and the

--- 6 unchanged lines hidden (view full) ---

137 TYPE_SEM,
138 TYPE_SIMPLE_LOCK,
139 TYPE_NORMAL_UMUTEX,
140 TYPE_PI_UMUTEX,
141 TYPE_PP_UMUTEX,
142 TYPE_RWLOCK,
143 TYPE_FUTEX,
144 TYPE_SHM,
145 TYPE_PI_ROBUST_UMUTEX,
146 TYPE_PP_ROBUST_UMUTEX,
125};
126
127/* Key to represent a unique userland synchronous object */
128struct umtx_key {
129 int hash;
130 int type;
131 int shared;
132 union {

--- 42 unchanged lines hidden ---
147};
148
149/* Key to represent a unique userland synchronous object */
150struct umtx_key {
151 int hash;
152 int type;
153 int shared;
154 union {

--- 42 unchanged lines hidden ---