---
name: "ck_pr_neg"
section: "3"
platform: "linux"
package: "libck-dev"
version: "0.7.2-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ck_pr_neg"
---

# ck\_pr\_neg(3)

atomic negation operations

## NAME

**ck\_pr\_neg\_ptr**, **ck\_pr\_neg\_ptr\_zero**, **ck\_pr\_neg\_double**, **ck\_pr\_neg\_double\_zero**, **ck\_pr\_neg\_char**, **ck\_pr\_neg\_char\_zero**, **ck\_pr\_neg\_uint**, **ck\_pr\_neg\_uint\_zero**, **ck\_pr\_neg\_int**, **ck\_pr\_neg\_int\_zero**, **ck\_pr\_neg\_64**, **ck\_pr\_neg\_64\_zero**, **ck\_pr\_neg\_32**, **ck\_pr\_neg\_32\_zero**, **ck\_pr\_neg\_16**, **ck\_pr\_neg\_16\_zero**, **ck\_pr\_neg\_8**, **ck\_pr\_neg\_8\_zero** – atomic negation operations

## LIBRARY

Concurrency Kit (libck, -lck)

## SYNOPSIS

**#include \<ck\_pr.h\>**

*void*\

**ck\_pr\_neg\_ptr**(*void \*target*);

*void*\

**ck\_pr\_neg\_ptr\_zero**(*void \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_double**(*double \*target*);

*void*\

**ck\_pr\_neg\_double\_zero**(*double \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_char**(*char \*target*);

*void*\

**ck\_pr\_neg\_char\_zero**(*char \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_uint**(*unsigned int \*target*);

*void*\

**ck\_pr\_neg\_uint\_zero**(*unsigned int \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_int**(*int \*target*);

*void*\

**ck\_pr\_neg\_int\_zero**(*int \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_64**(*uint64\_t \*target*);

*void*\

**ck\_pr\_neg\_64\_zero**(*uint64\_t \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_32**(*uint32\_t \*target*);

*void*\

**ck\_pr\_neg\_32\_zero**(*uint32\_t \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_16**(*uint16\_t \*target*);

*void*\

**ck\_pr\_neg\_16\_zero**(*uint16\_t \*target*, *bool \*z*);

*void*\

**ck\_pr\_neg\_8**(*uint8\_t \*target*);

*void*\

**ck\_pr\_neg\_8\_zero**(*uint8\_t \*target*, *bool \*z*);

## DESCRIPTION

The **ck\_pr\_neg**(*3*) family of functions atomically negate the value pointed to by *target*.

## RETURN VALUES

The ck\_pr\_neg\_zero functions set the value pointed to by *z* if the result of the negation operation was 0. They set the pointed to value to false otherwise.

## SEE ALSO

[ck\_pr\_fence\_load(3)](/ck_pr_fence_load/3.md), [ck\_pr\_fence\_load\_depends(3)](/ck_pr_fence_load_depends/3.md), [ck\_pr\_fence\_store(3)](/ck_pr_fence_store/3.md), [ck\_pr\_fence\_memory(3)](/ck_pr_fence_memory/3.md), [ck\_pr\_load(3)](/ck_pr_load/3.md), [ck\_pr\_store(3)](/ck_pr_store/3.md), [ck\_pr\_fas(3)](/ck_pr_fas/3.md), [ck\_pr\_faa(3)](/ck_pr_faa/3.md), [ck\_pr\_inc(3)](/ck_pr_inc/3.md), [ck\_pr\_dec(3)](/ck_pr_dec/3.md), [ck\_pr\_not(3)](/ck_pr_not/3.md), [ck\_pr\_add(3)](/ck_pr_add/3.md), [ck\_pr\_sub(3)](/ck_pr_sub/3.md), [ck\_pr\_and(3)](/ck_pr_and/3.md), [ck\_pr\_or(3)](/ck_pr_or/3.md), [ck\_pr\_xor(3)](/ck_pr_xor/3.md), [ck\_pr\_cas(3)](/ck_pr_cas/3.md), [ck\_pr\_btc(3)](/ck_pr_btc/3.md), [ck\_pr\_bts(3)](/ck_pr_bts/3.md), [ck\_pr\_btr(3)](/ck_pr_btr/3.md)

Additional information available at http://concurrencykit.org/
