CK_PR_BTS(3)
π CK_PR_BTS π
okay bestie, welcome to the ck_pr_bts(3) page β that's the manual name, and yes it's from Concurrency Kit, the libck girlies' fave. it's giving atomic bit test-and-set, and it ATE. no cap. β¨
πΈ NAME πΈ
ck_pr_bts_ptr, ck_pr_bts_uint, ck_pr_bts_int, ck_pr_bts_64, ck_pr_bts_32, ck_pr_bts_16 β atomic bit test-and-set operations π
π LIBRARY π
Concurrency Kit (libck, -lck) β literally the whole squad lives here π«Ά
β¨ SYNOPSIS β¨
#include <ck_pr.h>
bool
ck_pr_bts_ptr(void *target, unsigned int bit_index);
bool
ck_pr_bts_uint(uint *target, unsigned int bit_index);
bool
ck_pr_bts_int(int *target, unsigned int bit_index);
bool
ck_pr_bts_64(uint64_t *target, unsigned int bit_index);
bool
ck_pr_bts_32(uint32_t *target, unsigned int bit_index);
bool
ck_pr_bts_16(uint16_t *target, unsigned int bit_index);
likeβ¦ pick your fighter. one for every width, and they all do the same slay move π
π¦ DESCRIPTION π¦
so the ck_pr_bts(3) family of functions atomically fetches the value of the bit in target at index bit_index, and then sets that bit to 1. π₯
that's it. that's the whole vibe. read the bit, flip it to 1, and do it atomically so nobody else can sneak in mid-move. main character energy, fr fr.
π RETURN VALUES π
this family of functions returns the original value of the bit at offset bit_index that is in the value pointed to by target.
ngl that's the important part β you get the before, not the after. it's a glow-up reveal, not a spoiler. π
lowkey reminder: the return is the bit as it was before the set, so don't @ me if you expected the new value 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_sub(3)ck_pr_and(3)ck_pr_or(3)ck_pr_xor(3)ck_pr_add(3)ck_pr_btc(3)ck_pr_btr(3)ck_pr_cas(3)
additional information available at http://concurrencykit.org/ π go click it, bestie, it's iconic
k bye, mwah π this page was dated April 11, 2013 and it's still serving ck_pr_bts(3) realness to this very day. obsessed. πβ¨ππ¦πΈπ
π«Ά
π¦ 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