Sign in
cos
/
third_party
/
kernel
/
6c339f37f1cd9b910f4c04b14079b1663b685c4d
/
.
/
scripts
/
atomic
/
fallbacks
/
dec_unless_positive
blob: dcab6848ca1e5a2535c0a144cf7cb4af4d8a3e52 [
file
]
cat
<<
EOF
static
__always_inline
bool
$
{
arch
}
$
{
atomic
}
_dec_unless_positive
(
$
{
atomic
}
_t
*
v
)
{
$
{
int
}
c
=
$
{
arch
}
$
{
atomic
}
_read
(
v
);
do
{
if
(
unlikely
(
c
>
0
))
return
false
;
}
while
(!
$
{
arch
}
$
{
atomic
}
_try_cmpxchg
(
v
,
&
c
,
c
-
1
));
return
true
;
}
EOF