CK_PR_AND(3)
β¨ ck_pr_and β atomic bitwise-and operations β¨
okay bestie, gather round π so like, this is the manual for ck_pr_and(3), which lives in the Concurrency Kit library. it's a whole family of lil functions β ck_pr_and_ptr, ck_pr_and_char, ck_pr_and_uint, ck_pr_and_int, ck_pr_and_64, ck_pr_and_32, ck_pr_and_16, and ck_pr_and_8 β and they all do the same iconic thing: atomic bitwise-and. no cap. π₯
π LIBRARY
Concurrency Kit (that's libck, and you link it with -lck π«Ά)
πΈ SYNOPSIS πΈ
#include <ck_pr.h>
void
ck_pr_and_ptr(void *target, uintptr_t delta);
void
ck_pr_and_char(char *target, char delta);
void
ck_pr_and_uint(unsigned int *target, unsigned int delta);
void
ck_pr_and_int(int *target, int delta);
void
ck_pr_and_64(uint64_t *target, uint64_t delta);
void
ck_pr_and_32(uint32_t *target, uint32_t delta);
void
ck_pr_and_16(uint16_t *target, uint16_t delta);
void
ck_pr_and_8(uint8_t *target, uint8_t delta);
like, yes, there are eight of them and they're all basically siblings π one per type, so you never have to think about widths. pick your type, pick your function, go.
π« DESCRIPTION π«
so here's the vibe: the ck_pr_and(3) family of functions atomically compute and store the result of a bitwise-and of the value pointed to by target and delta into the value pointed to by target.
okay let me say that again but slower because it's lowkey the whole point: it takes what's at target, ANDs it with delta, and writes the answer back into target. and it does all of that atomically β no other thread can peek at a half-finished in-between state. it's giving main character energy, honestly. π
target is the pointer to the value getting ANDed and overwritten. delta is the value you're ANDing with it. that's it. that's the whole function. π
π¦ RETURN VALUES π¦
ngl, this family of functions does not have a return value. it returns nothing. void. empty. it just does the thing and leaves. π (the side effect is the whole personality, bestie.)
π SEE ALSO
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_dec(3)ck_pr_neg(3)ck_pr_not(3)ck_pr_add(3)ck_pr_sub(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)
more lore is available at http://concurrencykit.org/ if you wanna go read the whole cinematic universe π
and that's the page, bestie π₯Ή this one was dated April 11, 2013 and it's the ck_pr_and(3) manual from Concurrency Kit β tysm for reading, go AND some bits atomically, you're gonna slay πβ¨π«Ά
π¦ 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