CK_PR_XOR(3)
β¨ CK_PR_XOR(3) β¨
okay bestie, pull up a chair, we're talking about ck_pr_xor from the Concurrency Kit manual, section 3. it's giving "atomic bitwise-xor operations" and honestly? iconic. no cap. π
πΈ NAME πΈ
ck_pr_xor_ptr, ck_pr_xor_char, ck_pr_xor_uint, ck_pr_xor_int, ck_pr_xor_64, ck_pr_xor_32, ck_pr_xor_16, ck_pr_xor_8 β atomic bitwise-xor operations π¦β¨
like. the whole squad. eight little functions all doing the xor thing but for different types. main character energy fr fr.
π LIBRARY π
Concurrency Kit (that's libck, you link it with -lck) π«Ά
π SYNOPSIS π
#include <ck_pr.h>
void
ck_pr_xor_ptr(void *target, uintptr_t delta);
void
ck_pr_xor_char(char *target, char delta);
void
ck_pr_xor_uint(unsigned int *target, unsigned int delta);
void
ck_pr_xor_int(int *target, int delta);
void
ck_pr_xor_64(uint64_t *target, uint64_t delta);
void
ck_pr_xor_32(uint32_t *target, uint32_t delta);
void
ck_pr_xor_16(uint16_t *target, uint16_t delta);
void
ck_pr_xor_8(uint8_t *target, uint8_t delta);
look at them. a whole lineup. one for every size you could possibly need, bestie. _ptr, _char, _uint, _int, then the number crew: _64, _32, _16, _8. pick your fighter. π
β¨ DESCRIPTION β¨
so here's the tea. π΅
the ck_pr_xor(3) family of functions atomically compute and store the result of a bitwise-xor of the value pointed to by target and delta into the value pointed to by target.
read that again, because the key word is atomically π β you're not doing read-modify-write by hand and praying no other thread body-checks your value in between. it's one atomic op. it just happens. and the result lands right back in target, where it started. it's giving "in and out, twenty minute adventure". π¦
π RETURN VALUES π
this family of functions does not have a return value.
nothing. void. zero. it's not returning your texts, bestie π it just does the xor and dips. π
π SEE ALSO π
the whole extended universe, no gatekeeping:
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_and(3)ck_pr_cas(3)ck_pr_btc(3)ck_pr_bts(3)ck_pr_btr(3)
Additional information available at http://concurrencykit.org/ π
okay and that's the whole page, bestie. this one's from April 11, 2013 and it's page ck_pr_xor(3) β go forth and xor atomically, you absolute legend. 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