CK_PR_NOT(3)
β¨ ck_pr_not(3) β the atomic complement glow-up β¨
okay bestie, gather round, because we're talking about ck_pr_not π
β well, technically the whole ck_pr_not family, which is a lil squad of nine functions: ck_pr_not_ptr, ck_pr_not_double, ck_pr_not_char, ck_pr_not_uint, ck_pr_not_int, ck_pr_not_64, ck_pr_not_32, ck_pr_not_16, and ck_pr_not_8. they do atomic complement operations. that's the whole vibe. that's the whole girl. π
πΈ LIBRARY πΈ
she lives in Concurrency Kit, aka libck, and you link her with -lck. periodt. π«Ά
β¨ SYNOPSIS β¨
first things first, you gotta let her in:
#include <ck_pr.h>
then pick your fighter, one signature at a time:
void
ck_pr_not_ptr(void *target);
void
ck_pr_not_double(double *target);
void
ck_pr_not_char(char *target);
void
ck_pr_not_uint(unsigned int *target);
void
ck_pr_not_int(int *target);
void
ck_pr_not_64(uint64_t *target);
void
ck_pr_not_32(uint32_t *target);
void
ck_pr_not_16(uint16_t *target);
void
ck_pr_not_8(uint8_t *target);
like, nine whole entry points, one for every type you could possibly be obsessed with. π₯
π DESCRIPTION π
so the ck_pr_not(3) family of functions atomically complement the value pointed to by target.
that's it. that's the tea. π
"complement" meaning the bitwise flip β the ~ energy β and "atomically" meaning nobody can sneak in halfway through and catch it looking messy. the whole flip lands as one single, unbothered, iconic operation. no torn reads, no half-flipped chaos. main character energy only. π
π¦ RETURN VALUES π¦
these functions have no return value. they're void. they give you nothing back because they already gave you everything. π (respectfully!!)
π SEE ALSO π
go read these next, i promise they're all bangers:
ck_pr_fence_load(3)ck_pr_fence_load_depends(3)ck_pr_fence_store(3)ck_pr_fence_memory(3)ck_pr_load(3)ck_pr_store(3)ck_pr_fas(3)ck_pr_faa(3)ck_pr_inc(3)ck_pr_not(3)ck_pr_neg(3)ck_pr_add(3)ck_pr_sub(3)ck_pr_and(3)ck_pr_or(3)ck_pr_xor(3)ck_pr_cas(3)ck_pr_btc(3)ck_pr_bts(3)ck_pr_btr(3)
and if you want even more lore, additional information is available at http://concurrencykit.org/ π
not me writing a whole love letter to a bitwise NOT. anyway. iykyk. π§
okay bye bestie, this page was dated April 7, 2013 and it's filed under ck_pr_not(3) β catch you in the next manpage, mwah ππΈπ
π¦ where this page comes from
- alpine 3.24: ck-doc 0.7.2-r1 Β· BSD-2-Clause AND Apache-2.0
- debian bookworm: libck-dev 0.7.1-10 Β· BSD-2-Clause
- debian trixie: libck-dev 0.7.2-6 Β· BSD-2-Clause
- epel 10: ck-devel 0.7.2-1.el10_1 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- epel 9: ck-devel 0.7.0-10.el9 Β· BSD
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- nixos 26.05: ck 0.7.2
- nixpkgs unstable: ck 0.7.2
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- ubuntu jammy: libck-dev 0.7.1-6ubuntu2 Β· BSD-2-Clause
- ubuntu noble: libck-dev 0.7.1-13build1 Β· BSD-2-Clause
- ubuntu questing: libck-dev 0.7.2-5ubuntu1
- ubuntu resolute: libck-dev 0.7.2-5ubuntu2 Β· BSD-2-Clause
- ubuntu stonking: libck-dev 0.7.2-11 Β· BSD-2-Clause
- Copyright 2013 Samy Al Bahra
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms